text:
The Truck Bed Boys laughing along with blue-collar bluegrass in Bremerton
They call themselves the "Bad Boys of Bluegrass" - The Truck Bed Boys play songs about blue-collar living and comedic experiences in Bremerton.
The Truck Bed Boys laughing along with blue-collar bluegrass in Bremerton They call themselves the "Bad Boys of Bluegrass" - The Truck Bed Boys play songs about blue-collar living and comedic experiences in Bremerton. Check out this story on kitsapsun.com: https://www.kitsapsun.com/story/entertainment/2019/10/02/bremerton-band-truck-bed-boys-playing-music-meant-bring-laughs/3791980002/
Jessica Darland, Kitsap Sun Published 6:45 a.m. PT Oct. 2, 2019
The five members of The Truck Bed Boys can't always agree on the genre of music they are playing among themselves. So when it came to choosing a title for the Bremerton band's debut album, they simply went with how a promoter described their style on a list of upcoming shows.
"Everyone else had an awesome write-up, and ours was like one sentence long and it just said, 'They're poor, they're drunk, they're unkempt. They're The Truck Bed Boys,'" said Matt McBee, guitar player for the band of five. "They didn't even know us and we knew they were poor."
Whatever the label may be, you can't say the boys aren't doing something fun.
The Truck Bed Boys, who debuted "Poor, Drunk and Unkempt" in August 2018, are made of "hooters and hollerers" that play unplugged sets with banjo, guitar, mandolin, upright bass, and washboard. The hollerer is the lead, said Chris Downey, washboard player for the band. The hooter is backup.
The Truck Bed Boys and a few friends on brass play by the fire during a music festival of Pacific Northwest folk and punk bands on Sept. 1. (Photo: Jessie Darland / Kitsap Sun)
The type of music the Truck Bed Boys play has been a point of contention for the band. Downey joked they've been categorized as Nordic Blackmetal, Christian gangster rap, and K-Pop. The band once played a benefit rap show. Mostly though, their music is seen as "thrash-grass," or folk-punk with an element of comedy.
"Matt put it best (when) he said we play Americana," said Downey. "We were trying to write songs that connected with the blue-collar audience — singing about cooking crack and robbing banks — because that's what attracted laughs and fun. It was never something we were taking too entirely seriously. We had fun. We had fun and that came out in the music."
The Truck Bed Boys' album "Poor Drunk and Unkempt" was named after a description of their band in a listing of shows. (Photo: Contributed by Truck Bed Boys)
"I honestly think it's a lot of punk rockers attempting our hardest to play country music," said Spencer Hill, mandolin player.
Hill started playing the mandolin when McBee gave him one for his birthday and told him to join the band. McBee also gifted Downey his washboard that he found at a thrift shop for five dollars.
Jeremy Hopkins (left) and Matt McBee (right) play with no amps or lights during Punx in the Woods, a festival for Pacific Northwest punk and folk artists on Sept. 1. (Photo: Jessie Darland / Kitsap Sun)
"He found it with a wood block screwed into it and a cowbell dangling, and I just screwed on a high bell and we ended up with four noises and a wipe and a thump," said Downey. "The rhythm section is the easiest part of this band. Swipe swipe, thump thump, swipe, thump swipe."
"Hey, don't give away your secrets," joked Brandon Rogers. Downey said they stole Rogers from a punk band to play the upright bass for the Truck Bed Boys.
The Truck Bed Boys' sets usually include an autobiographical funny story or two.
The band debuted in 2014 with a show at the Charleston on Callow Avenue. They used microphones that time, but since have played very few "plugged-in" shows.
"Well, how do you plug in a washboard?" asked McBee.
Downey said they were seeing a lot of bands at the Charleston playing serious music on serious subjects.
"But we did not do that," said Downey. "We had fun at every show. It was very tongue-in-cheek initially — it still is to this day."
He said similar bands, like banjo player Jeremy Hopkin's other project, "Bird Teeth," make you feel things. The Truck Bed Boys laugh at feeling things.
"I think they're just laughing at us," said Hopkins, the newest member of the band. Hopkins bartends and plays in "Bird Teeth" as well as the band "Americommies" when he's not hootin' and hollerin' with the Truck Bed Boys.
"Laughing with or laughing at, it works," said Downey. "I don't care. We're really here to make people have fun."
The Truck Bed Boys say some of their greatest influences are Hank Williams Sr., The .357 String Band, Jayke Orvis and Roger Miller. Downey said he listened to a lot of rap and hip-hop growing up, but his grandma shoved country on him.
"Then as soon as I met Matt he was like, 'Chug a lug, chug a lug, you wanna holler, hi-de-ho!' And I said, 'I know that song word for word.' It's ridiculous I know that song," said Downey.
Chris Downey sings during an unplugged Truck Bed Boys performance at Punx in the Woods folk and punk music festival on Sept. 1. (Photo: Jessie Darland / Kitsap Sun)
The two started playing together with their former banjo player while working at Hale's Ales Barrelhouse. Downey took some time off from the band and went on a trip, and while he was gone the band's name was picked by McBee and their previous banjo player. The origin story involved a few too many drinks one night and a ride home from a friend without enough seats in his pick-up truck's cab.
"On the way home I said, 'Hey, I know the perfect name for our band. We'll just be called The Truck Bed Boys!' And that's how it all started," said McBee.
The band added its additional members over the years and has toured the West Coast, from Idaho to Venice Beach, California. Mostly, they play shows around Western Washington. Hopkins said since he joined the band five months ago they've played a show nearly every week — and have met for one full practice.
"Too much practice is too much sugar," said Downey. He described Hopkins as their "ace in a hole" since being added to the band.
"He knows how to play music!" said Downey. "We know how to have fun with instruments, he knows how to play music. It's weird. I've never made a buck over the fourth fret."
"I just play what you guys tell me," said Hopkins. "Actually, you don't even tell me what to play. I just follow Matt."
Hill said he just follows McBee's lead, too.
"I really don't know how to play my instrument," the mandolin player joked.
Chris Downey plays washboard and Jeremy Hopkins strums the banjo during a Truck Bed Boys performance at Punx in the Woods on Sept. 1. (Photo: Jessie Darland / Kitsap Sun)
Others at Punx in the Woods lean in and sing along to the Truck Bed Boys' unplugged performance on Sept. 1. (Photo: Jessie Darland / Kitsap Sun)
The Truck Bed Boys all contribute to the song writing, bringing in experiences from outside the band to create their individual songs they put music to together.
"Spencer's got his own songs, he presents lyrics or instrumentals and we develop it from there. We force him to sing the songs that he's wrote," said Downey. "Brandon writes great songs and refuses to sing. The only member that doesn't have their own song that they wrote is Jeremy, because he's so new."
Downey said McBee is the primary writer and leader of the band.
"He's the Paul McCartney of the band," said Downey. "No, don't say that - he's the Bocephus of the band."
One of their songs featured on Poor, Drunk, and Unkempt is named "Bremtucky." They say it's about how much they love to hate Bremerton.
"Drinkin' 40's every damn day, Bremtucky," the Truck Bed Boys holler. "You might not like it here but that's where I'm gonna stay."
The Truck Bed Boys' next is show is at the Bomb Shelter in Tacoma on October 5.
Read or Share this story: https://www.kitsapsun.com/story/entertainment/2019/10/02/bremerton-band-truck-bed-boys-playing-music-meant-bring-laughs/3791980002/
'Bend in the Road' for Forest Theater
Kitsap A&E: The week ahead
'Next to Normal' packs emotional wallop
Mavis Staples is still 'the messenger'
A taxing amount of laughter
Paradise's 'Barefoot' keeps you laughing


Soooooo…I wanted to share with you all of the small joys I've found in life in the past two weeks (as well as hopefully give you a few laughs!).
I got my wisdom teeth out on the 17th, and the videos that my dad took of me are hilarious!! I don't even remember 75% of anything that went on in them, but they make for great comedic material in retrospect. Two things were apparent to me after viewing all 14 videos- my vanity was a priority while high (I kept saying I wanted bigger lips for some reason), and I didn't lose my Spanish!! haha I'll give y'all a little peek of the insanity below!
Good news, I'm almost as good as new, and on to eating soft solid foods now. So I decided to try making spaghetti squash the other night for the first time and it turned out great!! My dinner ended up being a healthy sp.sq. pizza bowl with dairy-free cheese and it was delicious!!! I definitely plan on making it again in the future!
And last, but definitely not least, I've been getting my dance on!!!! So if y'all don't already know this about me, I do ballroom dancing, and decided (recently) to specialize in Latin dances, so I'm pumped to be working on that. I did the Winter Olympics, our in-house showcase, on Jan 13th (videos below), and I have some shows/comps coming up in the next couple of months so I'm super excited!!!! More on that later.
What are your small (or BIG!) joys that have occurred in your life lately? If you don't have an answer right now, then I challenge you to be intentional this week about seeking out joy in the small moments of your life, whether that be at work, at home, or even on the drive in between.
I absolutely LOVE THIS! So very impactful and very important for people to hear. I love your realization of finding the joy in the small things and I am definitely going to do the same this week. We have so much in life to be joyful for, yet most of us still find ourselves feeling under the weather or blah going through life. My goal this week is to be intentional about having my eyes open to finding joy in the little things! Love you girl! Thx for the inspiration!
Being okay with the season of life I'm in, right now, has been something I want to work on to! No more wishing life away!


Switchem can help you get right to work by grouping apps, windows, and files into groups that you can open all at once, right from Switchem's menubar app. Learn more about most useful app's fearures.
Learn more on how to use Disk Drill app, an all-in one solution for recovering lost data and protecting your files.
Meet an Expressions app for simpler and more efficient coding. Learn more about most popular features and begin to use regex to save development time.
Rocket Typist is a powerful text expansion app, it stores all your snippets locally, and it was just added to Setapp. Learn how Rocket Typist can save you time and hassle every day. We think you're going to love it.
Meet a new vocabulary learning app for your Mac - create your own vocabularies, take quizzes, track your progress results, and even share vocabularies through iCloud. Learn more about most powerful Wokabulary features.
How to know if your favorite applications will run in macOS 10.13? Download Setapp and get ready for upgrade to new macOS. Every app on Setapp is fully compatible with High Sierra.
Wondering what's in the archive you downloaded, but you don't want to extract it to find out? With Archiver app you can preview compressed files, and unzip only the files you need, reduce any file size, open any archives, combine and split a large files easily.
Lungo lets you change your Mac's sleep behavior easily and temporarily, with just one click.
Add recurring bills, save receipts, and keep track of your upcoming expenses all in one place.The first step to financial well-being is getting a handle on what you owe and when, and the surest way to do that is to consolidate your bills.


Welcome to Hawaiian Jewelry & Gift's General Links!
GiftIdeaGifts.com -Online gift and gift idea shopping for all gift giving occasions. Find the perfect Anniversary, Baby, Birthday, Christmas, Coporate, Wedding, Gift Certificates, Gift Baskets and more.
Unique Gift Ideas Directory - Comprehensive directory of unique gift websites.
Free link directory - SEO-friendly directory of the websites organized by topics into categories. All listings are edited and reviewed by editorsto maintain quality of the listings. Offered paid and free listings.


text:
Q: preg_replace for bbcodes: How can I improve security? In order to work with bbcodes within tinymce (standalone) I created this code:
private function regExUrl($content) {
    if(isset($content) && is_string($content)) {
        return  preg_replace(
        array('|(https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?)|', '|\[img\](.*)\[\/img\]|', '|\[b\]|', '|\[/b\]|', '|\[i\]|', '|\[/i\]|', '|\[url=../../../../\]|', '|\[/url\]|'),
        array('$1', '', '', '', '', '', '<url>', '</url>'),
        $content);

    } else {
        return $content;
    }
}

How can I improve security of that code before I integrate it into my live-website? Or is it ok?
The textbox for inserting pics and news  is within a pass-protected area.
thanks for your help

A: Exploits at first glance (there are probably more):
http://www.example.com/xxx?xxx"onmouseover="alert('XSS');
[img]javascript:alert('XSS')[/img]
[img]xxx" onerror="alert('XSS')[/img]

Additionally strip_tags() is not intended as a security function; there have been ways around it in previous PHP versions and if run with allowed-tags it is entirely insecure. Also naturally it would disallow legitimate use of the less-than symbol in comments.
(On a non-security note, it's also possible to have mismatched tags, messing up the rest of the page, and I can't work out what [url] is supposed to be doing at all.)
Writing a markup generator securely is hard. Normally that means the advice is to use a known-good library, but personally I've never seen a watertight PHP bbcode implementation (suggestions welcome). If you want to allow HTML-style markup then look at HTML Purifier. There are other simpler user-facing mini-markup languages, such as Markdown, but again finding libraries that support them properly and securely can be a challenge.

redpajama_set_name: RedPajamaStackExchange


