At Vie Financial, we understand that every business – and every purchase – is unique. We work to understand your business, working directly with your Accountant to ensure we cover every contingency and then based on our expertise determine which financier is suited to provide the finance based on your business and the type of plant and machinery you are purchasing.
We pride ourselves in having access to competitive finance for transport, construction/building, manufacturing, earthmoving, logging, mining and many other related service industries. We can also assist with vehicle finance for employees who use their own vehicle predominantly for work purposes.
Whether you're looking to refinance an existing plant or replace an old plant with brand new equipment and machinery, Vie Financial has access to a vast variety of loan options.
From equipment hire purchases to flexible and affordable chattel mortgages, we have a lending solution for you.
We can also help find the best deals for your business and the lowest possible commercial lease financing rates. From operating leases to finances leases, you can choose from several lease solutions tailored to your business needs.
Vie Financial helps businesses in the heavy industry, manufacturing, and mining finance commercial enterprise business machinery, industrial energy machinery, rail and aviation plants, materials handling equipment, and more.
We help find tailored loans and leases for plants and all types of heavy machinery, working with you to select the right financing product to help your business.
Our diverse network of lenders gives you more flexibility and savings opportunities.
Commercial Hire Purchase – With commercial hire purchase, the finance provider purchases the machinery or equipment on the business's behalf. The company then "hires" the equipment from the finance provider at a fixed monthly repayment over an agreed upon period.
Chattel Mortgage – A chattel mortgage provides direct financing, allowing a business or operator to take ownership of equipment as soon as possible.
Finance Lease – A finance lease acts as a commercial loan and involves the purchase of goods for business purposes only.
Sale/Hire Back – A sale/hire back is established after you have purchased the equipment. It can take the form of a lease, commercial hire purchase, or a chattel mortgage.
Novated Lease – A novated lease is similar to commercial hire purchase. With a novated lease, the finance provider purchases the equipment on the business's behalf, then the company "hires" the machine at a fixed monthly repayment over an agreed upon period.
Operating Lease – An operating lease is often used to fund computer hardware, printing equipment, telephony, and other technologies.
Fully Maintained Lease – This type of financing option allows you to bundle all work vehicle expenses, such as fuel and maintenance, into a single affordable monthly payment.
Operating Leases are designed for industries needing to keep their plants and machinery up-to-date. An operating lease effectively serves as a rental lease, providing a heavy industry business with access to current equipment whenever old equipment breaks down or wears out.
Instead of a liability, accountants view operating leases as part of operating costs. Some lenders have exchange programmes in place to minimise costs.
Plants and machinery are significant expenses that can cost upwards of seven figures or more. Many lenders offer a redraw facility or business overdraft to finance plant machinery and industrial equipment.
However, some lenders charge fees for redrawing on a loan, so you should discuss this option with a financial consultant to see whether or not the benefits of redrawing are higher than the costs.
Should I buy new or used plant machinery or equipment?
Heavy industrial machinery can be quite an expense and significantly add to the initial setup costs of a business.
While depreciation will occur, it will happen at a slower rate than older plant or machinery. However, an older plant or machinery can cost substantially less and serve just as well if properly maintained.
Leasing vs. Buying – Which is right for me?
When it comes to plant and machinery financing, a business must examine its priorities.
If a plant is needed for a one-off project or another short-term use, then leasing may be a cost-effective, cash flow positive solution.
However, if you need equipment long term and its depreciation is measured in decades rather than a few years or months, buying is generally the best option.
Not only can you control a performing asset and resell the machinery for a profit over time, but it can be leased to others for a fee as well.
No registered mortgage debentures or additional property security required.


Cartels can significantly reduce governments' ability to ensure best value for procurement spending, and this failure to use tax dollars to their maximum efficiency negatively impacts national economies. Deterring and detecting cartels in public investment is an important way to ensure economic growth, job creation and broad-based prosperity.
Please let us know of any errors or omissions in the Agenda.


text:
Home BJP Congress. currentaffairs currentaffairs 2019 EVM GK gktoday India Lok Sabha 2019 magazine news Opposition thehindu EVM Controversy- All you need to know!
EVM Controversy- All you need to know!
BJP, Congress., currentaffairs, currentaffairs 2019, EVM, GK, gktoday, India, Lok Sabha 2019, magazine, news, Opposition, thehindu,
Since the introduction of Electronic Voting Machines, there are various controversies which came into limelight with time.
Political party, when they lost the elections often blamed the Electronic Voting Machines for defeat.
source: the hindu
What is an EVM?
EVMs or electronic voting machines provides the voter with a button for each choice which is connected by a cable to an electronic ballot box.
Earlier elections used to happen through ballet paper. The paper used to have the name of candidates and the symbol of their party in front of them. However, EVM has machine format of ballot paper, and it saves the votes in electronic form.
An EVM consists of two units–control unit and balloting unit–and these two are connected by a five-meter cable. When a voter presses a button against the candidate, he/she wishes to vote for, the machine locks itself. This EVM can be opened only with a new ballot number. This way, EVMs ensure that one person gets to vote only once.
The use of EVM started back in 1982 Kerala Assembly elections. Prior to this only ballot papers and ballot boxes were allowed.
What is VVPAT?
Voter verifiable paper audit trail (VVPAT) or verifiable paper record (VPR) is a method of providing feedback to voters using a ballot less voting system. A VVPAT allows voters the possibility to verify that their votes are cast as intended and can serve as an additional barrier to changing or destroying votes.
You can get Seeker's Digital Magazine for RS 85 Only- Yearly Subscription
Why is EVM so controversial?
Since the introduction of EVM, some of the political leaders made huge cry of cheating and even some of them wanted the method to be changed to ballot system.
In the end of 2018, the Opposition parties are set to send a joint memorandum to the Election Commission demanding that the machines should be replaced at the earliest with ballot paper.
The parties, in a draft memorandum circulated among the signatories, demanded that a physical counter check of the paper trail and matching it with electronic vote should happen mandatorily in at least 50% of all EVMs.
It is an implement able reform without any additional cost, they argued.
They also demanded that in case the difference of votes cast in favour of the winning candidates and the one coming second is less than five %, then there should be mandatory counting of the Voter Verifiable Paper Audit Trail (VVPAT) in every polling station of that constituency.
Not only that while Lok Sabha election were being held during May 2019, just before one or two days before the result was about to declare, the opposition leaders demanded that there should be 100 % verification of the entire assembly segment. In case, a mismatch is found during the random check.
The demand was raised by 22 leaders of Opposition parties.
The opposition leaders even demanded that the VVPATs should be counted in five polling booths per Assembly segment before the counting of votes.
In case of any discrepancy is in VVPAT verification, 100% counting of the slips at all polling stations be done in that particular segment.
However, the Election Commission rejected the demand of Opposition parties for tallying of the Voter Verified Paper Audit Trail (VVPAT) slips in five polling booths in each Assembly segment with the electronic voting machines (EVMs) prior to the counting of votes.
The Commission took up the matter in his meeting and after deliberations, decided to reject the demands.
Why EVMs are in controversy?
The only way an EVM can be tampered with is by physically opening it up and replacing the chipset inside it. The chipset used is non-reprogrammable and data is 'burnt' into the device. So, today it is possible to replace the chip if we have access to EVMs.
These specifications were given by the Election commissioner himself during an interview on Rajya Sabha TV.
The Election Commission of India even kept an open challenge during 2018 for tempering with the EVM.
There were various videos and news circulating across the web blaming the government for cheating to win, however, the government does not play part in conducting the elections.
The only constitutional body to conduct free and fair election is the- Election Commission of India.
On the VVPAT (voter verifiable paper audit trail) front too, there are reports of malfunctioning. Also, as per the rules, paper ballots and VVPAT machines are not counted until the Returning Officer asks for it.
Therefore, the election commission often denied the report of tempering as EVM's are no where connected to with any other device, or internet. The entire data is collected in a pre-inserted chip. EVM's remain under high security and are assigned randomly for different places.
Why is India using EVMs?
Using EVMs means doing away with paper ballots, and in turn, saving millions of trees from being cut.
It makes the entire process of voting simpler-a click on the button and your vote is registered. EVMs, in the long-run, have turned out to be cost-effective as well. These machines don't require electricity and run on batteries. At the same time, the EVMs are lighter and portable compared to the huge ballot boxes.
And most importantly, EVMs have made the vote-counting process much faster, delivering results in hours as against manual counting of votes which could take days.
Why to support EVM?
EVMs led to a significant decline in electoral fraud, particularly in politically sensitive States as rigging elections became extremely expensive.
Research has shown a link between luminosity and growth rate, suggesting that EVMs contribute to development.
EVMs empowered those from the weaker sections of society who were victims of political or electoral violence. In particular, women, lower castes, and those less educated were more likely to participate in the electoral process when EVMs were used.
EVMs made the electoral process more competitive.
There has been a significant decline in the incidence of re-election, and winning margins have reduced dramatically. Less time-consuming process happens.
Arguments that are in favour of Paper Ballot
Invariably come across reports of malfunctioning EVMs. Reliability of EVM lead to the trust issue where people want the previous system to be worked.
Disadvantage and Issues related to there are problems of paper ballot.
o Transporting them and guarding them is a problem.
o Ballot boxes can be captured.
o Ghost voters who did not exist voted for the parties.
o Credibility as election frauds
o Time consuming
The Controversial Candidate of BJP- Pragya Singh Thakur
Australian Elections - All you need to know about!
Indian EVM's do not have electricity, or internet connectivity. The only thing which it has a chip, which is produced in a government own PSU.EVM can be tempered only when it is opened and replace the chip.
CHIPS can be replaced BUT ONLY IN LAB. However, the truth is that EVM chip can't be replaced just like that as per election commissioner's statement.
Election commission finds it hard to maintain credibility, as controversy does not seem to die. Election commission even kept an open challenge but none came in front to temper with it. VVPAT should be installed, or more awareness campaign should be promoted by government.
Don't you think that climate change needs more awareness? Would you wait for governments to react? Or do you want to contribute to save our home- 'the Earth'.
'1 – K for Climate' an awareness Program
You can still be a part of the event- Donate Us- PayPal
You can still be a part of the event- Donate Us- PayTM
Bhim _UPI - 526683880@icici
Lets Discuss and Debate!
To Debate, learn and Share!
Tags # BJP # Congress. # currentaffairs # currentaffairs 2019 # EVM # GK # gktoday # India # Lok Sabha 2019 # magazine # news # Opposition # thehindu
thehindu
Labels: BJP, Congress., currentaffairs, currentaffairs 2019, EVM, GK, gktoday, India, Lok Sabha 2019, magazine, news, Opposition, thehindu

redpajama_set_name: RedPajamaCommonCrawl