text:
2008-2018 Crises: Have we learned anything?
The Biggest Bank Robbery of All Time by Robbers all with PhDs and MBAs in a nutshell
Photo:eureporter.co
'Explaining the Current Financial Crisis'
by Dr. Kamran Mofid, Economist
'On 10/6/08 Dr. Mofid, an internationally renowned economist, and founder of the Globalisation for the Common Good, in a letter to his subscribers, wrote the following on the current economic crisis:'
N.B. First, a bit of explanation!
I wanted to write something simple, jargon-free, easy-to-understand on the 10th Anniversary of the Financial Crisis, for all those, lucky enough, not to have a PhD in Economics (The once elegant, beautiful, moral subject, now turned into a dismal science of mumbo-jumbo). More on this later.
I began to search. I began to do the usual thing we all do first these days: The Google search!
After a while, I noticed my own name, explaining the financial crisis! What a discovery that was!
On 6 October 2008, soon after the financial crisis, I had sent an email to the GCGI email list, trying to explain a thing or two about what had happened in the month before, why and how, as well as what lessons can be learnt, etc.
Then, an organisation, 'The American Muslim (TAM)', somehow had been forwarded my email and they had decided that they should post my email on their website for a wider readership. I am most grateful to them for their insight.
After reading it again, now, in September 2018, I decided that, I can not better it, I cannot write anything more. And there you have it! True and relevant today as it was when written.
See that original email below. I have copied it, as it was written first, the email to my friends, our GCGI family. (Please note: I have not changed, edited, modified anything. It is, as it was in 2008)
Ben Bernanke, the former head of the Federal Reserve. Photo:cnn.com
The Biggest Bank Robbery of All Time in a nutshell
$29,000,000,000,000 (This is the cost of bank bailout to the US taxpayers by 2011. A clear sign of Socialism for a few-They get all the benefits and profits- and Capitalism for the many -They get all the losses and costs-).
Global Total Cost? Your guess is as good as mine!
The total cost must surely be incomprehensible.
They robbed the banks and we, the people, got the AUSTERITY!!
What Happened to JUSTICE? You may ask!
Understanding and Responding to the Financial Crisis
'Explaining the Current Financial Crisis'
( As explained in October 2008, and, as valid and true today)
Photo:i.ytimg.com
'In the last couple of weeks, 100s of billions of Dollars, Pounds and Euros of taxpayers money have been poured down the drain to bail out a non-functioning, unregulated, unaccountable financial system. The money that we were told was not there to pay for improvements in health, education, housing, transportation, pension, child care,..to name but a few. Moreover, no body has been charged yet: one law for them and another one for the taxpayers! The profits were privatised when the going was good and the costs have been socialised, now that the going got tough, heaven on earth for them and hell for the taxpayers!
Where are the market forces now, you might ask? Where are all those neoliberal economists now, singing the praises of the market, deregulation, liberalisation, privatisation, free trade, share/property-owning democracy,..? Where are they now, telling us how to maximise our profits and income, how to minimise our costs and how to exploit the natural resources, all for the sake of maximum economic growth, and then tell us how to externalise the costs and consequences to the taxpayer or to the people of Bangladesh for example, when they get flooded.
Where have they gone now? Why are they so quiet now, not sharing their wisdom on the wonders of the market and competition and scarcity with us all! I wonder if all these billions that taxpayers have given will work in rescuing the economy where mammon has taken over? My answer is: it will not, as long as the so-called experts/economists do not admit that without humanity, ethics and justice, economics and business are house of cards built on shifting sands.
Many millions of words have been written on this meltdown, on what went wrong, but not much on why it went wrong. The overwhelming majority agree on the role of one vital element: dishonesty fuelled by greed. We forget at our own peril that honesty and greed are essentially spiritual and moral issues.In the last few weeks the greed of Wall Street and the City (London financial district) has been under the spotlight. The Archbishop of York recently- and in my view correctly- called some of the traders bank robbers. "We find ourselves in a market system which seems to have taken its rules of trade from Alice in Wonderland", the Archbishop remarked. The Archbishop of Canterbury has also criticized "trading of the debts of others without accountability" and compared unfettered belief in the market with fundamentalism. This last word "fundamentalism" used by the Archbishop means a lot to me. It is the fundamentalism of economics, its teaching and MBA programmes that is, in my view, the shifting sand upon which we have built this house of cards, called economic globalisation, which has now come home to roost.
The Chicago Boys school of economic thought, has proven to be an emperor with no clothes!
As long as this curse persists, there will be no possibility of reaching the Promised Land: where we can have justice, peace, happiness and contentment.
The Curse of The Chicago Boys
As it has been noted, the so-called "famous school of economics at the University of Chicago led by the late Milton Friedman spread its market fundamentalism worldwide. Greed, selfishness, individualism and short-termism were conflated with freedom and democracy and elevated to the status of moral philosophy. The fatal flaws of this ideology has fueled the reckless risk-taking, greed and arrogance that led to Wall Street's downfall, and the loss of confidence in financial/banking sectors the world over".
Let us recall Milton Friedman's infamous single bottom line: the only purpose of private enterprise and corporations is to make as much money as possible for the shareholders. In the last few decades academics created "free market" curricula, and business schools reaped grants from corporations and from conservative and gullible liberal foundations. Media joined in promoting the "beastly spirit" of individual entrepreneurs, the glorification of business leaders and the "wealth" of Wall Street raiders, hedge fund titans and private equity kings. Money is seen as the only form of wealth".
I believe this must be highlighted, as without this understanding we cannot provide any solution or an alternative. It is immoral and an affront to humanity to spend the taxpayers money on this bail-out, without admitting what has caused the calamity to begin with. After Enron and WorldCom we were told never again, how wrong they were and how naive we were. For the last few years I have been arguing against economic/money-driven/fundamentalist/neo-liberal globalisation. As Albert Einstein has reminded us,"The world cannot get out of its current state of crisis with the same thinking that got it there in the first place". Therefore, we must change from the ideas and values of the Chicago Boys, currently the dominant or the only philosophy used in the teaching of economics and MBA programmes the world over, to a sacred and spiritual teaching of economics, rooted in ethics, morality, spirituality and the common good.
The focus of economics should be on the benefit and the bounty that the economy produces, on how to let this bounty increase, and how to share the benefits justly among the people for the common good, removing the evils that hinder this process. Moreover, economic investigation should be accompanied by research into subjects such as anthropology, philosophy, politics and most importantly, theology, to give insight into our own mystery, as no economic theory or no economist can say who we are, where have we come from or where we are going to. Humankind must be respected as the centre of creation and not relegated by more short term economic interests.
'Economic rationality' in the shape of neo-liberal globalisation is socially and politically suicidal. Justice and democracy are sacrificed on the altar of a mythical market as forces outside society rather than creations of it. However, free markets do not exist in a vacuum. They require a set of impartiality in government, honesty, justice, and public spiritedness in business. The best safeguard against fraud, theft, and injustice in markets are the cardinal virtues of justice, temperance, fortitude, and prudence, and the theological virtues of faith, hope, and charity.'
See the original source of the excerpts above
MUST READ related articles:
The Destruction of our World and the lies of Milton Friedman
Bastard Economics of Greedy Neoliberalism and the Killings of the Innocents in London Tower
People's Tragedy: Neoliberal Legacy of Thatcher and Reagan
Neoliberalism and the rise in global loneliness, depression and suicide
Student Suicides at Bristol University: My Open Letter to the Vice-Chancellor, Prof. Hugh Brady
Economics and Economists Engulfed By Crises: What Do We Tell the Students?
The 2008 Financial Crisis Explained: Hyman Minsky Revisited
Open Letter to Mark Carney, Governor of the Bank of England
The Journey to Sophia: Education for Wisdom
What might an Economy for the Common Good look like?
"Why Thieves And Crooks Now Rule The World And How To Take It Back"
The London Banker who Invented the Offshore that has broken the world
Then we might realize that in terms of value creation, it just doesn't pay to be a banker.
Lest we forget: The bankers danced all the way to the banks, whilst the masses cried all the way to misery, loss and austerity
'We need a fairer form of capitalism: 'An economy for all'
A radical overhaul of Britain's economy is needed to address chronic disparities in living standards since the 2008 financial crash, according to the IPPR thinktank. Its commission on economic justice argues in a report published today that the shareholder-driven model of capitalism is outmoded, with the UK held back by a culture dominated by decades of short-term profit taking, weak levels of investment and low wages.

redpajama_set_name: RedPajamaCommonCrawl


Definition at line 138 of file Tensor3_minus_Tensor3.hpp.
Definition at line 151 of file Tensor3_minus_Tensor3.hpp.
Definition at line 146 of file Tensor3_minus_Tensor3.hpp.
Definition at line 141 of file Tensor3_minus_Tensor3.hpp.
Definition at line 142 of file Tensor3_minus_Tensor3.hpp.


Vienna Insurance Group (VIG) continued its stable upward trend in 3Q 2018, achieving a further improvement in key figures. Given the positive development, VIG disclosed for the year end a GWP EUR 9.5 billion target and a result before taxed expected figure of EUR 450 - 470 million.
The Bulgarian holding EROHOLD said its 3Q2018 revenues from insurance activity amounted to BGN 667.3 million (EUR 342 million). Compared to the same period in 2017, the revenues from insurance activity decreased by 6.6%.
VIG Re opens its second branch, in Paris, in November 2018. This marks the next step in the planned expansion of the Vienna Insurance Group's (VIG) reinsurance company in the West European market.
CROATIA osiguranje is the 2018 winner of the "Zlatna Kuna" award in the insurance industry, a recognition of the relevant role played by the company in the local financial market, presented by the Croatian Chamber of Economy.
"Fifteen years after its introduction, title insurance continues to play a growing role in the CEE real estate market," Jean-Bernard WURM, Co-Founder & Managing Director of Secure Legal Title, London said talking to Property Forum about the trends in the CEE region's real estate sector.
ALLIANZ announced that it has received approval from the China Banking and Insurance Regulatory Commission (CBIRC) for the preparatory establishment of an insurance holding company in China.
The 5th Middle East Insurance Industry Awards (MIIA) gala dinner held in Dubai on 26 November saw Zurich Insurance winning for the second consecutive year the Reinsurance Company of the Year award.
AXA announced that it will involve also AXA XL, its new division created after the XL acquisition, in the Group's sustainability and climate strategy, in an effort that might cost up to EUR 100 million in GWP, as well as EUR 660 million in divestment related to AXA's investment exclusions policy.
The innovation race is on in insurance, to deliver relevant product and services for the modern customer. Join UBER, Zurich, Direct Line Group in an investigation on what products must look like, and in a practical sense, how insurers are going out to achieve this.
The XVII Annual November Business Meetings (NBM) for Reinsurers took place on November 21-22, 2018 in Moscow in the Modern Business Center located in the historic building in the very center of Moscow, according to the post release of the Delovoy Format Group.
According to the Chairman of the Azerbaijan Insurers Association (AIA) Mustafa ABBASBAYLI, MTPL on the Azeri insurance market is reaching its peak, Trend News Agency informed.
Azerbaijani QALA Insurance plans to collect AZN 16 million in premiums by the end of 2018, which would mean a 54.1% y-o-y growth, Deputy Chairman of the company Taleh YUSIFOV said recently, quoted by Trend.
Insurance market of Moldova as of the end of September went up by 2.27% y-o-y. At that, thanks to the favorable exchange rate evolution against euro, the market growth in European currency amounted to 7.36% (GWP of EUR 55.27 million).
Swiss Re is ready to extend its presence in Kazakhstan, according to the agro insurance underwriter of Swiss Re for Eastern Europe, Russia, Ukraine and Kazakhstan, Marcel ANDRIESSE (Senior underwriting Agriculture).
Claims paid to farmers in 1H2018 reached RUB 706 million, while only 625 thousand hectares out of the total volume of 1.2 million hectares affected by natural disasters were covered by insurance, informed Korney BIJDOV at the annual forum "Insurance business during the era of changes", on October 30, 2018 in Moscow.
UNIQA Group's Ukrainian subsidiaries, UNIQA and UNIQA Life, generated GWP in the amount of UAH 2 billion (~EUR 60.37 million) in 3Q2018, which is 27.1% more y-o-y, as Forinsurer informed.
Insurance reserves of Ukrainian insurers as of the end of September amounted to UAH 24.8 billion (+15% y-o-y; ~EUR 748.6 million), according to the member of the National financial services committee of Ukraine, Alexander ZALETOV.
This year, the Czech insurance market has been highly influenced by new legislation. It is not easy to cope with all the changes. It is a challenge, but also a chance to improve what works and to change what does not work well so that our obligations and requirements favour the customers, make insurance products more accessible, and we can improve the understandability of every deal.
Better customer protection is a priority for me, but I suppose that overregulation by the EU in any field, even though well-meant, can bring about just the opposite. It creates a stressful environment which drains resources and hinders creativity and innovation.
The Supervisory Board of ALLIANZ SE extended Oliver BAETE's contract as Chairman of the Board of Management until September 2024. The original contract was to expire end of September 2019.
KNF- the Polish Financial Supervision Authority has announced the appointment of Jacek JASTRZEBSKI as Chairman of the market regulator, replacing Marek CHRZANOWSKI who resigned amid corruption allegations.