text:
Stasjoner Podcaster Logg på
Søk blant mer enn 50.000 radiostasjoner over hele verden
KQED 88.5 and 89.3 FM
Sjangere: Community, News, Public
Cirka KQED 88.5 and 89.3 FM
KQED is a news/talk radio station that is part of the NPR network. Like the latter, its goal is to educate and inform its audience by offering unbiased and independently created content. It broadcasts a combination of NPR's most popular syndicated shows with original talk shows that, on their turn, are also integrated into the network on syndicated shows by the National Public Radio.
KQED is based in San Francisco and broadcasts to Northern California on the frequencies 88.5 FM and 89.3 FM. It also offers an online live streaming service that allows people from all over the world to listen live to its broadcast, as well as a podcast service for a later follow up of its programming.
Its line-up comprised educational shows on various topics, talk shows where commentators analyze the latest news on current affairs and politics, and news reports featuring Joe McConnell as the person in charge of traffic updates.
Popular shows and hosts
Fresh Air with Terry Gross
The World with Marco Werman
Truth Be Told with Tonya Mosley
Forum with Michael Krasny
City Arts and Lectures with Steve Kerr
PBS Newshour with Judy Woodruff
Brukernes Vurdering:
Søndag Mandag Tirsdag Onsdag Torsdag Fredag Lørdag
midnight - 1 a.m. Says You!
1 a.m. - 2 a.m. All Things Considered
2 a.m. - 3 a.m. Latino USA
3 a.m. - 3:30 a.m. Planet Money
3:30 a.m. - 4 a.m. How I Built This
4 a.m. - 5 a.m. Hidden Brain
5 a.m. - 5:30 a.m. Political Breakdown
5:30 a.m. - 6 a.m. KQED Newsroom
6 a.m. - 7 a.m. Check, Please! Bay Area Kids
7 a.m. - 8 a.m. Tech Nation
8 a.m. - 9 a.m. On the Media
9 a.m. - 10 a.m. Latino USA
10 a.m. - 11 a.m. TED Radio Hour
11 a.m. - 5 p.m. Morning Edition
5 p.m. - 7 p.m. Forum
7 p.m. - 8 p.m. Here & Now
8 p.m. - 9 p.m. The Takeaway
9 p.m. - 10 p.m. Fresh Air
10 p.m. - 11 p.m. The World
11 p.m. - midnight PBS NewsHour
midnight - 12:30 a.m. Marketplace
12:30 a.m. - 2:30 a.m. All Things Considered
2:30 a.m. - 3 a.m. Marketplace
3 a.m. - 4 a.m. Fresh Air
5 a.m. - 6 a.m. BBC World Service
6 a.m. - 7 a.m. Forum
7 a.m. - 8 a.m. 1A with Joshua Johnson
9 a.m. - 10 a.m. BBC World Service
10 a.m. - 11 a.m. World Affairs Council
4 a.m. - 5 a.m. City Arts and Lectures
10 a.m. - 11 a.m. City Arts and Lectures
4 a.m. - 5 a.m. Radio Specials
10 a.m. - 11 a.m. Radio Specials
2:30 a.m. - 3 a.m. Political Breakdown
7 p.m. - 9 p.m. Science Friday
12:30 a.m. - 1 a.m. The California Report Magazine
1 a.m. - 2:30 a.m. All Things Considered
2:30 a.m. - 3 a.m. The California Report Magazine
4 a.m. - 5 a.m. Commonwealth Club
7 a.m. - 7:30 a.m. The California Report Magazine
7:30 a.m. - 8 a.m. All Things Considered
9 a.m. - 9:30 a.m. KQED Newsroom
9:30 a.m. - 10 a.m. Washington Week
10 a.m. - 11 a.m. Commonwealth Club
11 a.m. - noon Inside Europe
noon - 1 p.m. World Affairs Council
1 p.m. - 6 p.m. Weekend Edition Saturday
6 p.m. - 7 p.m. The New Yorker Radio Hour
7 p.m. - 8 p.m. Wait Wait... Don't Tell Me!
8 p.m. - 9 p.m. This American Life
9 p.m. - 10 p.m. Snap Judgment
10 p.m. - 11 p.m. Radiolab
11 p.m. - midnight Freakonomics Radio
midnight - 1 a.m. Reveal
2 a.m. - 4 a.m. Live from Here with Chris Thile
4 a.m. - 5 a.m. Selected Shorts
5 a.m. - 6 a.m. This American Life
6 a.m. - 7 a.m. The Moth Radio Hour
7 a.m. - 8 a.m. Snap Judgment
8 a.m. - 9 a.m. The New Yorker Radio Hour
9 a.m. - 10 a.m. Reveal
10 a.m. - 11 a.m. Hidden Brain
11 a.m. - noon Radiolab
noon - 1 p.m. Freakonomics Radio
1 p.m. - 6 p.m. Weekend Edition Sunday
7 p.m. - 9 p.m. Live from Here with Chris Thile
9 p.m. - 10 p.m. City Arts and Lectures
10 p.m. - 11 p.m. On The Media
11 p.m. - midnight TED Radio Hour
Nettsted: www.kqed.org/radio/
Adresse: KQED Inc. 2601 Mariposa St. San Francisco, CA 94110 USA
E-post: forum@kqed.org
Legg denne radioens widget til nettstedet ditt
Relaterte Stasjoner
NPR : National Public Radio
KLBN La Buena 101.9 FM
KPFA 94.1 FM
KPCC / KUOR / KVLA 89.3 FM
BBC London
WFUV 90.7 FM
Check, Please! Bay Area Podcast
KQED Science News
KQED's Forum
KQED's The California Report
The California Report Magazine
The Leap
KQED Science Video Podcast
Science on the SPOT HD Video Podcast
KQED: Spark Art Video Podcast
Radiostasjoner av Sjanger
Popmusikk 80-talls Nyheter Moderne Voksenpop 90-talls Blanding Topp 40 Prat 70-talls Rock Alle Sjangre
Tweets by @KQED


Peconic Land Trust is offering a three-part landscape painting class, led by local watercolor artist Melissa Hyatt. Find a spot in the barn overlooking the farm fields and learn to sketch the scene, use a view finder and capture the golden light of autumn in your chosen medium: watercolor, pastel, oil and acrylics. All levels welcome, students provide their own materials. A suggested materials list will be provided upon registration. Space is limited, prepaid reservation required. Rain or shine.


text:
package license

import (
	"fmt"
	"strings"
)

// Info for the copyright.
//
// Deprecated: This type will be removed in favor of the more robust License
// type.
type Info struct {
	Name string
	Year int
} //struct Info

// NewInfo constructs an Info.
func NewInfo(name string, year int) *Info {
	return &Info{Name: name, Year: year}
} //NewInfo

func (info *Info) replace(license string) string {
	// Replace the name
	license = strings.Replace(license, "NAME", info.Name, -1)

	// Replace the year
	return strings.Replace(license, "YEAR", fmt.Sprintf("%d", info.Year), -1)
} //replace

redpajama_set_name: RedPajamaGithub


Slider Station, Cocoa Room, Open Flame Kitchen and now Nomad Kitchen.
A 1973 airstream food truck that serves delicious and amazing food in the middle of nowhere or in certain places. This truck was created by the talented Basel Alsalem and serves some famous and special dishes to the public. It moves from place to place and you find it only on weekends.
I've been wanting to try it ever since I've known about it from instagram but I couldn't go to Bnaider 267 road where it serves food on Friday and Saturday. And when I had the chance to go to Bnaider, the truck wasn't there 😦 I was really disappointed.
Last week, I came to know that they'll be serving their delicious food at GulfRun festival which was held in collaboration with KidsVille carnival at Sirbb Circuit. I've never been there before but it wasn't difficult to find. Too Jana around 4pm and when we reached there, the place was kind of quiet. I kept searching and looking for the truck and there it was intront of my own eyes. It has been a very long chase.
Went immediately to check the menu even though I knew what I wanted to order but I had to see what they served on that day. Delicious food. I wanted to order the whole menu but unfortunately I couldn't. So i decided to order their famous signature dishes. The Srirarcha Glazed Lobster Rolls & Rockin' Shrimps with Hot Honey Glazed Sauce.


Despite an underwhelming debut in March, Vogue Poland successfully picked up the pace and managed to win over our forum members with the Eva Herzigova and Natalia Vodianova covers that followed. The Polish magazine's fourth installment, however, puts it back at square one with an unimpressive Adwoa Aboah cover for June 2018. Photographer Tim Walker captured the current face of Chanel Eyewear for her sixth Vogue cover, as she serves up her signature blank stare in a red leather Christian Dior trench coat she styled herself.
"What a terrible cover! I will take tacky, even vulgar over something this insipid. Just Adwoa with another lifeless and blank expression," slammed Miss Dalloway.
"So bored of Tim Walker… every shoot looks the same with little style or substance. I'll hold my tongue on Adwoa as my feelings of her modeling are not positive," 333101 chimed in.
Fiercification wasn't here for the cover either. "No. And what's with the awful art direction behind her holding the belt up towards the V of the Vogue as if to blend in with it? I can't believe the whole industry often makes it appear like it's so hard to create a beautiful cover image these days. Really? It's not hard!" he scolded.
"Their worst cover to date," declared gazebo.
Are you just as unimpressed as we are? Share your thoughts here.


text:
Gugu Mbatha-Raw >
Gugu Mbatha-raw Was Destined To Play Belle
By WENN in Movies / TV / Theatre on 16 May 2014
Follow Gugu Mbatha-Raw
Picture: Gugu Mbatha-Raw - 'Charles James: Beyond Fashion' Costume Institute Gala at the Metropolitan Museum of Art - Arrivals - Mantattan, New York, United States -...
British actress Gugu Mbatha-Raw is convinced she was destined to play Dido Elizabeth Belle in director Amma Asante's new period movie Belle because she grew up in the English town where much of the film was shot.
The young star was inspired to learn about the mixed race daughter of a Royal Navy Admiral she would eventually play after meeting producer Damian Jones long before there was even a script for the film and she purchased a postcard featuring her character's portrait, which she carried around with her for two years.
The picture became a lucky charm when Mbatha-Raw was invited to audition for the lead - and then she was whisked off to Oxfordshire, where she grew up, to shoot scenes.
She tells Access Hollywood Live, "We actually shot some scenes in the movie in my home town of Oxford, which was crazy - trotting through the streets in a carriage... A couple of my really old school friends and one of my art teachers came and visited the set."
Gugu Mbatha-Raw: 'Being biracial gives me an 'interesting perspective'
Gugu Mbatha-Raw's stalker terror
Gugu Mbatha-Raw confirmed for A Wrinkle In Time
Gugu Mbatha-raw To Star In An Untamed State Adaptation
Fascinating Fact: 4676552
Belle Leads Britain's National Film Awards Nominations
Beyond The Lights Director Hired Photographers To Help Actors Authenticate Movie Scene
Gugu Mbatha-Raw to star with Will Smith in NFL drama
Beyond The Lights Trailer
Belle Movie Review
The Things They Say: 4197695
A Wrinkle in Time Trailer
Time is an extraordinarily complicated thing which does not always behave in the way you...
Beauty And The Beast Movie Review
This remake of Disney's 1991 classic is remarkably faithful, using present-day digital animation effects to...
Beauty And The Beast Trailer
Take a closer look at the cast of 'Beauty and the Beast' in the final...
To outsiders, the castle which sits on the outskirts of a small town is just...
Miss Sloane Trailer
Elizabeth Sloane is a lobbyist and often finds herself facing off against some of the...
Free State of Jones Movie Review
Since its true story is still so timely after some 150 years, we can forgive...
The Whole Truth Trailer
Mike Lassiter finds himself being put on trial for the murder of his father. The...
Beauty And The Beast - Teaser Trailer
Disney have released the new teaser trailer for the remake of the much-loved animated film...
Free State Of Jones Trailer
The brutal reality of war is those who often die and put their lives on...
Concussion Trailer
Dr. Bennet Omalu is a pathologist who loves his job and, in many ways, the...
Jupiter Ascending Movie Review
Filmmaking siblings Lana and Andy Wachowski never do anything by halves. The Matrix was a...
Datari TurnerNoni Jean has always been an immensely talented singer and performer, winning local talent...
The plot feels like a Jane Austen novel infused with a hot-potato political issue, but...
Odd Thomas Movie Review
After Van Helsing, the first G.I. Joe and the Mummy movies, filmmaker Stephen Sommers just...


Download Flexipos basic Software|Try it for free.
FlexiF&B-Basic food and beverages POS software is exclusively designed keeping in mind the changing trends in the hospitality sector in mind. FlexiF&B-basic is an appropriate POS solution for any business in the Food & Beverages -restaurant, fine dining, food court, take-away, home delivery, bars, ice-cream parlors, and bakery or sweet shops. FlexiF&B-Basic provides you multiple service options like Fine dining, Take away and Delivery. This product is basically tailored to meet basic requirements and is not designed to take care of inventory. This product can be upgraded to FlexiF&B as and when you are ready to maintain recipe and inventory.
Customized Heading & Message into Bill Receipts.
Database is compatible with MS-SQL Express Studio integrated.
Do Flexi f&b basic Supports Barcode scanning, refund, and reprint activity?
Absolutely yes! Flexi f&b basic do support primary barcode scanning. It has all the minimal functionality to run the process.
Do Flexi f&b basic integrate with all Billing hardware?
Flexi f&b basic can integrate to standard billing hardware. It can also integrate a good number of external devices.
What kind of reporting capabilities does Flexi f&b basic have?
Flexi f&b basic report system will allow you to quickly and efficiently track limited cash flow that cycles through your business; Our report is easy and efficient.You can have a limited set of reports with Flexi f&b basic; you have multi filtered reports in Flexi f&b software.
How often do Flexi f&b basic updates occur?
Flexi f&b Basic is a kind of minimal viable product. Generally, this opts for fitment test for a retail business. You cannot expect much updates as we suggest you to upgrade to Flexi f&b.
Do you offer Flexi f&b basic usage training for new customers?
When you commit to implementing a new Flexi f&b basic software, you want to make sure the individual handling cash flow at the counter, actually know how it works. Our interface is simple and can be handled by a layman. Anyways we support you by providing training. We also provide you access to process videos on our youtube channel.
Flexi f&b basic will not have support.
All major changes in the industry are promptly updated in Flexi f&b basic.Flexi f&b basic to support the GST billing system.
Can Flexi f&b basic support for the multi-food chain system?
A flexipos basic cant support a multi-store or a store chain. But you can upgrade to Flexi f&b for a multi-food chain.
Do Flexi f&b basic support the loyalty and Discount functions?
Flexi f&b basic is designed in such a way that, it helps you out with minimal requirements. And this cant support you the discount function. We suggest you upgrade for Flexi f&b for loyalty, discount,happy hours and many such features.
Do you provide us any free trial access to Flexi f&b basic?
We do provide you the free trial access for 30 days for a new user. But you can only access the Flexi f&b basic version. Anyways upon upgrading, you can access the Flexi f&b fully.
Am having a unique retailing food or beverages business, can you customize this Flexi f&b basic for our business?
Our expert development team are happy to take new things and challenges.Will consider all relevant information from your end and will customize it accordingly.However, basic version can't be customized, and we suggest you upgrade to Flexi f&b for any customization.
What are all the stores can this Flexi f&b basic can be used?
When should I choose Flexi f&b basic over Flexi f&b?
Flexi f&b basic provides you minimal features which have limitations like transactions, features, and support.Flexi f&b basic supports for a very new single retail shop. Flexi f&b is not designed to take care of inventory, We recommend you Flexi f&b.


Phnom Penh (VNA) - The first ever MCT (Malaysia-Cambodia-Thailand) submarine fiber optic cable will be operational in Cambodia by the first quarter of 2017, reported the Cambodian news agency (AKP).
The MCT cable system spans approximately 1,300 km. It will position Cambodia as the gateway to Asia which enables the country to harvest the Asia traffic and extends the connectivity to ASEAN and the rest of the world via Malaysia, the news agency cited a press release issued at a conference on MCT Progress in Phnom Penh on October 25 as saying.
"We are very excited to announce that Cambodia's first submarine cable is about to arrive and EZECOM will be the first ISP in Cambodia to own this submarine cable. We are going to launch landing station building in Sihanoukville on December 16," said Yves Schaeffer, CEO of EZECOM.
"MCT is expected to cement Cambodia's ICT future by improving Cambodia's independence in telecommunications and internet connectivity as well as improve the country's overall communications capabilities," he added.
Mao Chakrya, Chairman of Telecommunication Regulator of Cambodia, expressed his conviction that the arrival of MCT will generate positive impacts on telecommunication industry in Cambodia and bring about more investment flow to the country as well.
According to the press release, the MCT cable system which cost around 70 million USD will land at Cambodia's Preah Sihanouk province, Thailand's Rayong province and Malaysia's Kuantan (Cherating) and the landing in all the three countries are completed and ready to receive the cable.