Representatives of international schools who participated in the first "Art and Creativity School Fair" were graciously entertained by the Ambassador of Colombia H.E. Mr. Andelfo Garcia and Mme. Astrid Amaya-Garcia at their Residence on October 5. It was a most enjoyable and fun-filled evening.


I got a couple of Autumn digi kits at Shabby Miss Jenn Designs and I just had to sit down tonight and play with them. I absolutely LOVE Autumn and everything about it and I just couldn't resist getting the beautiful kits offered there! I am a huge fan of all things vintage, so the kits offered at Shabby Miss Jenn Designs are right up my alley!!!!
I'm following you now!!! :) Your bog is too cute!
You do digital as well as you do real paper scrapping! I love this kit! Do you get as much joy from a digital kit as you do the real thing?


Two weeks ago I had the pleasure of exploring this beautiful section of the Oregon Coast Trail with one of my best friends. The trip was a spectacular reminder of how rewarding and diverse backpacking can be. James and I were both blown away by the pristine seclusion of this 30-mile stretch of Oregon coast. I highly recommend placing this trip on your Oregon backpacking to-do list. You will not be disappointed.


text:
36 published items with the word (s) or phrase Malo in News, Trends, Videos, Photo galleries, Agenda and sorted by "date descending".
Marni renews contract with Creative Director Francesco Risso
...York and at Central Saint Martins in London. His career started with stints at Anna Molinari, Alessandro Dell'Acqua and Malo. Before joining Marni in 2016, he spent eight years at Prada, working on womenswear colle...
Rochas and Alessandro Dell'Acqua part ways
...young, starting out as creative director of Genny at the age of only 23. Since then, he was worked at La Perla, Brioni, Malo and Les Copains, and last year signed off on a collaboration with Tod's. Three years ago,...
Massimo Alba, and the beauty of being of independent
...from Treviso, Alba opened his eponymous label in Milan a decade ago. That was already after a long career; designing for Malo (for 17 years) and then Agnona before being part of team that acquired, and right-sized...
Fashioning a life behind bars in Panama
...clothes, accessories and decorative objects -- all made by inmates.Panama's Chancellor and Vice President, Isabel de Saint Malo, the deputy minister of Finance, Eyda Varela Chinchilla; Deputy Minister of Social Dev...
Russia new destination for leading global retailers
...(Sweden), OBI (Germany) and Auchan (France).Among the retailers making their Russian debut in 2015 were Tsumori Chiasto, MCS, Malo, Nelva and Henry Cotton's. Overall, the most significant proportion of these newcom...
Malo re-launches and is strengthen by growth
...Following an unstable period, Malo has returned to the front of the stage with a completely new look. The Italian brand, specializing in cashmere, has reworked its offerings by repositioning itself in the high end ...
Alessandro Dell'Acqua named creative director at Rochas
...designer will continue to work on his own label N°21. Prior to his appointment at Rochas, Dell'Acqua had worked for Brioni, Malo, La Perla and Mariella Burani.
Italian fashion exec arrested for bankruptcy fraud
... Paris Group.Subsidiaries including Ittierre, which produces accessories for major fashion brands, and cashmere-maker Malo have also been sold off.
US company to buy distressed Ferre fashion house
...brand Valentino, which is controlled by private equity group Permira [PERM.UL]. Italian group Exa bought It Holding's Malo cashmere brand in August for about 8 million euros, with the aim of launching a new collec...
One foreigner among 8 bids for Malo cashmere
...Italian cashmere brand Malo has attracted eight bids, seven of which are home-grown, a source with knowledge of the situation said, after the fashion line was put on offer by administrators of parent IT Holding.


Pune: 39-year-old software engineer Neville Bomi Battiwala was beaten to death by three persons early on Saturday after he objected to vehicles being parked outside the gate of his bungalow in Lulla Nagar in Pune.
Kondhwa police have arrested three persons – Shriganesh Jaywantrao Raskar (31), Yogesh Dinu Kadwe (22) and Vikram Lakshman Bhombe (31) — for the crime.
A senior police officer of Kondhwa police station said that Raskar runs a transport business, and his driver used to park the vehicles in front of the gate of Battiwala's bungalow.
"Battiwala often objected to it. On Friday night, the deceased had another argument with Raskar over the issue that led to the scuffle," said the officer.
NB Battiwalla lived in Sahani Park with his mother and had moved back to India a couple of years ago, after working abroad for a long time.
He was attacked just outside his bungalow and he died on the spot.
A security guard of a nearby building described the victim as a friendly and loving person. "We used to see him strolling in lane number three," the guard said.
A relative of the victim said his funeral will be performed after his mother reaches Pune from Mumbai.


I took these pictures on a 5-day backpacking trip with Ed, Michael, and Alyson in the John Muir Wilderness in August 2002.
Here is a map with our route indicated. You can see where this area is on a larger map.