text:
The effects of deuteration on halothane metabolism in the rat
A. Gyamfi, D. A. Holaday
3 SUPPL.
Halothane
Gyamfi, A., & Holaday, D. A. (1980). The effects of deuteration on halothane metabolism in the rat. Anesthesiology, 53(3 SUPPL.).
The effects of deuteration on halothane metabolism in the rat. / Gyamfi, A.; Holaday, D. A.
In: Anesthesiology, Vol. 53, No. 3 SUPPL., 01.12.1980.
Gyamfi, A & Holaday, DA 1980, 'The effects of deuteration on halothane metabolism in the rat', Anesthesiology, vol. 53, no. 3 SUPPL..
Gyamfi A, Holaday DA. The effects of deuteration on halothane metabolism in the rat. Anesthesiology. 1980 Dec 1;53(3 SUPPL.).
Gyamfi, A. ; Holaday, D. A. / The effects of deuteration on halothane metabolism in the rat. In: Anesthesiology. 1980 ; Vol. 53, No. 3 SUPPL.
@article{a3291ff17c094f36bc4f2f9cd36e5ef2,
title = "The effects of deuteration on halothane metabolism in the rat",
author = "A. Gyamfi and Holaday, {D. A.}",
journal = "Anesthesiology",
number = "3 SUPPL.",
T1 - The effects of deuteration on halothane metabolism in the rat
AU - Gyamfi, A.
AU - Holaday, D. A.
JO - Anesthesiology
JF - Anesthesiology
IS - 3 SUPPL.


text:
from __future__ import print_function

from util import *

from pattern import vector

from pattern_text.en import Text, Sentence, Word, parse
from pattern.db import Datasheet

from random import seed
seed(0)

try:
    xrange
except NameError:  # python 3
    xrange = range

def model(top=None):
    """ Returns a Model of e-mail messages.
        Document type=True => HAM, False => SPAM.
        Documents are mostly of a technical nature (developer forum posts).
    """
    documents = []
    for score, message in Datasheet.load(os.path.join(PATH, "corpora", "spam-apache.csv")):
        document = vector.Document(
            message, stemmer="porter", top=top, type=int(score) > 0)
        documents.append(document)
    return vector.Model(documents)

#-------------------------------------------------------------------------

class TestUnicode(unittest.TestCase):

    def setUp(self):
        # Test data with different (or wrong) encodings.
        self.strings = (
            u"ünîcøde",
            u"ünîcøde".encode("utf-16"),
            u"ünîcøde".encode("latin-1"),
            u"ünîcøde".encode("windows-1252"),
            "ünîcøde",
            u"אוניקאָד"
        )

    def test_decode_utf8(self):
        # Assert unicode.
        for s in self.strings:
            self.assertTrue(isinstance(vector.decode_utf8(s), unicode))
        print("pattern.vector.decode_utf8()")

    def test_encode_utf8(self):
        # Assert Python bytestring.
        for s in self.strings:
            self.assertTrue(isinstance(vector.encode_utf8(s), bytes))
        print("pattern.vector.encode_utf8()")

#-------------------------------------------------------------------------

class TestUtilityFunctions(unittest.TestCase):

    def setUp(self):
        pass

    def test_shi(self):
        # Assert integer hashing algorithm.
        for a, b in (
                (100, "1c"),
                (1000, "G8"),
                (10000, "2bI"),
                (100000, "Q0u")):
            self.assertEqual(vector.shi(a), b)
        print("pattern.vector.shi()")

    def test_shuffled(self):
        # Assert shuffled() <=> sorted().
        v1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
        v2 = vector.shuffled(v1)
        self.assertTrue(v1 != v2 and v1 == sorted(v2))
        print("pattern.vector.shuffled()")

    def test_chunk(self):
        # Assert list chunk (near-)equal size.
        for a, n, b in (
                ([1, 2, 3, 4, 5], 0, []),
                ([1, 2, 3, 4, 5], 1, [[1, 2, 3, 4, 5]]),
                ([1, 2, 3, 4, 5], 2, [[1, 2, 3], [4, 5]]),
                ([1, 2, 3, 4, 5], 3, [[1, 2], [3, 4], [5]]),
                ([1, 2, 3, 4, 5], 4, [[1, 2], [3], [4], [5]]),
                ([1, 2, 3, 4, 5], 5, [[1], [2], [3], [4], [5]]),
                ([1, 2, 3, 4, 5], 6, [[1], [2], [3], [4], [5], []])):
            self.assertEqual(list(vector.chunk(a, n)), b)
        print("pattern.vector.chunk()")

    def test_readonlydict(self):
        # Assert read-only dict.
        v = vector.readonlydict({"a": 1})
        self.assertTrue(isinstance(v, dict))
        self.assertRaises(vector.ReadOnlyError, v.__setitem__, "a", 2)
        self.assertRaises(vector.ReadOnlyError, v.__delitem__, "a")
        self.assertRaises(vector.ReadOnlyError, v.pop, "a")
        self.assertRaises(vector.ReadOnlyError, v.popitem, ("a", 2))
        self.assertRaises(vector.ReadOnlyError, v.clear)
        self.assertRaises(vector.ReadOnlyError, v.update, {"b": 2})
        self.assertRaises(vector.ReadOnlyError, v.setdefault, "b", 2)
        print("pattern.vector.readonlydict")

    def test_readonlylist(self):
        # Assert read-only list.
        v = vector.readonlylist([1, 2])
        self.assertTrue(isinstance(v, list))
        self.assertRaises(vector.ReadOnlyError, v.__setitem__, 0, 0)
        self.assertRaises(vector.ReadOnlyError, v.__delitem__, 0)
        self.assertRaises(vector.ReadOnlyError, v.append, 3)
        self.assertRaises(vector.ReadOnlyError, v.insert, 2, 3)
        self.assertRaises(vector.ReadOnlyError, v.extend, [3, 4])
        self.assertRaises(vector.ReadOnlyError, v.remove, 1)
        self.assertRaises(vector.ReadOnlyError, v.pop, 0)
        print("pattern.vector.readonlylist")

#-------------------------------------------------------------------------

class TestStemmer(unittest.TestCase):

    def setUp(self):
        # Test data from
        # http://snowball.tartarus.org/algorithms/english/stemmer.html
        self.input = [
            'consign', 'consigned', 'consigning', 'consignment', 'consist', 'consisted', 'consistency',
            'consistent', 'consistently', 'consisting', 'consists', 'consolation', 'consolations',
            'consolatory', 'console', 'consoled', 'consoles', 'consolidate', 'consolidated', 'consolidating',
            'consoling', 'consolingly', 'consols', 'consonant', 'consort', 'consorted', 'consorting',
            'conspicuous', 'conspicuously', 'conspiracy', 'conspirator', 'conspirators', 'conspire',
            'conspired', 'conspiring', 'constable', 'constables', 'constance', 'constancy', 'constant',
            'generate', 'generates', 'generated', 'generating', 'general', 'generally', 'generic',
            'generically', 'generous', 'generously', 'knack', 'knackeries', 'knacks', 'knag', 'knave',
            'knaves', 'knavish', 'kneaded', 'kneading', 'knee', 'kneel', 'kneeled', 'kneeling', 'kneels',
            'knees', 'knell', 'knelt', 'knew', 'knick', 'knif', 'knife', 'knight', 'knightly', 'knights',
            'knit', 'knits', 'knitted', 'knitting', 'knives', 'knob', 'knobs', 'knock', 'knocked', 'knocker',
            'knockers', 'knocking', 'knocks', 'knopp', 'knot', 'knots', 'skies', 'spy'
        ]
        self.output = [
            'consign', 'consign', 'consign', 'consign', 'consist', 'consist', 'consist', 'consist', 'consist',
            'consist', 'consist', 'consol', 'consol', 'consolatori', 'consol', 'consol', 'consol', 'consolid',
            'consolid', 'consolid', 'consol', 'consol', 'consol', 'conson', 'consort', 'consort', 'consort',
            'conspicu', 'conspicu', 'conspiraci', 'conspir', 'conspir', 'conspir', 'conspir', 'conspir',
            'constabl', 'constabl', 'constanc', 'constanc', 'constant', 'generat', 'generat', 'generat',
            'generat', 'general', 'general', 'generic', 'generic', 'generous', 'generous', 'knack', 'knackeri',
            'knack', 'knag', 'knave', 'knave', 'knavish', 'knead', 'knead', 'knee', 'kneel', 'kneel', 'kneel',
            'kneel', 'knee', 'knell', 'knelt', 'knew', 'knick', 'knif', 'knife', 'knight', 'knight', 'knight',
            'knit', 'knit', 'knit', 'knit', 'knive', 'knob', 'knob', 'knock', 'knock', 'knocker', 'knocker',
            'knock', 'knock', 'knopp', 'knot', 'knot', 'sky', 'spi'
        ]

    def test_stem(self):
        # Assert the accuracy of the stemmer.
        i = 0
        n = len(self.input)
        for a, b in zip(self.input, self.output):
            if vector.stemmer.stem(a, cached=True) == b:
                i += 1
        self.assertEqual(float(i) / n, 1.0)
        print("pattern.vector.stemmer.stem()")

    def test_stem_case_sensitive(self):
        # Assert stemmer case-sensitivity.
        for a, b in (
                ("Ponies", "Poni"),
                ("pONIES", "pONI"),
                ("SKiES", "SKy"),
                ("cosmos", "cosmos")):
            self.assertEqual(vector.stemmer.stem(a), b)
        print("pattern.vector.stemmer.case_sensitive()")

#-------------------------------------------------------------------------

class TestDocument(unittest.TestCase):

    def setUp(self):
        # Test file for loading and saving documents.
        self.path = "test_document2.txt"

    def tearDown(self):
        if os.path.exists(self.path):
            os.remove(self.path)

    def test_stopwords(self):
        # Assert common stop words.
        for w in ("a", "am", "an", "and", "i", "the", "therefore", "they", "what", "while"):
            self.assertTrue(w in vector.stopwords["en"])
        print("pattern.vector.stopwords")

    def test_words(self):
        # Assert word split algorithm (default treats lines as spaces and
        # ignores numbers).
        s = "The cat sat on the\nmat. 1 11."
        v = vector.words(s, filter=lambda w: w.isalpha())
        self.assertEqual(v, ["The", "cat", "sat", "on", "the", "mat"])
        # Assert custom word filter.
        v = vector.words(s, filter=lambda w: True)
        self.assertEqual(
            v, ["The", "cat", "sat", "on", "the", "mat", "1", "11"])
        print("pattern.vector.words()")

    def test_stem(self):
        # Assert stem with PORTER, LEMMA and pattern.en.Word.
        s = "WOLVES"
        v1 = vector.stem(s, stemmer=None)
        v2 = vector.stem(s, stemmer=vector.PORTER)
        v3 = vector.stem(s, stemmer=vector.LEMMA)
        v4 = vector.stem(s, stemmer=lambda w: "wolf*")
        v5 = vector.stem(Word(None, s, lemma=u"wolf*"), stemmer=vector.LEMMA)
        v6 = vector.stem(Word(None, s, type="NNS"), stemmer=vector.LEMMA)
        self.assertEqual(v1, "wolves")
        self.assertEqual(v2, "wolv")
        self.assertEqual(v3, "wolf")
        self.assertEqual(v4, "wolf*")
        self.assertEqual(v5, "wolf*")
        self.assertEqual(v6, "wolf")
        # Assert unicode output.
        self.assertTrue(isinstance(v1, unicode))
        self.assertTrue(isinstance(v2, unicode))
        self.assertTrue(isinstance(v3, unicode))
        self.assertTrue(isinstance(v4, unicode))
        self.assertTrue(isinstance(v5, unicode))
        self.assertTrue(isinstance(v6, unicode))
        print("pattern.vector.stem()")

    def test_count(self):
        # Assert wordcount with stemming, stopwords and pruning.
        w = ["The", "cats", "sat", "on", "the", "mat", "."]
        v1 = vector.count(w)
        v2 = vector.count(w, stemmer=vector.LEMMA)
        v3 = vector.count(w, exclude=["."])
        v4 = vector.count(w, stopwords=True)
        v5 = vector.count(w, stopwords=True, top=3)
        v6 = vector.count(w, stopwords=True, top=3, threshold=1)
        v7 = vector.count(w, dict=vector.readonlydict, cached=False)
        self.assertEqual(v1, {"cats": 1, "sat": 1, "mat": 1, ".": 1})
        self.assertEqual(v2, {"cat": 1, "sat": 1, "mat": 1, ".": 1})
        self.assertEqual(v3, {"cats": 1, "sat": 1, "mat": 1})
        self.assertEqual(
            v4, {"the": 2, "cats": 1, "sat": 1, "on": 1, "mat": 1, ".": 1})
        self.assertEqual(v5, {"the": 2, "cats": 1, ".": 1})
        self.assertEqual(v6, {"the": 2})
        # Assert custom dict class.
        self.assertTrue(isinstance(v7, vector.readonlydict))
        print("pattern.vector.count()")

    def test_document(self):
        # Assert Document properties.
        # Test with different input types.
        for constructor, w in (
                (vector.Document, "The cats sit on the mat."),
                (vector.Document, ["The", "cats", "sit", "on", "the", "mat"]),
                (vector.Document, {"cat": 1, "mat": 1, "sit": 1}),
                (vector.Document, Text(parse("The cats sat on the mat."))),
                (vector.Document, Sentence(parse("The cats sat on the mat.")))):
            # Test copy.
            v = constructor(
                w, stemmer=vector.LEMMA, stopwords=False, name="Cat", type="CAT")
            v = v.copy()
            # Test properties.
            self.assertEqual(v.name, "Cat")
            self.assertEqual(v.type, "CAT")
            self.assertEqual(v.count, 3)
            self.assertEqual(v.terms, {"cat": 1, "mat": 1, "sit": 1})
            # Test iterator decoration.
            self.assertEqual(sorted(v.features), ["cat", "mat", "sit"])
            self.assertEqual(sorted(v), ["cat", "mat", "sit"])
            self.assertEqual(len(v), 3)
            self.assertEqual(v["cat"], 1)
            self.assertEqual("cat" in v, True)
        print("pattern.vector.Document")

    def test_document_load(self):
        # Assert save + load document integrity.
        v1 = "The cats are purring on the mat."
        v1 = vector.Document(
            v1, stemmer=vector.PORTER, stopwords=True, name="Cat", type="CAT")
        v1.save(self.path)
        v2 = vector.Document.load(self.path)
        self.assertEqual(v1.name,   v2.name)
        self.assertEqual(v1.type,   v2.type)
        self.assertEqual(v1.vector, v2.vector)
        print("pattern.vector.Document.save()")
        print("pattern.vector.Document.load()")

    def test_document_vector(self):
        # Assert Vector properties.
        # Test copy.
        v = vector.Document("the cat sat on the mat").vector
        v = v.copy()
        # Test properties.
        self.assertTrue(isinstance(v, dict))
        self.assertTrue(isinstance(v, vector.Vector))
        self.assertTrue(isinstance(v.id, int))
        self.assertEqual(sorted(v.features), ["cat", "mat", "sat"])
        self.assertEqual(v.weight, vector.TF)
        self.assertAlmostEqual(v.norm,   0.58, places=2)
        self.assertAlmostEqual(v["cat"], 0.33, places=2)
        self.assertAlmostEqual(v["sat"], 0.33, places=2)
        self.assertAlmostEqual(v["mat"], 0.33, places=2)
        # Test copy + update.
        v = v({"cat": 1, "sat": 1, "mat": 1})
        self.assertEqual(sorted(v.features), ["cat", "mat", "sat"])
        self.assertAlmostEqual(v["cat"], 1.00, places=2)
        self.assertAlmostEqual(v["sat"], 1.00, places=2)
        self.assertAlmostEqual(v["mat"], 1.00, places=2)
        print("pattern.vector.Document.vector")

    def test_document_keywords(self):
        # Assert Document.keywords() based on term frequency.
        v = vector.Document(
            ["cat", "cat", "cat", "sat", "sat", "mat"]).keywords(top=2)
        self.assertEqual(len(v), 2)
        self.assertEqual(v[0][1], "cat")
        self.assertEqual(v[1][1], "sat")
        self.assertAlmostEqual(v[0][0], 0.50, places=2)
        self.assertAlmostEqual(v[1][0], 0.33, places=2)
        print("pattern.vector.Document.keywords()")

    def test_tf(self):
        # Assert Document.term_frequency() (= weights used in Vector for
        # orphaned documents).
        v = vector.Document("the cat sat on the mat")
        for feature, weight in v.vector.items():
            self.assertEqual(v.term_frequency(feature), weight)
            self.assertAlmostEqual(v.term_frequency(feature), 0.33, places=2)
        print("pattern.vector.Document.tf()")

    def test_tfidf(self):
        # Assert tf-idf for documents not in a model.
        v = [[0.0, 0.4, 0.6], [0.6, 0.4, 0.0]]
        v = [dict(enumerate(v)) for v in v]
        m = vector.Model([vector.Document(x) for x in v], weight=vector.TFIDF)
        v = [vector.sparse(v) for v in vector.tf_idf(v)]
        self.assertEqual(sorted(m[0].vector.items()), sorted(v[0].items()))
        self.assertAlmostEqual(v[0][2], 0.42, places=2)
        self.assertAlmostEqual(v[1][0], 0.42, places=2)
        print("pattern.vector.tf_idf()")

    def test_cosine_similarity(self):
        # Test cosine similarity for documents not in a model.
        v1 = vector.Document("the cat sat on the mat")
        v2 = vector.Document("a cat with a hat")
        self.assertAlmostEqual(v1.cosine_similarity(v2), 0.41, places=2)
        print("pattern.vector.Document.similarity()")
        print("pattern.vector.cosine_similarity()")
        print("pattern.vector.l2_norm()")

#-------------------------------------------------------------------------

class TestModel(unittest.TestCase):

    def setUp(self):
        # Test model.
        self.model = vector.Model(documents=(
            vector.Document("cats purr", name="cat1", type=u"cåt"),
            vector.Document("cats meow", name="cat2", type=u"cåt"),
            vector.Document("dogs howl", name="dog1", type=u"døg"),
            vector.Document("dogs bark", name="dog2", type=u"døg")
        ))

    def test_model(self):
        # Assert Model properties.
        v = self.model
        self.assertEqual(list(v), v.documents)
        self.assertEqual(len(v), 4)
        self.assertEqual(
            sorted(v.terms), ["bark", "cats", "dogs", "howl", "meow", "purr"])
        self.assertEqual(sorted(v.terms), sorted(v.vector.keys()))
        self.assertEqual(v.weight, vector.TFIDF)
        self.assertEqual(v.lsa, None)
        self.assertEqual(v.vectors, [d.vector for d in v.documents])
        self.assertAlmostEqual(v.density, 0.22, places=2)
        print("pattern.vector.Model")

    def test_model_append(self):
        # Assert Model.append().
        self.assertRaises(
            vector.ReadOnlyError, self.model.documents.append, None)
        self.model.append(vector.Document("birds chirp", name="bird"))
        self.assertEqual(self.model[0]._vector, None)
        self.assertEqual(len(self.model), 5)
        self.model.remove(self.model.document("bird"))
        print("pattern.vector.Model.append()")

    def test_model_save(self):
        # Assert Model save & load.
        self.model.save("test_model.pickle", update=True)
        self.model._update()
        model = vector.Model.load("test_model.pickle")
        # Assert that the precious cache is saved and reloaded.
        self.assertTrue(len(model._df) > 0)
        self.assertTrue(len(model._cos) > 0)
        self.assertTrue(len(model.vectors) > 0)
        os.remove("test_model.pickle")
        print("pattern.vector.Model.save()")
        print("pattern.vector.Model.load()")

    def test_model_export(self):
        # Assert Orange and Weka ARFF export formats.
        for format, src in (
            (vector.ORANGE,
                u"bark\tcats\tdogs\thowl\tmeow\tpurr\tm#name\tc#type\n"
                u"0\t0.3466\t0\t0\t0\t0.6931\tcat1\tcåt\n"
                u"0\t0.3466\t0\t0\t0.6931\t0\tcat2\tcåt\n"
                u"0\t0\t0.3466\t0.6931\t0\t0\tdog1\tdøg\n"
                u"0.6931\t0\t0.3466\t0\t0\t0\tdog2\tdøg"),
            (vector.WEKA,
                u"@RELATION 5885744\n"
                u"@ATTRIBUTE bark NUMERIC\n"
                u"@ATTRIBUTE cats NUMERIC\n"
                u"@ATTRIBUTE dogs NUMERIC\n"
                u"@ATTRIBUTE howl NUMERIC\n"
                u"@ATTRIBUTE meow NUMERIC\n"
                u"@ATTRIBUTE purr NUMERIC\n"
                u"@ATTRIBUTE class {døg,cåt}\n"
                u"@DATA\n0,0.3466,0,0,0,0.6931,cåt\n"
                u"0,0.3466,0,0,0.6931,0,cåt\n"
                u"0,0,0.3466,0.6931,0,0,døg\n"
                u"0.6931,0,0.3466,0,0,0,døg")):
            self.model.export("test_%s.txt" % format, format=format)
            v = codecs.open("test_%s.txt" % format, encoding="utf-8").read()
            v = v.replace("\r\n", "\n")
            for line in src.split("\n"):
                self.assertTrue(line in src)
            os.remove("test_%s.txt" % format)
        print("pattern.vector.Model.export()")

    def test_df(self):
        # Assert document frequency: "cats" appears in 1/2 documents,"purr" in
        # 1/4.
        self.assertEqual(self.model.df("cats"), 0.50)
        self.assertEqual(self.model.df("purr"), 0.25)
        self.assertEqual(self.model.df("????"), 0.00)
        print("pattern.vector.Model.df()")

    def test_idf(self):
        # Assert inverse document frequency: log(1/df).
        self.assertAlmostEqual(self.model.idf("cats"), 0.69, places=2)
        self.assertAlmostEqual(self.model.idf("purr"), 1.39, places=2)
        self.assertEqual(self.model.idf("????"), None)
        print("pattern.vector.Model.idf()")

    def test_tfidf(self):
        # Assert term frequency - inverse document frequency: tf * idf.
        self.assertAlmostEqual(
            self.model[0].tfidf("cats"), 0.35, places=2)  # 0.50 * 0.69
        self.assertAlmostEqual(
            self.model[0].tfidf("purr"), 0.69, places=2)  # 0.50 * 1.39
        self.assertAlmostEqual(self.model[0].tfidf("????"), 0.00, places=2)
        print("pattern.vector.Document.tfidf()")

    def test_frequent_concept_sets(self):
        # Assert Apriori algorithm.
        v = self.model.frequent(threshold=0.5)
        self.assertEqual(
                sorted(v.keys(), key=lambda x: str(x)),
                [frozenset(["cats"]), frozenset(["dogs"])])
        print("pattern.vector.Model.frequent()")

    def test_cosine_similarity(self):
        # Assert document cosine similarity.
        v1 = self.model.similarity(self.model[0], self.model[1])
        v2 = self.model.similarity(self.model[0], self.model[2])
        v3 = self.model.similarity(self.model[0], vector.Document("cats cats"))
        self.assertAlmostEqual(v1, 0.20, places=2)
        self.assertAlmostEqual(v2, 0.00, places=2)
        self.assertAlmostEqual(v3, 0.45, places=2)
        # Assert that Model.similarity() is aware of LSA reduction.
        try:
            import numpy
            self.model.reduce(2)
            v1 = self.model.similarity(self.model[0], self.model[1])
            v2 = self.model.similarity(self.model[0], self.model[2])
            self.assertAlmostEqual(v1, 1.00, places=2)
            self.assertAlmostEqual(v2, 0.00, places=2)
            self.model.lsa = None
        except ImportError as e:
            pass
        print("pattern.vector.Model.similarity()")

    def test_nearest_neighbors(self):
        # Assert document nearest-neighbor search.
        v1 = self.model.neighbors(self.model[0])
        v2 = self.model.neighbors(vector.Document("cats meow"))
        v3 = self.model.neighbors(vector.Document("????"))
        self.assertEqual(v1[0][1], self.model[1])
        self.assertEqual(v2[0][1], self.model[1])
        self.assertEqual(v2[1][1], self.model[0])
        self.assertAlmostEqual(v1[0][0], 0.20, places=2)
        self.assertAlmostEqual(v2[0][0], 0.95, places=2)
        self.assertAlmostEqual(v2[1][0], 0.32, places=2)
        self.assertTrue(len(v3) == 0)
        print("pattern.vector.Model.neighbors()")

    def test_search(self):
        # Assert document vector space search.
        v1 = self.model.search(self.model[0])
        v2 = self.model.search(vector.Document("cats meow"))
        v3 = self.model.search(vector.Document("????"))
        v4 = self.model.search("meow")
        v5 = self.model.search(["cats", "meow"])
        self.assertEqual(v1, self.model.neighbors(self.model[0]))
        self.assertEqual(v2[0][1], self.model[1])
        self.assertEqual(v3, [])
        self.assertEqual(v4[0][1], self.model[1])
        self.assertEqual(v5[0][1], self.model[1])
        self.assertAlmostEqual(v4[0][0], 0.89, places=2)
        self.assertAlmostEqual(v5[0][0], 1.00, places=2)
        print("pattern.vector.Model.search()")

    def test_distance(self):
        # Assert Model document distance.
        v1 = self.model.distance(
            self.model[0], self.model[1], method=vector.COSINE)
        v2 = self.model.distance(
            self.model[0], self.model[2], method=vector.COSINE)
        v3 = self.model.distance(
            self.model[0], self.model[2], method=vector.EUCLIDEAN)
        self.assertAlmostEqual(v1, 0.8, places=1)
        self.assertAlmostEqual(v2, 1.0, places=1)
        self.assertAlmostEqual(v3, 1.2, places=1)
        print("pattern.vector.Model.distance()")

    def test_cluster(self):
        # Assert Model document clustering.
        v1 = self.model.cluster(method=vector.KMEANS, k=10)
        v2 = self.model.cluster(method=vector.HIERARCHICAL, k=1)
        self.assertTrue(isinstance(v1, list) and len(v1) == 10)
        self.assertTrue(isinstance(v2, vector.Cluster))

        def _test_clustered_documents(cluster):
            if self.model[0] in cluster:
                self.assertTrue(self.model[1] in cluster
                                and not self.model[2] in cluster)
            if self.model[2] in cluster:
                self.assertTrue(self.model[3] in cluster
                                and not self.model[1] in cluster)
        v2.traverse(_test_clustered_documents)
        print("pattern.vector.Model.cluster()")

    def test_centroid(self):
        # Assert centroid of recursive Cluster.
        v = vector.Cluster(({"a": 1}, vector.Cluster(({"a": 2}, {"a": 4}))))
        self.assertAlmostEqual(vector.centroid(v)["a"], 2.33, places=2)
        print("pattern.vector.centroid()")

    def test_lsa(self):
        # Assert Model.reduce() LSA reduction.
        try:
            import numpy
        except ImportError as e:
            return
        self.model.reduce(2)
        self.assertTrue(isinstance(self.model.lsa, vector.LSA))
        self.model.lsa = None
        print("pattern.vector.Model.reduce()")

    def test_feature_selection(self):
        # Assert information gain feature selection.
        m = vector.Model((
            vector.Document(
                "the cat sat on the mat", type="cat", stopwords=True),
            vector.Document(
                "the dog howled at the moon", type="dog", stopwords=True)
        ))
        v = m.feature_selection(top=3, method=vector.IG, threshold=0.0)
        self.assertEqual(v, ["at", "cat", "dog"])
        # Assert Model.filter().
        v = m.filter(v)
        self.assertTrue("at" in v.terms)
        self.assertTrue("cat" in v.terms)
        self.assertTrue("dog" in v.terms)
        self.assertTrue("the" not in v.terms)
        self.assertTrue("mat" not in v.terms)
        print("pattern.vector.Model.feature_selection()")
        print("pattern.vector.Model.filter()")

    def test_information_gain(self):
        # Assert information gain weights.
        # Example from
        # http://www.comp.lancs.ac.uk/~kc/Lecturing/csc355/DecisionTrees_given.pdf
        m = vector.Model([
            vector.Document({"wind": 1}, type=False),
            vector.Document({"wind": 0}, type=True),
            vector.Document({"wind": 0}, type=True),
            vector.Document({"wind": 0}, type=True),
            vector.Document({"wind": 1}, type=True),
            vector.Document({"wind": 1}, type=False),
            vector.Document({"wind": 1}, type=False)], weight=None
        )
        self.assertAlmostEqual(m.information_gain("wind"), 0.52, places=2)
        # Example from http://rutcor.rutgers.edu/~amai/aimath02/PAPERS/14.pdf
        m = vector.Model([
            vector.Document({"3": 1}, type=True),
            vector.Document({"3": 5}, type=True),
            vector.Document({"3": 1}, type=False),
            vector.Document({"3": 7}, type=True),
            vector.Document({"3": 2}, type=False),
            vector.Document({"3": 2}, type=True),
            vector.Document({"3": 6}, type=False),
            vector.Document({"3": 4}, type=True),
            vector.Document({"3": 0}, type=False),
            vector.Document({"3": 9}, type=True)], weight=None
        )
        self.assertAlmostEqual(m.ig("3"), 0.571, places=3)
        self.assertAlmostEqual(m.gr("3"), 0.195, places=3)
        print("patten.vector.Model.information_gain()")
        print("patten.vector.Model.gain_ratio()")

    def test_entropy(self):
        # Assert Shannon entropy calculcation.
        self.assertAlmostEqual(vector.entropy([1, 1]), 1.00, places=2)
        self.assertAlmostEqual(vector.entropy([2, 1]), 0.92, places=2)
        self.assertAlmostEqual(vector.entropy([0.5, 0.5]), 1.00, places=2)
        self.assertAlmostEqual(vector.entropy([0.6]), 0.44, places=2)
        print("pattern.vector.entropy()")

    def test_condensed_nearest_neighbor(self):
        # Assert CNN for data reduction.
        v = vector.Model((
            vector.Document("woof", type="dog"),
            vector.Document("meow", type="cat"),  # redundant
            vector.Document("meow meow", type="cat")
        ))
        self.assertTrue(len(v.cnn()) < len(v))
        print("pattern.vector.Model.condensed_nearest_neighbor()")

    def test_classifier(self):
        # Assert that the model classifier is correctly saved and loaded.
        p = "test.model.tmp"
        v = vector.Model([vector.Document("chirp", type="bird")])
        v.train(vector.SVM)
        v.save(p)
        v = vector.Model.load(p)
        self.assertTrue(isinstance(v.classifier, vector.SVM))
        os.unlink(p)
        print("pattern.vector.Model.classifier")
        print("pattern.vector.Model.train()")

#-------------------------------------------------------------------------

class TestApriori(unittest.TestCase):

    def setUp(self):
        pass

    def test_apriori(self):
        # Assert frequent sets frequency.
        v = vector.apriori((
            [1, 2, 4],
            [1, 2, 5],
            [1, 3, 6],
            [1, 3, 7]
        ), support=0.5)
        self.assertTrue(len(v), 3)
        self.assertEqual(v[frozenset((1, ))], 1.0)
        self.assertEqual(v[frozenset((1, 2))], 0.5)
        self.assertEqual(v[frozenset((2, ))], 0.5)
        self.assertEqual(v[frozenset((3, ))], 0.5)

#-------------------------------------------------------------------------

class TestLSA(unittest.TestCase):

    model = None

    def setUp(self):
        # Test spam model for reduction.
        if self.__class__.model is None:
            self.__class__.model = model(top=250)
        self.model = self.__class__.model
        random.seed(0)

    def tearDown(self):
        random.seed()

    def test_lsa(self):
        try:
            import numpy
        except ImportError as e:
            print(e)
            return
        # Assert LSA properties.
        k = 100
        lsa = vector.LSA(self.model, k)
        self.assertEqual(lsa.model, self.model)
        self.assertEqual(lsa.vectors, lsa.u)
        self.assertEqual(set(lsa.terms), set(self.model.vector.keys()))
        self.assertTrue(isinstance(lsa.u,     dict))
        self.assertTrue(isinstance(lsa.sigma, list))
        self.assertTrue(isinstance(lsa.vt,    list))
        self.assertTrue(len(lsa.u),     len(self.model))
        self.assertTrue(len(lsa.sigma), len(self.model) - k)
        self.assertTrue(len(lsa.vt),    len(self.model) - k)
        for document in self.model:
            v = lsa.vectors[document.id]
            self.assertTrue(isinstance(v, vector.Vector))
            self.assertTrue(len(v) <= k)
        print("pattern.vector.LSA")

    def test_lsa_concepts(self):
        try:
            import numpy
        except ImportError:
            return
        # Assert LSA concept space.
        model = vector.Model((
            vector.Document("cats purr"),
            vector.Document("cats meow"),
            vector.Document("dogs howl"),
            vector.Document("dogs bark")
        ))
        model.reduce(2)
        # Intuitively, we'd expect two concepts:
        # 1) with cats + purr + meow grouped together,
        # 2) with dogs + howl + bark grouped together.
        i1, i2 = 0, 0
        for i, concept in enumerate(model.lsa.concepts):
            self.assertTrue(isinstance(concept, dict))
            if concept["cats"] > 0.5:
                self.assertTrue(concept["purr"] > 0.5)
                self.assertTrue(concept["meow"] > 0.5)
                self.assertTrue(concept["howl"] == 0.0)
                self.assertTrue(concept["bark"] == 0.0)
                i1 = i
            if concept["dogs"] > 0.5:
                self.assertTrue(concept["howl"] > 0.5)
                self.assertTrue(concept["bark"] > 0.5)
                self.assertTrue(concept["purr"] == 0.0)
                self.assertTrue(concept["meow"] == 0.0)
                i2 = i
        # We'd expect the "cat" documents to score high on the "cat" concept vector.
        # We'd expect the "dog" documents to score high on the "dog" concept
        # vector.
        v1 = model.lsa[model.documents[0].id]
        v2 = model.lsa[model.documents[2].id]
        self.assertTrue(v1.get(i1, 0) > 0.7)
        self.assertTrue(v1.get(i2, 0) == 0.0)
        self.assertTrue(v2.get(i1, 0) == 0.0)
        self.assertTrue(v2.get(i2, 0) > 0.7)
        # Assert LSA.transform() for unknown documents.
        v = model.lsa.transform(vector.Document("cats dogs"))
        self.assertAlmostEqual(v[0], 0.34, places=2)
        self.assertAlmostEqual(v[1], 0.34, places=2)
        print("pattern.vector.LSA.concepts")
        print("pattern.vector.LSA.transform()")

    def test_model_reduce(self):
        try:
            import numpy
        except ImportError:
            return
        # Test time and accuracy of model with sparse vectors of maximum 250
        # features.
        t1 = time.time()
        A1, P1, R1, F1, stdev = vector.KNN.test(self.model, folds=10)
        t1 = time.time() - t1
        # Test time and accuracy of model with reduced vectors of 20 features.
        self.model.reduce(dimensions=20)
        t2 = time.time()
        A2, P2, R2, F2, stdev = vector.KNN.test(self.model, folds=10)
        t2 = time.time() - t2
        self.assertTrue(len(self.model.lsa[self.model.documents[0].id]) == 20)
        self.assertTrue(t2 * 2 < t1)       # KNN over 2x faster.
        self.assertTrue(abs(F1 - F2) < 0.06)  # Difference in F-score = 1-6%.
        self.model.lsa = None
        print("pattern.vector.Model.reduce()")

#-------------------------------------------------------------------------

class TestClustering(unittest.TestCase):

    model = None

    def setUp(self):
        # Test spam model for clustering.
        if self.__class__.model is None:
            self.__class__.model = model(top=10)
        self.model = self.__class__.model
        random.seed(0)

    def tearDown(self):
        random.seed()

    def test_features(self):
        # Assert unique list of vector keys.
        v = vector.features(vectors=[{"cat": 1}, {"dog": 1}])
        self.assertEqual(sorted(v), ["cat", "dog"])
        print("pattern.vector.features()")

    def test_mean(self):
        # Assert iterator mean.
        self.assertEqual(vector.mean([], 0), 0)
        self.assertEqual(vector.mean([1, 1.5, 2], 3), 1.5)
        self.assertEqual(vector.mean(xrange(4), 4), 1.5)
        print("pattern.vector.mean()")

    def test_centroid(self):
        # Assert center of list of vectors.
        v = vector.centroid(
            [{"cat": 1}, {"cat": 0.5, "dog": 1}], features=["cat", "dog"])
        self.assertEqual(v, {"cat": 0.75, "dog": 0.5})
        print("pattern.vector.centroid()")

    def test_distance(self):
        # Assert distance metrics.
        v1 = vector.Vector({"cat": 1})
        v2 = vector.Vector({"cat": 0.5, "dog": 1})
        for d, method in (
                # 1 - ((1*0.5 + 0*1) / (sqrt(1**2 + 0**2) * sqrt(0.5**2 + 1**2)))
                (0.55, vector.COSINE),
                (1.25, vector.EUCLIDEAN),  # (1-0.5)**2 + (0-1)**2
                (1.50, vector.MANHATTAN),  # abs(1-0.5) + abs(0-1)
                (1.00, vector.HAMMING),   # (True + True) / 2
                (1.11, lambda v1, v2: 1.11)):
            self.assertAlmostEqual(
                vector.distance(v1, v2, method), d, places=2)
        print("pattern.vector.distance()")

    def test_distancemap(self):
        # Assert distance caching mechanism.
        v1 = vector.Vector({"cat": 1})
        v2 = vector.Vector({"cat": 0.5, "dog": 1})
        m = vector.DistanceMap(method=vector.COSINE)
        for i in range(100):
            self.assertAlmostEqual(m.distance(v1, v2), 0.55, places=2)
            self.assertAlmostEqual(m._cache[(v1.id, v2.id)], 0.55, places=2)
        print("pattern.vector.DistanceMap")

    def _test_k_means(self, seed):
        # Assert k-means clustering accuracy.
        A = []
        n = 100
        m = dict((d.vector.id, d.type) for d in self.model[:n])
        for i in range(30):
            # Create two clusters of vectors.
            k = vector.kmeans(
                [d.vector for d in self.model[:n]], k=2, seed=seed)
            # Measure the number of spam in each clusters.
            # Ideally, we have a cluster without spam and one with only spam.
            i = len([1 for v in k[0] if m[v.id] == False])
            j = len([1 for v in k[1] if m[v.id] == False])
            A.append(max(i, j) * 2.0 / n)
        # Return average accuracy after 10 tests.
        return sum(A) / 30.0

    def test_k_means_random(self):
        # Assert k-means with random initialization.
        v = self._test_k_means(seed=vector.RANDOM)
        self.assertTrue(v >= 0.6)
        print("pattern.vector.kmeans(seed=RANDOM)")

    def test_k_means_kmpp(self):
        # Assert k-means with k-means++ initialization.
        # Note: vectors contain the top 10 features - see setUp().
        # If you include more features (more noise?) accuracy and performance
        # will drop.
        v = self._test_k_means(seed=vector.KMPP)
        self.assertTrue(v >= 0.8)
        print("pattern.vector.kmeans(seed=KMPP)")

    def test_hierarchical(self):
        # Assert cluster contains nested clusters and/or vectors.
        def _test_cluster(cluster):
            for nested in cluster:
                if isinstance(nested, vector.Cluster):
                    v1 = set((v.id for v in nested.flatten()))
                    v2 = set((v.id for v in cluster.flatten()))
                    self.assertTrue(nested.depth < cluster.depth)
                    self.assertTrue(v1.issubset(v2))
                else:
                    self.assertTrue(isinstance(nested, vector.Vector))
            self.assertTrue(isinstance(cluster, list))
            self.assertTrue(isinstance(cluster.depth, int))
            self.assertTrue(isinstance(cluster.flatten(), list))
        n = 50
        m = dict((d.vector.id, d.type) for d in self.model[:n])
        h = vector.hierarchical([d.vector for d in self.model[:n]], k=2)
        h.traverse(_test_cluster)
        # Assert the accuracy of hierarchical clustering (shallow test).
        # Assert that cats are separated from dogs.
        v = (
            vector.Vector({"feline": 1, " lion": 1,   "mane": 1}),
            vector.Vector({"feline": 1, "tiger": 1, "stripe": 1}),
            vector.Vector({"canine": 1,  "wolf": 1,   "howl": 1}),
            vector.Vector({"canine": 1,   "dog": 1,   "bark": 1})
        )
        h = vector.hierarchical(v)
        self.assertTrue(len(h[0][0]) == 2)
        self.assertTrue(len(h[0][1]) == 2)
        self.assertTrue(
            v[0] in h[0][0] and v[1] in h[0][0] or v[0] in h[0][1] and v[1] in h[0][1])
        self.assertTrue(
            v[2] in h[0][0] and v[3] in h[0][0] or v[2] in h[0][1] and v[3] in h[0][1])
        print("pattern.vector.Cluster()")
        print("pattern.vector.hierarchical()")

#-------------------------------------------------------------------------

class TestClassifier(unittest.TestCase):

    model = None

    def setUp(self):
        # Test model for training classifiers.
        if self.__class__.model is None:
            self.__class__.model = model()
        self.model = self.__class__.model

    def _test_classifier(self, Classifier, **kwargs):
        # Assert classifier training + prediction for trivial cases.
        v = Classifier(**kwargs)
        for document in self.model:
            v.train(document)
        for type, message in (
                (False, "win money"),
                (True, "fix bug")):
            self.assertEqual(v.classify(message), type)
        # Assert classifier properties.
        self.assertEqual(v.binary, True)
        self.assertEqual(sorted(v.classes), [False, True])
        self.assertTrue(isinstance(v.features, list))
        self.assertTrue("ftp" in v.features)
        # Assert saving + loading.
        v.save(Classifier.__name__)
        v = Classifier.load(Classifier.__name__)
        self.assertEqual(v.classify("win money"), False)
        self.assertEqual(v.classify("fix bug"),   True)
        os.remove(Classifier.__name__)
        # Assert untrained classifier returns None.
        v = Classifier(**kwargs)
        self.assertEqual(v.classify("herring"), None)
        print("pattern.vector.%s.train()" % Classifier.__name__)
        print("pattern.vector.%s.classify()" % Classifier.__name__)
        print("pattern.vector.%s.save()" % Classifier.__name__)

    def test_classifier_vector(self):
        # Assert Classifier._vector() (translates input from train() and
        # classify() to a Vector).
        v = vector.Classifier()._vector
        self.assertEqual(("cat", {"cat": 0.5, "purs": 0.5}), v(
            vector.Document("the cat purs", type="cat")))
        self.assertEqual(("cat", {"cat": 0.5, "purs": 0.5}), v(
            {"cat": 0.5, "purs": 0.5}, type="cat"))
        self.assertEqual(
            ("cat", {"cat": 0.5, "purs": 0.5}), v(["cat", "purs"], type="cat"))
        self.assertEqual(
            ("cat", {"cat": 0.5, "purs": 0.5}), v("cat purs", type="cat"))
        print("pattern.vector.Classifier._vector()")

    def test_nb(self):
        # Assert Bayesian probability classification.
        self._test_classifier(vector.NB)
        # Assert the accuracy of the classifier.
        A, P, R, F, o = vector.NB.test(
            self.model, folds=10, method=vector.BERNOUILLI)
        #print(A, P, R, F, o)
        self.assertTrue(P >= 0.87)
        self.assertTrue(R >= 0.87)
        self.assertTrue(F >= 0.87)

    def test_igtree(self):
        # Assert information gain tree classification.
        self._test_classifier(vector.IGTREE, method=vector.GAINRATIO)
        # Assert the accuracy of the classifier.
        A, P, R, F, o = vector.IGTREE.test(
            self.model, folds=10, method=vector.GAINRATIO)
        #print(A, P, R, F, o)
        self.assertTrue(P >= 0.87)
        self.assertTrue(R >= 0.87)
        self.assertTrue(F >= 0.87)

    def test_knn(self):
        # Assert nearest-neighbor classification.
        self._test_classifier(vector.KNN, k=10, distance=vector.COSINE)
        # Assert the accuracy of the classifier.
        A, P, R, F, o = vector.KNN.test(
            self.model, folds=10, k=2, distance=vector.COSINE)
        #print(A, P, R, F, o)
        self.assertTrue(P >= 0.91)
        self.assertTrue(R >= 0.91)
        self.assertTrue(F >= 0.91)

    def test_slp(self):
        random.seed(1)
        # Assert single-layer averaged perceptron classification.
        self._test_classifier(vector.SLP)
        # Assert the accuracy of the classifier.
        A, P, R, F, o = vector.SLP.test(self.model, folds=10, iterations=3)
        #print(A, P, R, F, o)
        self.assertTrue(P >= 0.90)
        self.assertTrue(R >= 0.90)
        self.assertTrue(F >= 0.90)

    def test_svm(self):
        try:
            from pattern.vector import svm
        except ImportError as e:
            print(e)
            return
        # Assert support vector classification.
        self._test_classifier(
            vector.SVM, type=vector.SVC, kernel=vector.LINEAR)
        # Assert the accuracy of the classifier.
        A, P, R, F, o = vector.SVM.test(
            self.model, folds=10, type=vector.SVC, kernel=vector.LINEAR)
        #print(A, P, R, F, o)
        self.assertTrue(P >= 0.93)
        self.assertTrue(R >= 0.93)
        self.assertTrue(F >= 0.93)

    def test_liblinear(self):
        # If LIBLINEAR can be loaded,
        # assert that it is used for linear SVC (= 10x faster).
        try:
            from pattern.vector import svm
        except ImportError as e:
            print(e)
            return
        if svm.LIBLINEAR:
            classifier1 = vector.SVM(
                type=vector.CLASSIFICATION,
                kernel=vector.LINEAR,
                extensions=(vector.LIBSVM, vector.LIBLINEAR))
            classifier2 = vector.SVM(
                type=vector.CLASSIFICATION,
                kernel=vector.RBF,
                extensions=(vector.LIBSVM, vector.LIBLINEAR))
            classifier3 = vector.SVM(
                type=vector.CLASSIFICATION,
                kernel=vector.LINEAR,
                extensions=(vector.LIBSVM,))
            self.assertEqual(classifier1.extension, vector.LIBLINEAR)
            self.assertEqual(classifier2.extension, vector.LIBSVM)
            self.assertEqual(classifier3.extension, vector.LIBSVM)
        print("pattern.vector.svm.LIBSVM")
        print("pattern.vector.svm.LIBLINEAR")

#-------------------------------------------------------------------------

if __name__ == "__main__":
    unittest.main()


10:56 AM - SiM mentioned Gotcha in post Matte taillights - start of a trend?
01:48 PM - SiM mentioned Gotcha in post Scion iM Models: Hatch and Wagon?
06:08 PM - blueBallz quoted SiM in post Remove headlight?
03:43 PM - davect01 quoted SiM in post What did you do to your Scion iM today?
03:34 PM - SiM quoted davect01 in post What did you do to your Scion iM today?
10:48 PM - davect01 quoted SiM in post Brakes and Rotor Upgrades help!!
08:55 PM - SiM quoted Chris1202 in post Brakes and Rotor Upgrades help!!


text:
Q: Write variable in variable without recognizing it Just a quick question. I'm having trouble with writing variable ($var) just as text, example:
$header = "

<?php
$title ='title';
$work = 'work';
$about = 'about';
$contact = 'contact';
?>

";

and now I should be ablw to echo it as it is. But I get errors that those variables are not defined.

A: Variables in double quoted strings in PHP are interpolated. Escape the dollar signs.
$header = "

<?php
\$title ='title';
\$work = 'work';
\$about = 'about';
\$contact = 'contact';
?>

";

redpajama_set_name: RedPajamaStackExchange


text:
China called Walmart stupid after it was accused of removing Xinjiang-made products from Sam's Club
Posted on January 5, 2022 January 5, 2022 by eastturkistan1
China called Walmart stupid after it was accused of removing Xinjiang-made products from Sam's Club
Sinéad Baker
Wed, January 5, 2022, 7:16 AM ·2 min read
A Walmart store.Jonathan Wiggs/The Boston Globe via Getty Images
Chinese shoppers accused Walmart of removing products from Xinjiang from Sam's Club.
The Communist Party said Walmart was showing "stupidity and short-sightedness."
But Sam's Club said no Xinjiang products were deliberately removed, Reuters reported.
China slammed Walmart after claims that it had removed products made in its Xinjiang region from Sam's Club.
Shoppers in China had accused Walmart of removing the goods made in the Xinjiang province, where China has detained at least a million Uyghurs in prisons and detention camps, with many forced to labor in factories for little to no pay.
A Sam's Club representative told Chinese analysts on a call last week that products from Xinjiang were not being deliberately removed, and called the accusations "a misunderstanding," Reuters reported.
The representative said people couldn't find products from Xinjiang because users can't search the app for products based on where they are from, Reuters reported.
But China on Friday criticized Walmart after the allegations.
The Communist Party's Central Commission for Discipline Inspection claimed Sam's Club was boycotting products from Xinjiang.
It said that "to take down all products from a region without a valid reason hides an ulterior motive, reveals stupidity and short-sightedness, and will surely have its own bad consequences," Reuters reported.
It is unclear if this statement came before or after the call with analysts.
Walmart and Sam's Club have not publicly commented on the allegations. Walmart did not respond to a request for comment from Reuters.
Two weeks ago President Joe Biden passed into law a ban on all imports from Xinjiang unless businesses can prove they were made without forced labor. It's not clear whether the claims against Sam's Club were related to the new law. Reuters reported that Chinese shoppers started criticizing Sam's Club shortly after the ban.
Read the original article on Business Insider
← 'China is uninvestable,' says Bond king Jeffrey Gundlach
India Offers Potential 'Gold' for U.S. Leagues Amid China Tumult →


text:
Ljudinstallation är en kombination av ljud- och bildkonst till exempel en sammansättning av elektroniska komponenter och högtalarsystem som frambringar ljud i en skulptural utformning i olika material.

Se även
Futuristisk musik
Ljudkonst
Ljudlandskap

Konst
Ljud

redpajama_set_name: RedPajamaWikipedia


ATKTransientSplitter is a mono transient splitter, cutting an input signal into its transient and sustain parts.
RMS is the size of the power windows.
Attack fraction (or ratio) is the percentage of the attack time constant that will be used for the fast attack/release filter. Used to work on the transient at the beginning of a sound.
Release fraction (or ratio) is the percentage of the release time constant that will be used for the slow attack/release filter (as it has a faster release time constant). Used to work on the transient at the end of sound.
Slope is the ratio, 1 keeping the sustain at a constant RMS above the threshold, higher means that the sustain will be reduced by this factor (swell-like behavior).
Softness is an indicator of the harshness of the knee of the underlying swell.
It splits the incoming signal to L and R in strange way almost like a fake stereo. I'm not sure what that means but it doesn't seem to do the transient thing I expected it to do.


text:
On global warming, everyone needs a seat at the table
climate, politics and policy, social justice
As I was hosting UCLA Institute of the Environment and Sustainability's 2018 gala at Jeanne and Tony Pritzker's house last month, I was taken back 11 years to the annual conference of the Congressional Black Caucus.
Barack Obama had asked me to join a panel that included Van Jones — one of this year's gala honorees — to discuss global warming. I accepted, of course. The year was 2007. Al Gore's film An Inconvenient Truth, which I produced, was riding a wave of box office and awards success.
As I was being introduced, the crowd began to cheer loudly and gave a standing ovation, which felt extremely odd for someone like me. I looked over, and of course they weren't cheering for me — they were cheering for Obama, who had just walked on stage.
I became embarrassed.
Obama, then a senator from Illinois, reassured me with his famous grin. "Go ahead, Lawrence. Do your thing and I'll come on after you." He was already a huge political star, and the man always knew how to command a room.
After my time at the microphone ended, Obama began to speak. He knew jobs, healthcare and education were the issues most pressing on these leaders' minds. But he knew the urgency of global warming and how it would affect all of us. He also knew part of the solution was green energy and predicted a massive expansion of green business, from blue-collar jobs installing clean energy to high-end research and engineering. He wanted this group to have a seat at that table.
Obama also drew attention to a persistent tragedy: communities of color are much more likely to be victims of environmental harm. He urged the leaders in the room to get serious about fighting back to protect the health of their communities. They listened, and the speech inspired me personally to fight harder than ever for a healthy planet.
Obama turned out to be prophetic on both counts.
Jobs in sustainability and green energy have since boomed, and not just during his time as president. Despite current efforts to take us back to coal, the smart money is on clean energy. There are now five times more jobs in renewable energy than fossil fuel, and solar energy jobs are growing 12 times faster than the rest of the economy. And, despite support from the highest levels of government, the push to bring back coal has faltered bigly. Put simply, the train has left the station. Clean energy is the future and there's no going back.
Unfortunately, Obama was also right about communities of color getting the worst of pollution and climate change. From the Standing Rock Sioux fight against big oil to the water crisis in Flint, Michigan, environmental injustice is as bad as ever — maybe worse. Communities of color are more likely to be exposed to air pollution tied to diseases like asthma. As a result, 13.4% of black children have asthma, compared to 7.8% of white children.
It's easy to blame government, but the problem runs much deeper. It even extends to academia, where critical environmental research takes place and the next generation of leaders is trained.
Van Jones speaks after being honored at the 2018 UCLA IoES gala. | Photo by Vince Bucci.
Obama's goal of a diverse sustainability workforce hit a familiar roadblock — lack of representation. Especially in positions of leadership, white men dominate universities and businesses. In environmental science, 86 percent of the U.S. workforce is white and 70 percent is male.
Obama's inspiring 2007 speech gave me personal hope, but a lot of work remains to be done if his vision is to be realized. Luckily, the very best ideas are tenacious.
Near the final days of President Obama's time in the White House, he honored a young UCLA climate scientist named Aradhna Tripati with a Presidential Award. He recognized not just her research, but her committed, personal outreach to communities traditionally left behind by math and science.
At last month's gala, we raised $1.3 million, part of which will be used to help Tripati launch the first and only center for diversity in environmental sciencein the country. Focusing on mentor relationships at all levels, "from K to gray," the center offers person-to-person support to ensure the next generation of leaders includes people of all backgrounds.
The world needs fresh, creative approaches. Research tells us that's just what diversity brings.
So here we are, 11 years after Obama clowned with me in front of the Black Congressional Congress in D.C., and everything appears to have come full circle. Van Jones is still hard at work for environmental justice — as he left the gala, he reminded me that we still have a lot to do to achieve it. Obama's vision is still at work, too, through Professor Tripati and the diversity center.
Now is the time to cure environmental injustice from root to tip. In November, we'll get a chance to vote in new political leaders, but it can't stop there. We need to support representation in science and advocacy, too. That will give all communities in our country a seat at the table on issues that affect all of us.
It's time to include everyone in the battle for our planet's future.
Article originally published on Lawrence Bender's Medium account.
TOP IMAGE: Lawrence Bender speaks at IoES Gala. | Photo by Katheen Yap.
Lawrence Bender
Embracing the concept of state is critical to solving environmental issues, essay explains
2018 IoES Gala | Sea CO2 Change


text:
About REW & Co
REW & Co
Musical Machines and Living Dolls
The Murtogh D. Guinness Collection of Mechanical Musical Instruments and Automata
Machines that play music. Monkeys that ride bikes. Banjos, pianos, and violins that serenade with the drop of a coin. All these mechanical marvels are part of the Morris Museum's renowned Guinness Collection, one of the finest of its kind in the world. This book, written to accompany the exhibition by the same name, tells their story in rich detail through the objects, historic documents, and spectacular imagery.
Brooklyn! An Illustrated History
Talk show host Larry King called this book "the best history of my hometown I've ever read." Congresswoman Nydia M. Velázquez (12th District, NY) called it "an intriguing and comprehensive depiction of the patchwork metropolis we affectionately call 'Brooklyn.'" Winner of a New York Society Library New York City Book Award, Brooklyn! An Illustrated History takes readers on a journey through time via the rich collections of the Brooklyn Historical Society.
Turnpike Treasures
The Souvenirs and Stuff that Celebrate an American Phenomenon
Written to accompany the New Jersey Historical Society's exhibition, What Exit? New Jersey and Its Turnpike, this little book tells the big story of the material culture of the road--and the people who give the highway life, from toll collectors to travelers.
The Heart of a City, the Heart of a Company
100 Years of Cascade and Brooklyn
To celebrate its 100th anniversary, Brooklyn's Cascade Linen and Laundry Company wanted something different than the usual company history. This publication satisfies that request. Based on detailed research, it imagines a day in the life of a late 19th-century routeman, who encounters horses, speeding trolleys, and the new automobile as he delivers clean aprons to city butchers--then compares it with a day in the life of Sammy Fortyz, who navigates the city by truck at the end of the 20th century. Through their challenges, the book shows Cascade's role in metropolitan New York.
A Place Along the Raymondskill
Beaver Lake Through Time
Written for a private client as a history of a summer camp-turned-vacation-home, this book explores 103 acres along the Raymondskill Creek in Pike County, Pennsylvania. Using primary documents and oral histories, it brings to life the 1920s' Beaver Lake Camp for Boys, where, "during the summer," a promotional brochure affirmed, "we are a family." It also tracks the property through time, telling a story of place and of transformation, of the ways that Pennsylvanians, New Yorkers, European immigrants, and others found a place to make a start or to reinvent themselves.
© 2014 REW & COMPANY


A wide variety of conveyor belt for stone crusher options are available to you, such as rubber, nylon, and polyester. You can also choose from belt conveyor, conveyor system, and chain conveyor. As well as from heat resistant, fire resistant, and oil resistant.
China Large Capacity Stone Crusher Conveyor Belt Machine, Find details about China Conveyor Belt Machine, Stone Crusher Conveyor Belt from Large Capacity Stone .
Zhengzhou Unique Industrial Equipment Co., Ltd is a leader in the R&D, manufacture, and distribution of Mining Machinery in China. ... Jaw Crusher Impact Crusher Sand Making Machine Wheel Type Sand Washer Belt Conveyor More>> Stone Crushing Plant ... Sand Making Machine Wheel Type Sand Washer Belt Conveyor. Capacity.
belt conveyor for stone crusher machine china-quarry, Belt conveyor,Raw material mill,Rock cone crusher,Ore separating , As a piece of Ore separating line equipment,Raw material mill is widely used in beneficiation .
slinger conveyor belt supplier in malaysia. Conveyor Belt Maldives ZAE Company Shanghai ZAE Company. ... 5 Jan 2014 stone crusher machine price in malaysia.


Supra Vaider Trainers in Black Camo. The Supra Vaider high top trainer is back sporting a multi-coloured, multi-textured upper. Chunky vulcanised sole unit with extremely comfortable padded collar and tongue. Multiple branding to tongue and heel.


Home » Home » Have questions or comments?
This web site was created for easy access to nursing procedures. The author of ALFA hopes to produce more videos each semester. Sincere appreciation to all the contributors.


text:
Suffolk's $30 red-light camera fee to end
Posted on: Dec 16 2022
By: mraimondo
Suffolk lawmakers on Tuesday voted to repeal a $30 administrative fee tacked onto the $50 fine paid by those guilty of red-light camera violations in a victory for Republicans who have long criticized the camera program.
The bill passed with a veto-proof 12-6 majority, with all Republican legislators as well as Democratic Legis. Tom Donnelly of Deer Park voting in favor.
Marykate Guilfoyle, a spokeswoman for Suffolk County Executive Steve Bellone, said Bellone will sign the bill into law.
Issuance of red-light camera tickets and collection of fees has not been impacted by the Sept. 8 cyberattack on county government, Guilfoyle said.
1. The Suffolk County Legislature voted Tuesday to repeal a $30 administrative fee tacked onto the $50 fine paid by motorists guilty of red-light camera violations.
2. Republican lawmakers say the program puts an unfair financial burden on county residents and increases accidents at some intersections.
3. Democrats warned the repeal could signal the county's acknowledgment it was wrong to levy the fee, endangering Suffolk's appeal of a ruling that the administrative charge was unconstitutional.
4. Republicans have long tried to rein in the red-light camera program, instituted in 2010 with the $30 administrative fee added in 2013.
GOP lawmakers say the program puts an unfair financial burden on county residents and increases accidents at some locations.
Democrats warned the legislation could signal the county's acknowledgment it was wrong to levy the fee in the first place, endangering Suffolk's appeal of a court ruling that found the fee unconstitutional.
Legis. Kevin McCaffrey (R-Lindenhurst), legislative presiding officer, had vowed to take a hard look at the camera program — which was estimated to raise $21 million in revenue for 2023, including the administrative fee — when Republicans gained control of the legislature this year.
"The Democrats didn't want to raise the citizens of Suffolk County's taxes," Legis. Rob Trotta (R-Fort Salonga), the bill's sponsor, said at a news conference after the vote. "So what did they do? They hit you with fees."
Guilfoyle called the fees preferable to a tax hike.
"The administration has always fundamentally disagreed with Trotta's preference to impose massive tax increases on Suffolk residents rather than responsible spending cuts and fees on traffic violations," she said.
Trotta and other Republicans also noted a 2020 state Supreme Court ruling that the fee was unconstitutional because the state precludes the county from charging more than the violation fine to offenders.
Suffolk has appealed the ruling by Justice David T. Reilly.
Attorney David Raimondo, who represents plaintiffs in the class-action lawsuit, welcomed passage of the legislation and said the county should move to settle the suit.
"I think justice is being served here, finally, for the taxpayers of Suffolk who deserve to have their money returned," Raimondo told Newsday.
Democratic lawmakers who spoke at the legislative meeting Tuesday argued that because the court case is unresolved, repeal of the fee could signal acknowledgment by Suffolk that it was wrong to levy it.
That could increase a potential payout in the lawsuit, Democrats said.
"We need to be careful as we move forward with this because we've got hundreds of millions of dollars at stake with this lawsuit," said Legis. Sarah Anker (D-Mt. Sinai).
Democrats also cited a county law requiring all legislation that impacts revenues to offset the financial loss.
The fee repeal is expected to reduce revenues by $7.1 million, according to the legislature's Budget Review Office.
"It doesn't specifically say where this money is coming from," Legis. Bridget Fleming (D-Noyac) said. "This is an improper resolution."
Trotta said the legislature could make up lost revenues by fully enforcing the county's hotel-motel tax.
McCaffrey said the county legislature would "do the proper budget amendment in February" — the next time the legislature can legally amend the budget — to address any shortfall.
McCaffrey said the legislature would seek next to remove cameras at intersections where vehicle accidents have increased since the program started.
A 2019 report from L.K. McLean Associates commissioned by the county found accidents at red-light camera intersections jumped by 60% between the 2007-2009 time period and 2015-2017.
However, fatal crashes and those involving injuries decreased by nearly 11% between the periods, said the report by L.K. McLean, which has offices in Brookhaven and Hicksville.
Tagged with: accident, Car Accidents, red light camera, ticket
Posted in: In the News, Red Light Camera, Uncategorized


hi i wanted to let spawn the master fishing rod because my game has a bug i donatet all emperor fishs to the museum ok nevermind. if i open the script in ce i can use all tables like walk speed but i cant activate call item what im doing wrong?
The option "No materials requirement" for crafting doesn't work at all though I activated it. The game still say "Not enough materials".
Here is the latest table with most of the items added to the list. The only items that are not on the list now are the diagrams and the production books.
There is also a really good way you can have extra storage by modifying the localdb.bytes file using an sqlite browser.
1. open localdb.bytes using an sqlite browser.
2. go to "Item_StorageBox" table.
3. mod any or all of the 4 items there.
Change the value next to them to how many items you want to store in each one .
Note: The changes won't take effect in any existing storage boxes, but any new storage boxes you place will have the new storage value registered.
-Added most of the items in the game.
multiple requests per day - we saw it here in first, right?
Yes, the table had the requests first.
I said that as a joke and honestly speaking, I do not really care. I know people do care about their work (credits... ect) and I respect that.
I like doing these things (trying to make scripts then share them here with you ), if it does work, I'm glad and if it doesn't then I'm sorry.
Is any way to increase player action speed (tree kick, axe, pickaxe)?
There is a bug in the game with the master fishing rod, and Merlin didn't give it to me after collecting all emperors fishes. Is there a cheat in your tables which can add the item in my inventory?
There is a mod on the nexus that removes the animations.
Those control opening and closing the Relationship debugger where you can add or remove relationship points, give specific gifts from afar, Marry, Breakup, Date, Divorce any NPC or simply Move the NPC to your current location instead of looking everywhere for them.
1. Choose the NPC you want.
B. Gift >>> Put the item ID that you want to gift in the box to the left of it and then click on it and it will be given as a gift.
C. Add >>> Put the number of relationship points you want to add in the box to the left of it and then click on it.
D. Move >>> Pressing on it will move the selected NPC to your current location.
E. Marry, Divorce, Love, Breakup >>> Will alter the status of that NPC to be your boyfriend/girlfriend or Husband/Wife.
Note: DO NOT leave the boxes next to Add or Gift empty when you click on them or the game will crash.
Have to open the game process in your cheat table then click on Mono tab and activate the feature.