text:
Barcelona Match Recaps
Barcelona: La Liga
Barcelona vs Mallorca, La Liga: Final Score 2-1, Barça play well, win at home
A crucial win in the Top 4 race
By Renato Gonçalves May 1, 2022, 10:52pm CEST
Share All sharing options for: Barcelona vs Mallorca, La Liga: Final Score 2-1, Barça play well, win at home
Barcelona returned to winning ways and are now just three points away from a Top 4 finish in La Liga thanks to a 2-1 victory over Mallorca on Sunday night. Barça played well, scored one goal in each half and were the better team for the entire night, and the game wasn't nearly as close as the score suggests.
The week off clearly helped a Barça team that played with as much intensity and pace as we've seen in a while and were in full control against a Mallorca side that showed some threat on the counter but were never able to match the Blaugrana's desire and ferocity.
Xavi Hernández's team wanted to get to the final third as quickly as possible and were very fast in possession, dominating the ball but being very direct with it trying to find Pierre-Emerick Aubameyang and Memphis Depay as much as they could.
Memphis was especially impressive in the first half, looking for the ball and constantly making great runs in behind the defense which got him a goal: after a brilliant long pass from Jordi Alba to pick up one of those runs by Memphis, the Dutchman showed great poise to chest the ball down and find the bottom corner with a sweet finish.
Barça could have easily scored another goal or two, with Aubameyang having a header well saved by Sergio Rico and Ronald Araujo finding the back of the net with a header of his own only to see the goal disallowed for offside.
At halftime Barça were very much in control but only had a one-goal lead, and they needed to keep up the good work to find more goals and confirm the victory.
Barça needed to get a quick goal to avoid any trouble against a Mallorca side that had some good moments in the first period, and they got it just nine minutes into the final period thanks to Sergio Busquets, who was first to the rebound after a Ferran Torres attempt and found the bottom corner with an excellent left-footed strike.
The Blaugrana were in cruise control after doubling their lead as they continued to dominate possession and attack with Memphis looking very hungry to score another goal. Barça did score a third with 20 minutes to go, but Ferran was offside and the hosts had a second goal denied by the flag on the night.
After spending most of the second half on the back foot and looking defeated, Mallorca decided to attack and made the final 10 minutes very interesting when captain Antonio Raíllo scored with his knee to give the visitors some hope.
Barça did a very good job of running out the clock by keeping possession, and although they couldn't add a third goal they were never at risk of conceding the equalizer and were able to confirm the victory at the final whistle.
The score doesn't reflect at all what we saw on the pitch as Barça were the better team the whole night and could have easily scored four or five with better luck on the offside calls. This was a good performance and a crucial result in the Top 4 race, and now Barça can clinch a Champions League spot if they beat Real Betis next week. Good stuff, boys!
Barcelona: Ter Stegen; Alves (Lenglet 89'), Araujo, Piqué (Eric 28'), Alba; F. De Jong, Busquets, Gavi; Ferran (Fati 75'), Aubameyang (Dembélé 75'), Memphis
Goals: Memphis (25'), Busquets (54')
Mallorca: Rico; Maffeo, Russo, Raíllo, Valjent, Oliván; Sánchez (S. Sevilla 70'), Battaglia (Lee 70'), Rodríguez (Grenier 60'); Ángel (Hoppe 89'), Niño (Kubo 60')
Goal: Raíllo (79')
Madrid draw leaves Barcelona five points clear at top of La Liga The lead has been extended after an intriguing weekend
Ousmane Dembélé injury could be worse than first feared The forward could be out about six weeks
Bellerin 'close' to leaving Barcelona for Sporting - report A late move is on the cards


The Presidential Amnesty Programme, PAP, has produced an 18-year- old Boubini Jones-Wonni, as best graduating student from Miles College, Metropolitan Birmingham, Alabama, United States of America, USA.
Jones-Wonni who was declared by the university authority as best graduating student on May 5, 2018, got her admission in 2014 after making the best result in the Senior Secondary School Certificate Examination, SSCE, at the Word of Faith Group of Schools in Abuja and was also the best student at age of 14.
She hails from Arogbo in Ondo State and was one of the children from the Niger-Delta states that sat for a special exam conducted by KAPLAN in Lagos to select the best to study in the university under the PAP, by a former Coordinator and Adviser on the PAP to former President Goodluck Jonathan, Hon. Kingsley Kuku.
She was initially granted admission by the University of Alabama, Birmingham, USA, at age 15 to study Medicine, but could not make it to the school due to late resumption.
She therefore settled for Miles College in Alabama to pursue her first degree in Biology. Born on October 23, 1999, she started her education at Banky's Private School in Abuja, where because of her intelligence, she was asked to enroll for the common entrance at primary three. She made the best result and was admitted into Word of Faith Group of Schools in Abuja, where she sat for the 2013/2014 SSCE and had an outstanding result with 'As' and 'Bs' in all her subjects, and was made valedictorian of the year.


Although the swift rise and fall of the Muslim Brotherhood in Egypt over the last year and a half has been fraught with protests, counter-protests, and violent confrontation, both supporters and opponents of the Islamist organization realize that the group provides an important array of services to the less fortunate in Egypt.
A More Medical Middle East?
Can the Middle East profit from the boost in international medical tourism?


CLEVELAND (AP) — Supporters of Ohio's Democratic U.S. senator have launched a "Committee to Draft Sherrod Brown" for a 2020 presidential run.
Cleveland attorney Michael Wager and Dayton Mayor Nan Whaley are heading the effort, which they say will promote Brown's messages on economic growth and "the dignity of work." Community events and digital organizing are also planned and a website is up.
Brown of Cleveland won a third term in November in an election that stood out in Ohio amid sweeping Republican successes in a state that Republican President Donald Trump carried in 2016. Brown says his victory showed Democrats can win by fighting for workers without compromising progressive values, although he hasn't made a decision on 2020.
Brown is among dozens of Democrats who are considered possible 2020 candidates.


Helping buyers and sellers navigate their way through the Charlotte real estate market.
In my nearly 15 years living in the Charlotte area, I have seen exponential growth in real estate and local businesses. I specialize in selling residential real estate, particularly in South Charlotte and Union County – Waxhaw, Weddington, Marvin, Indian Trail.
Allow me to help you navigate your way to the open land and beautiful 'burbs just south of the city of Charlotte. I am also licensed in South Carolina and actively sell in Fort Mill and Indian Land, just a short drive to all that Charlotte has to offer.


text:
Drunken teacher drove at 70mph on wrong side of icy dual carriageway
A drunken teacher terrified motorists by driving at up to 70mph the wrong way along one of Britain's busiest roads in freezing conditions. Mum-of-three Catherine Dean was nearly three times over the drink-drive limit when she sparked a police emergency after horrified motorists saw her heading north on the southbound A1 dual carriageway.
Teacher Catherine Dean
A drunken teacher terrified motorists by driving at up to 70mph the wrong way along one of Britain's busiest roads in freezing conditions.
Mum-of-three Catherine Dean was nearly three times over the drink-drive limit when she sparked a police emergency after horrified motorists saw her heading north on the southbound A1 dual carriageway.
Dean, 42, of Gregory Fold, Rossendale, was finally stopped in her silver Mazda by officers after travelling for more than four miles in the wrong direction. During the journey on the icy and snowy road she reached speeds of between 60 and 70 mph in the fast lane of the wrong carriageway.
When police finally pulled Dean over and breathalysed her she gave a reading of 94 micrograms of alcohol in 100 millilitres of breath – the legal limit is 35. One officer said it was the worst case of driving he had ever seen, Nottingham Crown Court was told.
Dean was spared jail after pleading guilty to driving with excess alcohol and dangerous driving. Robbie Singh, prosecuting, said police had a call at around 4.50am on January 8 to report a car travelling in the wrong direction near Newark, Notts.
He said: "These were not good driving conditions at all. There had been several days of snow, including that night.
"The officers estimated she was travelling at between 60 and 70mph and swerving between both lanes and into the central reservation where the snow was quite thick. The officers watched as one car had to avoid a collision before the Mazda swerved into the path of an oncoming lorry.
"They managed to get alongside her but it took several seconds for her to notice them.
"She was still swerving as they tried to get her to pull into a petrol station but she wasn't able to do so. She then swerved into the central reservation on to the snow and came to a stop."
Mr Singh said when officers opened the car door they were met with the 'strong smell of alcohol'.
He said: "There was a half-empty bottle of wine in the driver's door compartment and unopened bottles on the passenger seat. She was unsteady on her feet and muttering gibberish. One officer said it was the worse case of driving he had ever witnessed."
In interview Dean claimed to have had 'a couple of glasses of wine' during a night out in Lincoln before going to bed in a hotel near Newark. She claimed she was woken in the early hours by a bad asthma attack and decided to look for a hospital.
Dean said 'it was dark and misty' and the next thing she knew she was being pulled over by the police.
Christopher Jeyes, defending, said: "Thankfully no injuries were caused but she realises this was more through luck than any judgement on her part." He said Dean suffered from multiple sclerosis and cared for a daughter with cerebral palsy.
Judge Dudley Bennett sentenced Dean to 12 months in prison suspended for two years. She was also banned from driving for 18 months, ordered to observe a 7pm to 6am curfew for six months and told to carry out 80 hours of unpaid work.
He told her: "This was a horrendous piece of dangerous driving topped up with drink.
"If there hadn't been all that snow and people weren't staying off the roads you may well have killed someone – most probably yourself. I don't believe you intended to drink and drive. I believe you, when in drink, panicked and went looking for a hospital."
Follow @MENNewsdesk
Manchester weather
CrimeVillage terrorised by 'grunting' man in gimp suit who keeps jumping out at strangers'Every time I close my eyes I just see that face'
Hale and Hale Barns'Kind, humble and incredibly bright' - Yousef Makki's family pay stirring new tribute to the teenRelatives told how 17-year-old Yousef, a Manchester Grammar School student, was 'a perfect role model' for younger family members
Special FeaturesIs this the future of pharmacies? The Greater Manchester chemists using vending machines to dispense prescriptionsBeat the queues at Well Pharmacy with this innovative new approach


text:
Indian teen on her 'golden opportunity' as UK High Commissioner for a day
Nadia Hatink
13 Oct, 2020, 10:30 am
An 18-year-old student from New Delhi had the unique opportunity recently to spend a day as the UK's senior-most diplomat in India.
As top boss overseeing the UK's largest overseas network, Chaitanya Venkateswaran's packed day last week included handing out tasks to the High Commission's department heads, interacting with senior female police officers, meeting the press, and launching a study tracing the impact of British Council STEM [science, technology, engineering and mathematics] scholarships on Indian women participants.
Chaitanya is the fourth young woman to take over as British High Commissioner in an annual competition run by the UK mission, aiming to empower the next generation of women as leaders and trailblazers, and to highlight some of the challenges women and girls around the world still face. The competition is run in celebration of International Day of the Girl Child, marked globally on October 11.
Chaitanya, High Commissioner for the Day, said: "I used to visit the British Council Library in New Delhi when I was younger, and that's where I cultivated my love of learning. Building on that knowledge, to be the British High Commissioner for a day was a golden opportunity. My day was full of diverse experiences which have really broadened my perspective on the role of women and their representation in fields of media, policing and STEM.
"I am now more determined than ever to use my new knowledge and experience to help promote equitable treatment of women everywhere."
In line with Covid-19 health and safety precautions, Chaitanya participated in the day via video conference, but was happy to meet Acting High Commissioner Jan Thompson (pictured) at a later date for a socially distanced walk.
Jan Thompson, Deputy High Commissioner for the special Day, said: "This competition is one of my favourite moments of the year – an opportunity to provide a platform to extraordinary young women, and show how the UK and India are sharing expertise to ensure women and girls reach their full potential around the world.
"I was thrilled to relinquish my duties to Chaitanya for the day and was impressed with how confidently and competently she took on this role, a deserving winner out of an incredible 215 entries.
On the side-lines of her very busy day as High Commissioner, we also enjoyed discussing our mutual love of the arts. I look forward to seeing what Chaitanya achieves next, as she joins a cohort of young women whose voices we have been proud to amplify through this annual initiative; the next generation of global leaders."
The British High Commission in New Delhi has run the "High Commissioner for a Day" competition annually since 2017, inviting young Indian women aged 18 to 23 to take over as their most senior diplomat. The British High Commission said the competition is reflective of the work the UK and India are doing together to help ensure women and girls can reach their full potential.
This year, entrants were invited to submit a one-minute video on social media, answering the question: "What global challenges and opportunities do you see for gender equality in the age of Covid-19?"
Chaitanya, who emerged the winner to take charge of the mission on October 7, is pursuing a Bachelor's degree with a full scholarship in International Studies and Economics, and certificate programmes in Advanced Leadership Studies and Political Thought at American University, Washington DC, studying remotely.
An active volunteer, she has worked to aid visually-impaired students, acid attack survivors and marginalised LGBT+ groups. She is also a trained classical dancer, an art enthusiast and avid reader. She aims to pursue a career in economics and global public policy.


text:
FT Architects
light sheds . Kanagawa
FT Architects . photos: © Shigeo Ogawa
The light sheds is a photographer's studio that stands in the garden of his existing house, located in the hilly region of southern Kanto. The space is solely composed of essential functions required for a photographic studio and the result is one single room of 4.5m by 7.2m. From the start, we had a simple concept of creating a simple, pragmatic sheds.
Pragmatism + Symbolism
In order to form a large volume out of the limited budget available, a timber frame, gable roof structure was selected. However, a gable roof would typically entail horizontal joists, which would reduce the clear height required for photo shoots. Following simple geometric rules, the roof was distorted into a multi-facetted, asymmetric form. Three ridge beams at the folding lines support the roof structure, negating the need for any horizontal members that may compromise the height of the room. Logs were selected for the ridge beams, for their ability to accommodate the complex assembly of timber rafters at various angles. Translucent polycarbonate panels reveal the "back of the stage set" timber framework of the walls.
Like artists' ateliers, photographic studios require ample ambient light. Direct sunlight creates overly strong contrasts that would result in unnatural portraits. A combination of skylights at 45 degrees and a clerestory let in diffused light from two different angles from above. Together with the wide windows on the side facing onto the lush garden, the interior, although enclosed, is always as bright as the external environment. It has the duality of being both outside and in, blurring the conventional architectural boundaries.
Ever since the practice's first project, c-office, an office for a Japanese timber manufacturer, application of pragmatic structural solutions has been the core to our approach in all projects. We have also been continually exploring ways to inherit and translate the purity of traditional Japanese timber compositions into modern construction. Here, while the log beams were employed as pragmatic means to fulfil the brief, they also bring along symbolic associations of being one of the oldest building material. In this project, we were able to test the modern significance of this primitive material through using it as a meaningful device to create a man-made enclosure where photographic subjects can be exposed in "natural" light.
work title : light sheds
completion : 2014
location : Kanagawa, Japan
principal use : photo studio
total floor area : 33.12m2
structure : wood
architect : Katsuya Fukushima, Hiroko Tominaga / FT Architects
Etiquetas: FT


# Memory Allocation ###### tags: `sysprog` [討論區連結](https://gitter.im/embedded2015/guts-general) :::info 主講人: [jserv](http://wiki.csie.ncku.edu.tw/User/jserv) / 課程討論區: [2016 年系統軟體課程](https://www.facebook.com/groups/system.software2016/) :mega: 返回「[嵌入式作業系統設計與實作](http://wiki.csie.ncku.edu.tw/sysprog/schedule)」課程進度表 ::: - [ ] [雜記: What a C Programmer Should Know About Memory](http://wen00072.github.io/blog/2015/08/08/notes-what-a-c-programmer-should-know-about-memory/) **動態記憶體分配對Realtime System的影響** * 一般DSA(Dynamic storage allocation)演算法針對平均執行時˙間做優化,WCET(worst-case execution time)可能很差 * Realtime tasks通常執行時間長(比起non-realtime tasks),fragmentation會對其造成更大的影響 **Glibc malloc()分配記憶體的方式** * keywords: anonymous memory, break point, buddy memory allocation * 參考文件: [glibc 記憶體管理行為](http://reborn2266.blogspot.tw/2011/11/linux-user-space.html), Linux system programming Ch.8 * Glibc有兩種分配記憶體方式,依照malloc()記憶體需求參數的大小決定使用哪種(default threshold = 128 KB,可調整) 1. 分配heap上面的空間(使用`brk()`或`sbrk()`) => small allocations 2. 分配anonymous memory(使用`mmap()`) => large allocations * 相較於file mapping而言,anonymous memory是指沒有對應檔案系統的記憶體區塊,如process的heap和stack * [memory mapped page and anonymous page](http://stackoverflow.com/questions/13024087/what-are-memory-mapped-page-and-anonymous-page) , [Anonymous Memory](http://flylib.com/books/en/2.830.1.111/1/) * Heap的結束位址(頂端)稱作break point,可利用`brk()`或`sbrk()`系統呼叫,改變此位址來擴展或縮減heap的大小 * 若heap頂端記憶體空間被分配出去,即使低於它位址的記憶體空間已經被釋放,系統也無法透過`brk()`調整heap size,造成**internal fragmentation**,影響效能 * 若heap頂端為空,且heap size比起其中已被分配的記憶體量大出許多的時候,glibc才會去縮減heap的空間 **membroker** * 程序彼此合作,透過membroker調節記憶體空間的機制 * membroker記錄了所有client process、每個client已分配的memory大小,以及剩餘的的記憶體總量(global quota),client可以向membroker要求分配記憶體 * 兩種clients * Simple : 可以request memory與return quota (free) * Bidirectional : 可以接受membroker的give back請求,釋放自己的quota * give back可分normal或urgent * client可能以free cache、garbage collection的方式回應give back * 兩種request quota * Low urgency (REQUEST) * 會等待membroker送normal give back,但無法取得多餘quota時不會block * 可能會allocate比request更少的memory * High urgency (RESERVE) * 送reserve(urgent) give back,無法取得多餘quota時會block * 若成功,一定會allocate request的量 **System-wide Memory Management for Linux Embedded Systems** What is anonymous memory? * buddy memory allocation scheme brk() is bad for other realtime threads !(https://hackpad-attachments.s3.amazonaws.com/embedded2016.hackpad.com_kS5wHum1S54_p.576721_1460692512834_undefined) `down_write(current->mm->**mmap_sem**)` 會造成indefinite waiting Glibc cannot shrink heap until highest allocated object is freed [VMA](http://www.jollen.org/blog/2007/01/linux_virtual_memory_areas_vma.html) 常用的動態記憶體分配演算法 * Sequential fit(First fit) * 在free list(list of free block)上依序找尋第一個出現的合適空間,複雜度為O(n) * free blocks排列的方式會有不同的效果 * 增進locality of reference * Increasing size(best fit) * Decreasing size(worst fit) * Segregated Free Lists * 基於每個程序的memory request通常只有幾種固定的block size,使用array of blocks儲存多個free lists,每個free list中的block size不同 * Buddy System * Segregated Free Lists演算法的變形,在記憶體的分割和合併上較有效率 * 分配出去的記憶體區塊大小被限定,通常是最小單位 * k,k通常是2的指數或是費式數列元素 * 會產生很多internal fragmentation * Indexed Fit * 採取其他資料結構(例如binary tree)儲存free block資訊(大小、位置等)以改善list在搜尋上的缺點 * Bitmap Fit * 使用[bitmap](https://www.wikiwand.com/en/Bitmap_index)做為free blocks的索引,佔用空間小(通常為32 bits),可減少cache miss,降低response time **[TLSF(Two Level Segregated Fit)](http://www.gii.upv.es/tlsf/files/ecrts04_tlsf.pdf)** * _[Dynamic Storage Allocation A Survey and Critical Review](http://www.cs.northwestern.edu/~pdinda/icsclass/doc/dsa.pdf) 這篇論文整理了1961-1995關於記憶體分配的研究_ * 結合Segregated Free Lists和Bitmap Fit * TLSF讓動態記憶體的分配和回收(allocation & deallocation)複雜度能達到Θ(1),同時也減少fragmentation的大小 * 特性 * immediate coalescing * Good-fit strategy !(https://hackpad-attachments.s3.amazonaws.com/embedded2016.hackpad.com_kS5wHum1S54_p.576721_1462290952995_undefined) The first-level array divides free blocks in classes that are a power of two apart (16, 32, 64, 128, etc.); and the second-level sub-divides each first-level class linearly. * [An Improvement of TLSF Algorithm](https://people.kth.se/~roand/tlsf.pdf) * [TLSF代碼分析](http://blog.csdn.net/william198757/article/details/51452514) * [tlsf-bsd](https://github.com/jserv/tlsf-bsd): 重新實做的 TLSF,BSD 授權 (而非原本的 GPL) **TLSF特性的比較** **dlmalloc / ptmalloc2** * immediate coalescing * 在ptmalloc中,fast bin是不立即合併的,此可以增加tiny request的處理速度,省下分割block的時間。TLSF立即合併可減少fragmentation,但降低效能。 * size streagy * 在ptmalloc中,不同size使用不同的結構,fast與small bin在有block時速度快;但large包含segregated best fit與sorting,可能無法保證worst case。ptmalloc考慮到large request通常並不多,為在有限的free list下減少fragmentation而設計。TLSF則為了保證worst case並降低複雜度而使用相同策略。 * block header * 兩者的block基本上相同,皆包含size、free list pointer與previous block。但在TLSF中previous block使用pointer而非size,且不會被用於data。 * free list * ptmalloc使用segregated free lists,並在512bytes以下的bin間距採最小間距,但在large block的覆蓋率相對較小(故需要sort & find)。TLSF為了能使large block保持O(1),故採用現今的雙層結構,增加bin的數量,並利用bitmap降低搜尋所需時間(clz),但在small block則較慢(雙層reference、需要分割)。 * 在[An Improvement of TLSF Algorithm](https://people.kth.se/~roand/tlsf.pdf)中,作者提議在small block也使用最小間距。 * last remainder / unsorted * 為ptmalloc為利用caching / 提高平均效率所設計,TLSF沒有類似功能。 * ptmalloc不適合real time之處 * 在malloc中,若small /fast沒有exact fit,或large request,ptmalloc會進入consolidate fastbin -> unsorted bin loop -> find best fit的過程,其worst case是無法保證的。 **scalloc** * O(1) allocation * 兩者皆有segregated的特性,並皆不包含seearch best fit的成份。TLSF miss時,往上找good fit,並使用clz等加速;scalloc在沒有hot與reusable時,進span-pool找新span,在span-pool miss時,需要loop span-pool。兩者的list大小皆不變,故皆為O(1),worst case則推估為TLSF較佳。 * memory assumption * TLSF可以在沒有MMU、paging的環境下使用,在有的情況下則可memlock以減少latency。scalloc依賴demand paging運作,幾乎所有的fragmentation都由paging處理。 **Understanding glibc malloc (ptmalloc2)** **Memory request size** * 大request(>= 512 bytes) : 使用best-fit的策略,在一個range(bin)的list中尋找 * 小request(<= 64 bytes) : caching allocation,保留一系列固定大小區塊的list以利迅速回收再使用 * 在兩者之間 : 試著結合兩種方法,有每個size的list(小的特性),也有合併(coalesce)機制、double linked list(大) * 極大的request(>= 128KB by default) : 直接使用mmap(),讓memory management解決 **arena and thread** arena即為malloc從系統取得的連續記憶體區域,分為main arena與thread arena兩種。 * main arena : 空間不足時,使用brk()延展空間,預設一次132kb * thread arena : 使用mmap()取得新記憶體,預設map 1mb,分配給heap 132kb,尚未分配給heap的空間設定為不可讀寫,1 mb使用完後會再map一個1 mb的新heap 每個thread在呼叫malloc()時會分配到一個arena,在開始時thread與arena是一對一的(per-thread arena),但arena的總數有限制,超過時threads會開始共用arena: * 32 bit : 2 * number of cores * 64 bit : 8 * number of cores 此設計是為了減少多threads記憶體浪費,但也因此glibc malloc**不是lockless allocator**,對於有許多threads的server端程式來說,很有可能影響效能 * [github mysql switch to TCmalloc](https://github.com/blog/1422-tcmalloc-and-mysql) 可能跟這個問題有關 www.google.com.tw/?gws_rd=ssl **Heap data structures** * **[malloc_state](https://github.com/sploitfun/lsploits/blob/master/glibc/malloc/malloc.c#L1671) (Arena Header)** : 每個arena一個。紀錄arena的資訊,包含bins (free list), top chunk, last remainder chunk等等allocation/free需要的資訊。其中main arena的header在data segment(static),thread的在heap中 * **[heap_info](https://github.com/sploitfun/lsploits/blob/master/glibc/malloc/arena.c#L59) (Heap Header)** : 在thread arena中,每個arena可能有超過一個heap。紀錄前一個heap、所屬的arena、已使用/未使用的size * **[malloc_chunk](https://github.com/sploitfun/lsploits/blob/master/glibc/malloc/malloc.c#L1108) (Chunk Header)** : 一個heap被分為許多區段,稱為chunk,是user data儲存的地方,又依使用狀態分為free與allocated。紀錄chunk本身的size與型態 _Main arena vs Thread arena :_ !(https://hackpad-attachments.s3.amazonaws.com/embedded2016.hackpad.com_kS5wHum1S54_p.606235_1462612773104_undefined) _multiple heap Thread arena :_ !(https://docs.google.com/drawings/d/150bTi0uScQlnABDImLYS8rWyL82mmfpMxzRbx-45UKw/pub?w=960&h=720) **Chunks** * 可用來分配或正在使用中的記憶體區塊,分為allocated與free * chunk的大小在32bit下最小16 bytes,對齊8 bytes;64bit下最小32 bytes,對齊16 bytes * 需要至少4個word作為free chunk時的field _Allocated chunk :_ !(https://hackpad-attachments.s3.amazonaws.com/embedded2016.hackpad.com_kS5wHum1S54_p.606235_1470748227961_embedded2016.hackpad.com_kS5wHum1S54_p.png) * [prev_size](https://github.com/sploitfun/lsploits/blob/master/glibc/malloc/malloc.c#L1110) : 如果前一個chunk是free chunk,包含前一個chunk的size,若是allocated,則包含user data * [size](https://github.com/sploitfun/lsploits/blob/master/glibc/malloc/malloc.c#L1111) : 此chunk的大小,最後3bit作為flag使用 * [PREV_INUSE](https://github.com/sploitfun/lsploits/blob/master/glibc/malloc/malloc.c#L1267) (P) : 前一個chunk是allocated * [IS_MMAPPED](https://github.com/sploitfun/lsploits/blob/master/glibc/malloc/malloc.c#L1274) (M) : 是mmap取得的獨立區塊 * [NON_MAIN_ARENA](https://github.com/sploitfun/lsploits/blob/master/glibc/malloc/malloc.c#L1283) (N) : chunk是thread arena的一部分 _Free Chunk _: !(https://hackpad-attachments.s3.amazonaws.com/embedded2016.hackpad.com_kS5wHum1S54_p.606235_1470748252646_embedded2016.hackpad.com_kS5wHum1S54_p%20(1).png) * [prev_size](https://github.com/sploitfun/lsploits/blob/master/glibc/malloc/malloc.c#L1110) : 因兩個free chunk會合併,只會出現在fast bin的情況下 * fast bin的chunk在free時不會做合併,只有在malloc步驟中的consolidate fastbin(fast /small bin miss)才會合併 * 下一個chunk的PREV_INUSE flag平時是不set的 * [fd](https://github.com/sploitfun/lsploits/blob/master/glibc/malloc/malloc.c#L1113)(Forward pointer) : 指向在同一個bin中的下一個chunk * [bk](https://github.com/sploitfun/lsploits/blob/master/glibc/malloc/malloc.c#L1114)(Backward pointer) : 指向在同一個bin中的上一個chunk **Bins** bins是紀錄free chunks的資料結構(freelist),依據其大小和特性分成4種 : (以下的數值為32bit系統,64bit *2) !(https://hackpad-attachments.s3.amazonaws.com/embedded2016.hackpad.com_kS5wHum1S54_p.606235_1465029316592_undefined) _Fast Bin _: * 10個bin * 使用linled lisk,malloc時allocate最後一項(pop from top) * chunk大小在16~最大80(可設定,預設64)byte之間 * size : 每個bin差8 bytes * 不執行合併 : 在free時不會清除下一個chunk的PREV_INUSE flag !(https://hackpad-attachments.s3.amazonaws.com/embedded2016.hackpad.com_kS5wHum1S54_p.606235_1464375243439_undefined) _Unsorted Bin _: * 最近free的small / large chunk,不分大小 * 重複使用chunks以加速allocation _Small Bin _: * chunk < 512 bytes * 62個bin * size : 每個bin差8 bytes * 合併 : 兩個相鄰的free chunk合併,減少fragmentation(但較耗時) _Large Bin _: * chunk >= 512 bytes * 63個bin * size : 每個bin差距不同 * 前32個bin差64 bytes (n=1) * 再2^(6-n)個bin差8^(n+1) bytes * n=6 : 1個bin 262144 bytes * 剩最後一個bin存放所有更大的chunk * bin裡的chunk依大小排序(因size差距不再是最小單位),allocate時需搜尋最適大小 **Top chunk** 在arena邊界的chunk,若所有bin皆無法allocate則由這裡取得,若仍不夠則用brk / mmap延展 **Last Remainder Chunk** 最近一次分割的large chunk,被用來滿足small request所剩下的部分 **malloc流程** * 調整malloc size : 加上overhead並對齊,若<32byte(64bit最小size,4 pointers)則補上 * 檢查fastbin : 若對應bin size有符合chunk即return chunk * 檢查smallbin : 若對應bin size有符合chunk即return chunk * 合併(consolidate) fastbin : (若size符合large bin或前項失敗)呼叫malloc_consolidate進行fastbin的合併(取消下一chunk的PREV_INUSE),並將合併的bin歸入unsorted * 處理unsorted bin : * 若unsorted bin中只有last_remainder且大小足夠,分割last_remainder並return chunk。剩下的空間則成為新的last_remainder * loop每個unsorted bin chunk,若大小剛好則return,否則將此chunk放至對1應size的bin中。此過程直到unsorted bin為空或loop 10000次為止 * 在small / large bin找best fit,若成功則return分割的chunk,剩下的放入unsorted bin(成為last_remainder);若無,則繼續loop unsorted bin,直到其為空 * 使用top chunk : 分割top chunk,若size不夠則合併fastbin,若仍不夠則system call **free流程** * 檢查 : 檢查pointer位址、alignment、flag等等,以確認是可free的memory * 合併(consolidate) * fastbin size : 不進行合併 * 其他 : * 檢查前一chunk,若未使用則合併 * 檢查後一chunk,若是top chunk則整塊併入top chunk,若否但未使用,則合併 * 將合併結果放入unsorted bin * ref : [allocation過程](http://brieflyx.me/2016/heap/glibc-heap/) * **glibc malloc allocation informations** * [mallinfo](http://man7.org/linux/man-pages/man3/mallinfo.3.html) - obtain memory allocation information * [malloc_stats](http://man7.org/linux/man-pages/man3/malloc_stats.3.html) - print memory allocation statistics * [malloc_info](http://man7.org/linux/man-pages/man3/malloc_info.3.html) - export malloc state to a stream 簡單測試 : malloc(40 * sizeof(int)); * malloc_stats() * Arena 0: * system bytes = 135168 * in use bytes = 176 * Total (incl. mmap): * system bytes = 135168 * in use bytes = 176 * max mmap regions = 0 * max mmap bytes = 0 * mallinfo() [example](http://man7.org/linux/man-pages/man3/mallinfo.3.html#EXAMPLE) * Total non-mmapped bytes (arena): 135168 * # of free chunks (ordblks): 1 * # of free fastbin blocks (smblks): 0 * # of mapped regions (hblks): 0 * Bytes in mapped regions (hblkhd): 0 * Max. total allocated space (usmblks): 0 * Free bytes held in fastbins (fsmblks): 0 * Total allocated space (uordblks): 176 * Total free space (fordblks): 134992 * Topmost releasable block (keepcost): 134992 * malloc_info(int _options_, FILE *_stream_) * <total type="fast" count="0" size="0"/> * <total type="rest" count="0" size="0"/> * <system type="current" size="135168"/> * <system type="max" size="135168"/> * <aspace type="total" size="135168"/> * <aspace type="mprotect" size="135168"/> * </heap> * <total type="fast" count="0" size="0"/> * <total type="rest" count="0" size="0"/> * <total type="mmap" count="0" size="0"/> * <system type="current" size="135168"/> * <system type="max" size="135168"/> * <aspace type="total" size="135168"/> * <aspace type="mprotect" size="135168"/> * </malloc> **Introduction to Scalloc** **簡介** scalloc的設計強調在concurrent環境下的表現,尤其是在thread / core增加時的performance (secaling),並且保持一定的記憶體效率。其設計仰賴64-bit的記憶體空間與linux demand paging的特性,包含了 : * virtual span作為在virtual address space上分配記憶體的單位 (大小皆相同) * 強調concurrent資料結構的global back end * constant-time allocation、並積極回收記憶體的per-thread front end **Real Spans & Virtual Spans** span是allocator用來分配記憶體的概念單位,scalloc使用雙層(real & virtual) span作為分割記憶體的單位。記憶體區段(arena)先分割成virtual span,其內再分成real span,於real span內進行allocation。 !(https://hackpad-attachments.s3.amazonaws.com/embedded2016.hackpad.com_kS5wHum1S54_p.606235_1471006905277_%E6%93%B7%E5%8F%96.PNG) _Real span & size class_ 每個real span內依size class被分為相同大小的blocks,real span有29種size class,但real span本身只有9種大小。size class 1-16分別為16bytes至256bytes,每個class相差16bytes(與tcmalloc相同),它們的real span皆有相同的size;17-29分別為512bytes至2MB,每個class相差2倍。>1MB的allocation則直接以mmap處理。 _Virtual span_ 在scalloc初始化時,會進行一次32TB的mmap,此區段稱為arena,其空間被分成以2MB size , 2MB aligned的區塊,即為virtual span。每個使用中的virtual span包含一個real span,virtual span的size class即為該real span的size class,通常real span的size會比virtual span小許多。virtual span有以下特性 : * real span以外的記憶體不會產生physical fragmentation,因其不被使用也不被mapped(由於demand paging)。 * size class不論大小可採取統一標準處理 * arena記憶體只進行一次(初始化)mmap,不用進行額外的system call 當virtual span清空後,會放入free list(即span pool),為限制physical fragmentation,若real span大於一定大小,會以madvise釋放空間。 * addressable memory : 一個2MB的virtual span最小只會有16KB real span,故整個32TB空間addressable的最小只有(2^45 / 2^21)=256GB * 可以看出scalloc的設計假設virtual address近乎無限,若在32bit架構下只有(4GB / 128)=32MB * Backend: Span-Pool span-pool是一個global資料結構,由stack-like pools的array組成,array以size class為單位。stack-like pools在單thread情形下即為stack。 !(https://hackpad-attachments.s3.amazonaws.com/embedded2016.hackpad.com_kS5wHum1S54_p.606235_1471082523940_2.PNG) size class的分割以pre-allocated array的index達成,每個entry內又有一個pre-allocated array(pool array),其entry內含lock-free的Treiber stack,index則為執行時的core number。Treiber stack由元素的singly linked list組成,push與pop以對top pointer的atomic compare-and-swap實作。為避免ABA問題,實作中使用包含在top pointer中的16-bit ABA counter。 以下是Span-pool的pseudo code : !(https://hackpad-attachments.s3.amazonaws.com/embedded2016.hackpad.com_kS5wHum1S54_p.606235_1471084083933_3.PNG) _put_ thread會先取得real-span index與core index並放入對應的pool : 在放入之前,若其real-span size > MADVISE_THRESHOLD,則用madvise釋放記憶體。MADVISE_THRESHOLD預設為32KB,即size class增加方式的分界(512bytes)的real-span size。 _get_ 先試由所屬real-span / core index取得span(fast path);若失敗,則搜尋整個pool,試取得空span;若仍失敗,由arena取得新的virtual span。 **Frontend: Allocation and Deallocation** span可以有幾種不同的狀態 : !(https://hackpad-attachments.s3.amazonaws.com/embedded2016.hackpad.com_kS5wHum1S54_p.606235_1471088309716_4.PNG) span可以是以下其中之一 : expected, free, hot, floating, reusable。 * expected : 仍在arena,不占任何實體記憶體的狀態 * free : 在span-pool中等待使用的狀態 其他3種狀態皆在frontend,且span此時有所屬的span size * hot : 正在用來malloc的span,在local buffer內每size class一個 * floating : 內含free block在reusability threshold以下者 * reusable : 內含free block在reusability threshold以上,可以在hot填滿時替換 每個span在frontend時,都會被分配到一個local-allocation buffer (LAB),LAB可以調整為thread-local(TLAB)或core-local(CLAB)模式,分別由每thread / core擁有一個。 LAB內包含每size class一個的hot span,與一些也以size class分類的reusable span。 span內的free若是其他thread進行的稱為remote free,自身thread進行的為local free。malloc皆是由local hot span進行。針對remote free的fragmentation問題,scalloc使用兩個free list將local與remote free分開處理。 _Allocation_ * thread先嘗試LAB的hot span,在對應hot span內的local free list取得block (fast path)。 * 若沒有對應的hot span : 試由resuable span取得新的hot span;若仍失敗,由span-pool取得。 * 若有hot span但local free list為空 : 若remote free list相對reusability threshold有一定比值,thread將所有remote block移至local,並進行fast patch;若沒有,同上一點方式取得新hot span。 * 將remote block移至local的條件判斷為減少lock的效能考量 _Deallocation_ * returned block放入free list,若span在LAB則local,非則remote。 * 若span floating,檢查是否達到reusability threshold,若是則改變狀態為reusable並放入LAB的reusable set。 * 若span reusable,檢查span是否為空,若是則為free,並移入span-pool **Operation Complexity** _allocation_ 只考慮hot span且不進行任何cleanup,在沒有contention的情形下 : * 有hot span,進行allocation : constant-time * 取得reusable span : constant-time 有contention情形下,因同步進行的deallocation,可能需要考慮1個以上的reusable span,但至少有1個thread可以以constant-time執行 _deallocation_ 只考慮block所在的span : * 插入至local free list為constant-time * remote free list為constant-time modulo synchronization(remote free list為lock-free) * 不太清楚remote的constant-time modulo synchronization所指為何 * 推測是至少有1個thread可以以constant-time進行? * span改為reusable為constant-time modulo synchronization (放入reusable set為lock-based) _Span-pool_ 為constant-time modulo synchronization (span-pool整體為lock-free) **Implementation Details** _Real Span_ !(https://hackpad-attachments.s3.amazonaws.com/embedded2016.hackpad.com_kS5wHum1S54_p.606235_1471526383693_%E6%93%B7%E5%8F%96.PNG) * link : 在span-pool或set內時,用來link其他span * epoch : 用以紀錄span的life cycle狀態。word的上部用來紀錄states,下半為一個[ABA counter](https://en.wikipedia.org/wiki/ABA_problem),因free block + state轉換並非atomic。若沒有ABA counter :

 thread A	 thread B

 old = epoch

 free(last block)	 	 span現在是empty but reusable ,A準備mark free

 	 get reusable span -> hot

 	 hot->floating->reusable	 span現在是reusable (not empty)

 compare-and-swap(epoch,old,FREE)	 	 雖然span內還有block ,但因epoch == old (reusable) ,span被mark free

 * Owner : 一個identifier (16 bits)用來分別owning LAB + reference (48 bits)指向該LAB,整個word可以以compare-and-swap atomic更新。當使用LAB的最後一個thread結束,owner會被設為TERMINATED,等到下次LAB重新使用時,owner會有新的identifier,但reference不變(仍是同一個LAB)。 * Remote f-list : 實作一個[Treiber stack](https://en.wikipedia.org/wiki/Treiber_Stack),並同時記錄top pointer與block count (放在同一個word)。若要get所有block,只需要將top改為NULL (atomic),此動作同時set block count=0。 _Auxiliary structures and methods_ !(https://hackpad-attachments.s3.amazonaws.com/embedded2016.hackpad.com_kS5wHum1S54_p.606235_1471688621411_5.PNG) * get_lab : 利用owner field取得對應LAB。 * is_oprhan : 檢查該span所屬的LAB,其對應thread是否全部結束。 * try_mark_* : 嘗試對epoch進行compare-and-swap,同時更改ABA counter (atomic)。 * try_refill_from_remotes : 若remote free list大於一定數量(相對於reusability threshold),將所有block移至local。 * try_adopt : 更改is_oprhan span的owner (atomic)。 * Set : 用來維持reusable span的紀錄 * constant time的put ,get ,remove。 * open / close用以防止put ,get沒有owner的set (owner==TERMINATED)。 * 考慮到contention頻率不高,使用lock-based deque。 _Frontend_ !(https://hackpad-attachments.s3.amazonaws.com/embedded2016.hackpad.com_kS5wHum1S54_p.606235_1471872706957_8.PNG) * get_span : 由span-pool或reusable set取得span。 * 分別代表free -> hot / reusable -> hot。 * allocate : 由hot span取得block。 * 若沒有,先試由remote free list取得新的block (try_refill_from_remotes) * 若仍無block,將hot span改為floating,並取得新span (get_span) * deallocate : free block並檢查狀態轉換 * 由於free + state非atomic,epoch被紀錄以待稍後compare-and-set使用。 * 將block放入對應free list。 * free block > reusability threshold,轉換至reusable,使用old_owner防止放入沒有owner或其他owner的LAB。 * span全空,轉換至free (compete : get_span的try_mark_reusable)。 _Thread Termination_ 由於LAB沒有對所有span的reference (例如floating span),要找出orphaned,必須比較span的owner與LAB的owner,兩者不同或owner==TERMINATED皆是orphaned span。orphaned皆為floating,於deallocate時由新的LAB adopt。 * terminate : * close所有reusable set,並將所有span轉至floating。 * compete : reusable -> floating 對 reusable -> free * LAB被設為TERMINATED,使原floating span的owner與LAB不同。 _Handling Large Objects_ 大於1M直接使用mmap。 [Scalloc design decisions](https://paper.dropbox.com/doc/Scalloc-Design-Decisions-nzdAAqUSuRaWQQKg5xGxJ) **fragmentation testing** **主要策略** * 直接測**fragmentation** * fragmentation = (free - freemax) / free ; 0 if free = 0 測量最大可用的block(freemax)相對於所有可用空間(free)的比率,freemax相對越小就表示連續的的block越小,即fragmentation 變大。 * ptmalloc2 mallinfo : 沒有抓最大可用block的機制,測量可能有困難 * 從**utilization**的結果觀察 * memory utilization = active memory / used * or used memory over time * ref : (https://www.facebook.com/notes/facebook-engineering/scalable-memory-allocation-using-jemalloc/480222803919/)[https://www.facebook.com/notes/facebook-engineering/scalable-memory-allocation-using-jemalloc/480222803919/](https://www.facebook.com/notes/facebook-engineering/scalable-memory-allocation-using-jemalloc/480222803919/) allocated相對於總記憶體使用的比率,剩下的空間即是浪費掉的空間,可能的來源有overhead、fragmentation等。 fragmentation 可能造成新的allocation無法使用已經free的記憶體,造成總使用空間增加,utilization下降。 若一個process的memory utilization因為fragmentation持續降低,最後可能因為使用空間太大而OOM。 * ptmalloc2 mallinfo : 可以用(uordblks / arena)來測,或直接看arena隨時間的變化 **實例 (paper)** * [facebook-jemalloc](https://www.facebook.com/notes/facebook-engineering/scalable-memory-allocation-using-jemalloc/480222803919/) : 看 active memory vs RAM usage 長時間比率穩定度(fragmentation 不造成RAM無限消耗) * **[OOPSLA15-Scalloc](http://www.cs.uni-salzburg.at/~ck/content/publications/conferences/OOPSLA15-Scalloc.pdf)** : 測量memory consumption時使用Resident Set Size(RSS) sample的平均值,sample rate隨使用的benchmark而不同 (每個benchmark+thread數為一個資料點) * [Scalable Memory Allocation](http://cs.nyu.edu/~lerner/spring12/Preso05-MemAlloc.pdf) : max heap use in benchmark (只有一個值) * **[Small Block Sizes in rt Embedded Systems](http://jultika.oulu.fi/files/nbnfioulu-201302081026.pdf)** : max allocated live memory vs max used memory(原理與facebook類似), 利用在allocator內加code的方式(**instrumentation**),maximum以**最高address**計算,並加入implementation overhead的觀察(未詳細說明)。比較4個benchmark pattern,隨allocation / free做graph (profiling)。 * **[The Memory Fragmentation Problem: Solved?](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.97.5185&rep=rep1&type=pdf)** : 提到四種數值化模式 :

 	 vs	 at (time point)	 缺點

 used	 requesed	 across all point in time (average)	 看不到spike

 used	 max requesed	 max live(requesed) memory	 fragmentation可能還會成長

 max used	 requesed	 max memory usage	 可能有極高的fragmentation

 max used	 max requesed	 not same point in time	 可能低估

 * 考慮到implementation overhead,在malloc時的size內減去(ex : malloc(20) , overhead=4 改成malloc(16))。 * used memory使用**system call**追蹤,因allocator只能以page為單位請求記憶體,觀察會有誤差。 更清楚的解釋上述四種數值化模式 (https://paper.dropbox.com/doc/Fragmentation-4v9zRLIanLfNw1BoiZ0VH)[https://paper.dropbox.com/doc/Fragmentation-4v9zRLIanLfNw1BoiZ0VH](https://paper.dropbox.com/doc/Fragmentation-4v9zRLIanLfNw1BoiZ0VH) * **[Hoard](https://people.cs.umass.edu/~emery/pubs/berger-asplos2000.pdf)** : Multithreaded問題 : 因一般的profiling + lock會造成allocation無法平行執行(serialized behavior),hoard使用per-thread在malloc/free時紀錄(+timestamp),記錄在事先準備的mapped memory,最後在整理成檔案。(但記錄方式沒有詳細說明) * [SSMalloc](https://apsys2012.kaist.ac.kr/media/papers/apsys2012-final27.pdf) : peak physical memory footprint **實驗考量** * implementation overhead * 考慮到實驗的目的是避免OOM和提高space efficiency,overhead也會影響這兩項的結果,故我認為應該可以只看總消耗量,而不必分開overhead與fragmentation。(還可以減少所需的工作量) * Resident Set Size * 實驗平台要求real-time,且盡量減少(或說沒有)swap,且Resident受系統的其他部分影響(由系統管理),故我認為測驗應該基於real(virtual) size,尤其在有swap的情形下,swap in/out會造成程式失去real-time特性。 * 測量方式 * 由於實驗包含如tlsf等不會自動map memory(paging)的allocator,故無法由系統判別消耗的RAM數量(利用如ps等),測量需要在allocator本身的code裡進行。 **(可能的)測量方法** * 取得total size * allocator內包含自我測試function(如ptmalloc2) * 在profiling時,使用自帶的mallinfo()等取得total size * no auto paging(如tlsf) * 在allocator內加入紀錄top address的code,由top address - base address得到total size。 * with auto paging * 在allocator內加入紀錄total mapped memory的code,並以此為total size。 * 測量時間點 * 在profiling時,於每次malloc / free前後,並應該與timing / preformance實驗分開做(加入的code可能影響preformance)。 * Multithread test * 理論上,total size應該以per-thread的方式記錄,但實際運作方式可能依allocator的不同而改變,方法應允許malloc/free可以(嘗試)平行執行。 **Memory allocator研究 - jemalloc** 設計上重視cache locality勝於減少working set pages使用數目,減少記憶體的使用量可以達到此目的;因為temporal locality通常也意味著spatial locality,所以也盡可能分配連續的記憶體 (同樣地)提到false cache sharing對效能的衝擊 ## 實驗重現與驗證 **ROBUST MEMORY MANAGEMENT USING REAL TIME CONCEPTS ** * 仰賴RTOS µC/OS-II將記憶體切成固定大小的區塊 **Understanding glibc malloc** * 實驗內容為觀察per thread arena的分配情形,接著以code tracing的方式分析glibc malloc(ptmalloc)的行為 * 在每個thread執行第一次malloc的時候,似乎會直接分配一塊很大的head memory(稱作per thread arena)。例如在本實驗中只要求1kB的空間,卻給了132kB * 若在multithread application中對每個thread都分配一個arena,對記憶體衝擊會很大,因此per-thread arena限制arena的上限數目(2 * number of cores in 32-bit system, 8 * number of cores in 64-bit system) ## 實驗設計 * 實驗用到的程式碼放在這 (https://github.com/jacky6016/malloc-benchmark)[https://github.com/jacky6016/malloc-benchmark](https://github.com/jacky6016/malloc-benchmark) * Performance index * alloc/dealloc WCET * fragmentation空間 * scalability * 情境 * 必須要製造worse-case scenario (每種演算法的worst case scenario可能不同) **實驗測量方向** * space efficiency & avoid OOM * (peak) allocated memory vs total used pages * real-time * max(worst case) allocation & dealloc time * performance / throughput * average time * allocation time 與 allocated / freed space 的對應比較? * memory profiling --------------------------------------------------------------------------------------------------------------------------------------------- * [Tips of malloc & free Making your own malloc library for troubleshooting](http://elinux.org/images/b/b5/Elc2013_Kobayashi.pdf) 重點摘錄 * 目標 easy to modify,use this only for the debugee process * You can see memory map of ` cat /proc/self/maps ` * __malloc_hook is not thread safe * Use probability distribution generate 10000 or more random variables( these random variable are allocated size patterns, and it will follow the distribution). * [Random number generation](http://heather.cs.ucdavis.edu/~matloff/SimCourse/PLN/RandNumGen.pdf) * 先用[exponential distribution](https://en.wikipedia.org/wiki/Exponential_distribution)產生random number, 程式裡的mean_size = 1 / lambda * memory random size generator finish, Please [follow](https://github.com/ldotrg/memory_size_generator) (5/20 done) * 這支程式還有支援gamma, normal, Erlang 等分配,可以改CODE試試 * random.c是用moment generating function 去刻出來的code * 下一步是把產生的radom size餵 給malloc_count 去測試 * (https://github.com/whosyourdadd/RandMalloc/blob/master/MemSize_Generator/main.cc)[https://github.com/whosyourdadd/RandMalloc/blob/master/MemSize_Generator/main.cc](https://github.com/whosyourdadd/RandMalloc/blob/master/MemSize_Generator/main.cc) * 應該要先討論畫什麼圖表(i.e 想要看到什麼樣的分析圖),x軸和y軸要放什麼,這樣才知道如何設計實驗流程,才有辦法數學分析,最後再導入網路應用的packet size pattern。 * lwip memory allocate [mem.c](https://github.com/tabascoeye/lwip/blob/master/src/core/mem.c). ------------------------------------------------------------------------------------------------------------------------------------------------- ## Buddy System [ [source](https://embedded2016.hackpad.com/-IoT-OS-HyperC-j1Y2KKWoTAh) ] [Buddy System](https://en.wikipedia.org/wiki/Buddy_memory_allocation) 是種記憶體配置 (memory allocator) 演算法,先將記憶體分成很多size,最小的單位即是一個 page,這個方式會減少 external fragmentation,因為這個機制就是典型的你有多大就放再那一個適合大小櫃子裡,再來還是會有internal fragmentation 的問題,因位我們已經把一個基本單位規定成一個 Page ,而假如一個 Page 是 64K,那麼假如只要儲存一個52K的東西,那麼就會有12K是空的,這個的好處就是可以分的很清楚,哪個page是誰的,就我認知,解決external fragment會是比較好的選擇,因位假如發生的話單位都是以page來算,internal 可能是用byte來算的。 實例解釋: 現在我們有4個東西要儲存 A , B , C , D, 首先我們第一個要儲存的是 A,而A是佔了 64KB的空間(也可能是基本單位 page size),所以我們開始作對折的動作,`step 1` 開始,`step 2.1` 開始做第一次對折,發現空間還是大於他很多,所以我又再切`step 2.2`,一直切到`step 2.5` 才終於剛剛好放下,再來是放 B ,他佔了 2*64KB,然後我發現我剛好有對的地方所以直接放下去`step 3` ,再來換C,而C的流程跟B一樣,就是D了,他佔了 2*64KB,但觀察`step 4`和‵`step 5.1` 其實是沒有剛好放的下D的空間,所以他又再切它,最後這些A B C D 總有用完的時候,就可以將他回收成原本的memory樣式 `step 9.1`開始。 !(https://hackpad-attachments.s3.amazonaws.com/embedded2016.hackpad.com_j1Y2KKWoTAh_p.579576_1459184218072_undefined) ## Benchmarking * 由 University of Salzburg, Austria 發展的 [scalloc](http://scalloc.cs.uni-salzburg.at/) 提供了若干組 memory allocator 的 benchmark suite: **[scalloc-artifact](https://github.com/cksystemsgroup/scalloc-artifact)** * 編譯與測試 * git clone (https://github.com/cksystemsgroup/scalloc-artifact.git)[https://github.com/cksystemsgroup/scalloc-artifact.git](https://github.com/cksystemsgroup/scalloc-artifact.git) * cd scalloc-artifact * export BASE_PATH=`pwd` * tools/make_deps.sh * tools/create_env.sh * 找了一圈才發現scalloc-artifact提供的benchmark tools已經是最完整的 [Scalloc-artifact test suite測試數據](https://paper.dropbox.com/doc/Scalloc-artifact-test-suite-YTEv5m9emT1fyPiZOBxEL) ## MADVISE 重現 [note-about-madvise](http://ytliu.info/blog/2014/05/27/note-about-madvice/) 部落格文章上,測試madvise的程式碼。並且在進行修改之後,開了一個新專案放到github上面,照著README操作就可以重現該篇文章上使用madvise帶來效能上的改進。 (https://github.com/enginec/madviseBench)[https://github.com/enginec/madviseBench](https://github.com/enginec/madviseBench) * test mmap without madvice * This file has 1073741824 bytesread without madvise: 4140 ms * test mmap with madvice * This file has 1073741824 bytesread with madvise: 3865 ms * test mmap without madvice again * This file has 1073741824 bytesread without madvise: 4176 ms * test mmap with madvice again * This file has 1073741824 bytesread with madvise: 3872 ms * ====== test end ====== ## 分析Memory Usage Pattern製作benchmark 目前我的想法是透過分析一個程式的memory usage pattern,例如可能是頻繁的小區塊分配與釋放、或是每次索取的記憶體大小差異g很大等,產生對應的benchmark,之後就可以利用這個benchmark來比較不同memory allocator的效能差異。 原本的想法是參考malloc_count,透過動態連結malloc到測試程式,得知每次malloc呼叫大小和順序,並用這個資料去產生benchmark。 但這種作法的盲點在,假設我們要分析的程式是multi-threaded,那麼光是紀錄每次呼叫malloc的大小和順序是不夠的。我們必須要能夠模擬出每個thread使用malloc/free的大小和時間點,用於建立對應的benchmark,再拿這個benchmark去測試各種malloc實作才有意義。因為有些malloc實作支援multithread,要這樣做才能真正測出各種malloc實作的差異。 目前下幾個關鍵字搜尋,找到兩個商用軟體好像能分析thread等級的memory usage情況。 * [C++ Memory Validator](https://www.softwareverify.com/cpp-memory.php) * [Intel Vtune Amplifier](https://software.intel.com/en-us/intel-vtune-amplifier-xe) ## intersec 記憶體系列文章 * [Memory – Part 1: Memory Types](https://techtalk.intersec.com/2013/07/memory-part-1-memory-types/) * [Memory – Part 2: Understanding Process memory](https://techtalk.intersec.com/2013/07/memory-part-2-understanding-process-memory/) * [Memory – Part 3: Managing memory](https://techtalk.intersec.com/2013/08/memory-part-3-managing-memory/) * [Memory – Part 4: Intersec's custom allocators](https://techtalk.intersec.com/2013/10/memory-part-4-intersecs-custom-allocators/) * [Memory – Part 5: Debugging Tools](https://techtalk.intersec.com/2013/12/memory-part-5-debugging-tools/) * [Memory – Part 6: Optimizing the FIFO and Stack allocators](https://techtalk.intersec.com/2014/09/memory-part-6-optimizing-the-fifo-and-stack-allocators/) ## Reference * [Memory Management Reference](http://www.memorymanagement.org/)**:** a resource for programmers and computer scientists interested in [memory management](http://www.memorymanagement.org/glossary/m.html#term-memory-management) and [garbage collection](http://www.memorymanagement.org/glossary/g.html#term-garbage-collection). * [Robust Memory Management using Real Time Concepts](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.682.3406&rep=rep1&type=pdf) * 重現實驗 * 將來不見得要重新實作,可能只需要做修改/調整參數 * [SuperMalloc: A Super Fast Multithreaded malloc() for 64-bit Machines](http://conf.researchr.org/event/ismm-2015/ismm-2015-papers-supermalloc-a-super-fast-multithreaded-malloc-for-64-bit-machines) * Xenomai 3 內建 TLSF: [lib/boilerplate/tlsf/tlsf.c](http://git.xenomai.org/xenomai-3.git/tree/lib/boilerplate/tlsf/tlsf.c) * [reddit: Github got 30% better performance using TCMalloc with MySQL](https://www.reddit.com/r/programming/comments/18zija/github_got_30_better_performance_using_tcmalloc/) * [Understanding glibc malloc](https://sploitfun.wordpress.com/2015/02/10/understanding-glibc-malloc/) * 注意細節 : lock(smp environment) , memory leak , fragmention / buddy system實作 * [A Malloc Tutorial](http://www.inf.udec.cl/~leo/Malloc_tutorial.pdf) * [Cache Coherence](https://www.wikiwand.com/en/Cache_coherence) * [Memory barrier](https://www.wikiwand.com/en/Memory_barrier) * [Memory Pool 的 設計哲學和無痛運用](http://jjhou.boolan.com/programmer-13-memory-pool.pdf) * [TLSF: a New Dynamic Memory Allocator for Real-Time Systems](http://www.gii.upv.es/tlsf/files/ecrts04_tlsf.pdf) * 這篇使用的硬體沒有MMU * [How Memory Allocation Affects Performance in Multithreaded Programs](http://www.oracle.com/technetwork/articles/servers-storage-dev/mem-alloc-1557798.html) * [Apache madvise experiment](http://people.apache.org/~gbowyer/madvise-perf/) * [jeMalloc](http://people.freebsd.org/~jasone/jemalloc/bsdcan2006/jemalloc.pdf) * [History of Memory Models - MIT open course](https://www.youtube.com/watch?v=3e1ZF1L1VhY&feature=youtu.be&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) * [A Study on Dynamic Memory Allocation Mechanisms for Small Block Sizes in Real-Time Embedded Systems](http://jultika.oulu.fi/files/nbnfioulu-201302081026.pdf) (2012) * [CAMA: Cache-Aware Memory Allocation for WCET Analysis](http://www.rw.cdl.uni-saarland.de/~jherter/papers/camaecrts08.pdf) * [Dynamic Memory Management for Embedded Real-Time Systems](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.102.74&rep=rep1&type=pdf) * [Super Allocator](https://eci.exascale-tech.com/wiki/images/8/8c/OCR_memory_hierarchy_allocation_system_-_intel.pdf) for Open Collaborative/Community Runtime (OCR) * [OCR git repositories](https://xstack.exascale-tech.com/wiki/index.php/Main_Page) * [Open Community Runtime](https://01.org/open-community-runtime) at 01.org * creating a runtime framework that explores new programming methods for machines with high core count. The initial focus is on HPC applications. Its goal is to create a framework and reference implementation to help developers explore programming methods to improve the power efficiency, programability, and reliability of HPC applications while maintaining app performance. * [Fast, Multicore-Scalable, Low-Fragmentation Memory Allocation through Large Virtual Memory and Global Data Structures](http://www.cs.uni-salzburg.at/~ck/content/publications/conferences/OOPSLA15-Scalloc.pdf) ## Implementations & Tools **Implementations** * Linaro 蒐集的 [notes and ideas on improving glibc malloc performance](https://wiki.linaro.org/WorkingGroups/ToolChain/LibraryPerformance/GlibcPerformance/GlibcMalloc) * [cortex-malloc](https://git.linaro.org/toolchain/cortex-malloc.git) * [small - a collection of Specialized Memory ALLocators for small allocations](https://github.com/tarantool/small) * [mallocMC: Memory Allocator for Many Core Architectures](https://github.com/ComputationalRadiationPhysics/mallocMC) * [scalloc: A Fast, Multicore-Scalable, Low-Memory-Overhead Allocator](http://scalloc.cs.uni-salzburg.at/) * [SSMalloc](http://ipads.se.sjtu.edu.cn/doku.php?id=pub:projects:ssmalloc): A Low-latency, Locality-conscious Memory Allocator with Stable Performance Scalability * [lockfree-malloc](https://github.com/Begun/lockfree-malloc) : The world's first Web-scale memory allocator * [memory_library](https://github.com/rampantpixels/memory_lib): Lock-free memory allocator (C11) * [fc_malloc](https://github.com/bytemaster/fc_malloc): Lock-Free, Wait-Free, CAS-free, thread-safe, memory allocator. * [wfmalloc](https://github.com/ashish-17/wfmalloc): Wait-Free dynamic memory allocator. * [Adaptive allocators](http://www.ercoppa.org/malloc/) (BSA) * [DieHard](https://github.com/emeryberger/DieHard): An error-resistant memory allocator **Benchmarks** * [malloc-survey](https://github.com/r-lyeh/malloc-survey): 包含大量的實做測試與比較 * [Concurrent Memory Allocator Benchmarks](https://github.com/aysylu/malloc/tree/master/benchmarks) * [Memory Fragmentation/Malloc Benchmark](https://github.com/jffrosen/fragbench) * [malloc_count](https://github.com/bingmann/malloc_count): Method to measure the amount of allocated memory of a program at run-time. * [Benchmarking memory allocators](https://www.google.com.tw/url?sa=t&rct=j&q=&esrc=s&source=web&cd=7&cad=rja&uact=8&ved=0ahUKEwjLrLSDyvzMAhVEkJQKHdncCsYQFghHMAY&url=http%3A%2F%2Fwww.helsinki.fi%2F~joorava%2Fmemory%2F&usg=AFQjCNELj9rKm6jjBMd5YS7WAaRX4-Juhg&sig2=z-QFyzYRqcnVz20Cg7hsXg) * [malloc() Performance in a Multithreaded Linux Environment](http://www.citi.umich.edu/techreports/reports/citi-tr-00-5.pdf) [投影片](http://people.freebsd.org/~jasone/jemalloc/bsdcan2006/BSDcan2006_slides.pdf) * [scalloc-artifact](https://github.com/cksystemsgroup/scalloc-artifact), [[scalloc source](https://github.com/cksystemsgroup/scalloc.git)] * [memory allocation for long-running server applications](http://delivery.acm.org/10.1145/290000/286880/p176-larson.pdf?ip=140.112.48.70&id=286880&acc=ACTIVE%20SERVICE&key=AF37130DAFA4998B%2EEE7BEA59C98A8EF6%2E4D4702B0C3E38B35%2E4D4702B0C3E38B35&CFID=788282193&CFTOKEN=37630263&__acm__=1465030145_2745fab37af59fa32f3393b95059b369) * [wfmalloc-test-framework](https://github.com/ashish-17/wfmalloc-test-framework): Testing framework for wfmalloc benchmarking * [custom-memory-allocator](https://github.com/ashish-17/custom-memory-allocator): Create a custom memory allocator and compare it with existing ones * [Test harness for malloc](https://blogs.oracle.com/rweisner/entry/test_harness_for_malloc) **Tools** * [LibMallocTrace](https://github.com/timm-allman/LibMallocTrace): A simple library that traces all malloc/free and mmap/munmap calls.


text:
Diefenbaker House is a museum in Prince Albert, Saskatchewan. The museum building was built in 1912 and purchased in 1947 from Mr. Wesley E. Acorn by The Right Honourable Prime Minister of Canada John Diefenbaker and his then wife Edna Diefenbaker. Olive Diefenbaker, John Diefenbaker's second wife, moved into the house after the death of Edna and stayed there until 1975 when they donated the house to the city of Prince Albert to convert it into a museum.  The museum is operated by the Prince Albert Historical Society.

The John and Olive Diefenbaker Museum was designated a National Historic Site on January 12, 2018.

Affiliations
The museum is affiliated with: CMA,  CHIN, and Virtual Museum of Canada.

See also
 List of National Historic Sites in Saskatchewan

References

External links
 Virtual Museum of Canada
 Diefenbaker House

1975 establishments in Saskatchewan
Museums in Prince Albert, Saskatchewan
Historic house museums in Canada
Biographical museums in Canada
Museums established in 1975
John Diefenbaker
Houses completed in 1912

redpajama_set_name: RedPajamaWikipedia


Tim Fisher demonstrates how to use the oil pastels on their own, or in conjunction with acrylic inks and paints, and watercolours, on a variety of surfaces, to create beautiful paintings that will maintain their vibrancy for years to come.
The Beginner's Guide to Painting with Oil Pastels features six full step-by-step projects covering a variety of subjects including animal portraits, street scenes, boats and harbours, buildings and glorious landscapes. Tim introduces the reader to mark-making with oil pastels, explains the history of the medium, and how to protect and keep an oil pastel painting once it is complete.
Beginning Pastel guides beginning artists through an exploration of pastel techniques and step-by-step projects for a comprehensive and approachable overview of this colourful medium. From choosing the right paper, pastels and colours to basic techniques such as blending, grading and masking, it is the perfect resource for artists just getting started in pastel.
Starting with a blank canvas, each stroke and technique is clearly explained and beautifully illustrated, allowing readers to master key concepts and then put them into practice through simple step-by-step exercises. Often considered an advanced medium, Beginning Pastel makes drawing in pastel accessible and achievable for artists of all skill levels.
A new, up-to-date edition of the popular and comprehensive encyclopaedia by professional artist Judy Martin.
Many manuals on pastel painting take for granted the use of traditional soft pastels, a dry medium that provides the richness and variety of paint colours. Soft pastel is certainly the most versatile and widely used, but the modern range of materials include other pastel types that have their own specific purpose. In this exhaustive A–Z reference for artists of all skills, a variety of different pastel types are detailed, from oil through to water-soluble pastels, amongst the multitude of techniques broken down and easily explained.
Written by soft pastel expert Jeremy Ford, this book is packed full of soft pastel techniques and inspiring step-by-step projects.
It starts with the basics, such as mark-making and blending, through using colour and tone and creating skyscapes, to more advanced techniques including successfully creating depth and perspective.
The book builds in difficulty, interspersing the tips and techniques with five beautiful step-by-step projects, allowing the reader to either dip in and out of the book for inspiration, or to follow the book as a course to build up their skills. A wide range of Jeremy's inspiring work is shown throughout to inspire and encourage the reader.
This step-by-step guide teaches you everything you need to know to make the most of this accessible art form. From selecting the right materials to learning the fundamentals of composition, the book starts with the basics and progresses to 21 complete pastel demonstrations that detail specific painting techniques and effects.
In addition to step-by-step guidance, you'll be inspired by the work of ten renowned pastel artists that illustrate the limitless possibilities of pastel painting and offer additional insight for working with this versatile medium.
Leave your expectations behind and engage in the process of pastel painting with a newfound freedom to play and explore!
All soft pastel painting enthusiasts will benefit from this in-depth instruction manual from three respected and well-loved pastel artists.
Starting with advice on materials, it moves on to pastel basics such as colour mixing, adding water to pastels, blending, adding tone and using a limited palette. There are sections that include landscape painting with advice on composition and painting trees and water, how to capture light in pastels and how to paint flowers.
Throughout, the art of painting in pastels is taught through 13 beautiful, easy-to-follow projects; each section is accompanied by step-by-step photographs and instructions and a selection of inspirational paintings in a rich variety of styles by the three featured artists.
Margaret Evans shares her huge enthusiasm for the medium and her expertise in the properties of pastels. She demonstrates the stages: sketching in, blocking in and then building up, that lead to a successful painting, and then the dry and wet techniques that really unleash the potential of pastels. There are then six beautiful step-by-step demonstrations.
Focusing on soft (chalk) pastels, this clear, simple-to-understand book encourages you to explore the materials and methods needed to get started.
The author begins by introducing you to a variety of techniques, and looks at sketchbooks and photographs as a way of gathering source material. There are then five stunning step-by-step projects for the reader to choose from, covering a range of subjects from flowers to landscapes and coastal scenes, and designed to build on the basic skills covered in the earlier sections of the book.
You will learn about creating atmosphere, colour, tone, composition and perspective, and before you realise it you will have all the skills you need to create your own beautiful pastel paintings.


text:
FiftyFifty Releasing Eclipse 2017 Variants Dec. 7 (Update)
New Belgium Names Steve Fechheimer As CEO
BusinessNews0 Comments
For the first time in more than six months, New Belgium Brewing Co. now has a permeant ceo.
According to a press release, Steve Fechheimer will be in charge of multiple roles at the Ft. Collins, Colo.-based brewery, including overseeing New Belgium's executive team, working on short-term strategy, and day-to-day operations, among others. Fechheimer will replace Kim Jordan, New Belgium's co-founder and former CEO, who has been serving as interim ceo since Christine Perich departed in November 2016.
"I'm excited and humbled by the opportunity to lead such a wonderful company," said Fechheimer in a press release. "New Belgium, with its incredible history and heritage, has an amazingly bright future, and I look forward to working with Kim, the leadership team and all of the nearly 800 coworkers to build upon our great foundation."
Fechheimer earned his undergraduate degree from The Wharton School at the University of Pennsylvania and holds an MBA from the University of Chicago. His most recent job was at Beam Suntory, where he served as chief strategy officer for eight years before joining New Belgium.
In the press release, New Belgium states that Fechheimer will start his new position as ceo in mid-August.
Christine PerichKim JordanNew Belgium Brewing Co.Steve Fechheimer
New Belgium Files Label for Pilot Series No. 19
New Belgium Adding Fat Tire Torched Earth to Lineup
New Belgium Files Label For 30th Anniversary Wild Ale
New Belgium Files Label For Adding Corners Cherry Sour Ale
New Belgium Files Label For Pilot Series No. 12 Holiday Stout
Jeremy Krantz October 19, 2020
New Belgium & Fremont Teaming Up For Action-Reaction Nitro Barrel-Aged Sour Stout
New Belgium Files Label for Dominga Mimosa Sour Ale
Jeremy Krantz October 5, 2020
New Belgium & Ale Sharpton Collaborating on Piano Keys Imperial Stout