text:
Open Notebook: Tax Havens
by Bill Allison
Sep 8, 2009 7:22 pm
Just a few odds, ends and bits of reporting that didn't make it into this post that relies on data from the Foreign Lobbying Influence Tracker that we collaborated on with our friends from ProPublica:
Numbers: I really hesitated to use the administration's claims of $210 billion in tax revenue raised (there's a fairly good breakdown of which proposals raise what part of the $210 billion in the New York Times here). Tax havens offer secrecy, so even if the government knows how much money they hold (I doubt that it does) it can't determine who owns it. Plus, as Andy Quinlan of the Center for Freedom and Prosperity pointed out, lots of the numbers on tax havens are squishy, as the linked Congressional Research Service document shows (it's short–just one page–with no higher math! It also says a lot about the uncertainties of estimating revenues from offshore tax revenues).
The real money in politics: Whether we're talking about extending health benefits to the uninsured, cap and trade, or the deficit spending in general, tax revenue (or lack thereof) forms a major part of the discussion (as it does in the long range problems forecast for Medicare and Social Security). There are exceptions, obviously, but not many politicians seem interested in talking about additional taxes to pay for new spending.
Obama's tax proposals: The administration's reforms seem to be mostly directed at U.S. corporations and individuals, and not necessarily at tax havens (there is a provision that would require Qualified Intermediaries — foreign institutions or foreign branches of U.S. institutions — to "share as much information about their U.S. customers as U.S. financial institutions do"). It's much easier to change the rules for U.S. taxpayers (corporations and individuals) and foreign private entities than it is to change the rules for sovereign nations. (See below.)
Stop Tax Haven Abuse Act: This bill could in effect bar entities within jurisdictions labeled as tax havens by the Treasury Secretary from doing business with the United States. It has all of five cosponsors in the Senate, and a more respectable 65 cosponsors in the House. Neither bill has made it out of committee.
Foreign lobbyists as diplomats: The data in Foreign Lobbying Influence Tracker made us think that a lot of smaller countries used lobbyists to supplement or in lieu of traditional diplomats. Ted Bravakis, the public affairs officer for the Cayman Islands Ministry of Financial Services, offered some confirmation for that theory: "The Cayman Islands, as a UK Overseas Territory, approaches international relations similar to a private sector organisation. This means we take a very 'hands on' approach — rather than relying on a diplomatic corps which is not afforded to us — to build and reinforce relationships with foreign countries. This is especially the case with the U.S. government, as we continually seek to reinforce our ties in relation to the Cayman Islands financial services sector and the long-standing commercial relationship between the U.S. and the Cayman Islands."
Revolver at Fleishman-Hillard: The key lobbyist for the Cayman Islands was former Texas Rep. Max Sandlin, who served in Congress from 1997 to 2005. He was on the Ways and Means Committee and in the House Democratic leadership — his bio is here.
On the OECD effort: Found a great book on something I followed pretty closely at the time it was going on: the Organization for Economic Co-operation and Development's effort in the late '90s–early aughts to isolate countries that engaged in "harmful tax competition." Havens in a Storm: The Struggle for Global Tax Regulation, by J.C. Sharman, recounts that effort, what was behind it, and why it failed. Sharman did a lot of field work, and comes to some interesting conclusions, among them: that corporations that benefit from the use of offshore tax havens were not at all involved in the effort against the OECD, either domestically (the U.S. pulled out of the effort in 2001) or internationally (he contrasts the lack of corporate involvement in the tax haven issue to robust corporate involvement in OECD efforts to regulate e-commerce).
The power of blacklisting: Sharman argues that the main power of the OECD initiative was its ability to label tax havens as bad actors, making them potentially less attractive destinations for capital: "…once jurisdictions were blacklisted, their reputations were changed. They were left vulnerable to capital flight because third party investors were more likely to either avoid or withdraw from listed states." Blacklist turns up in the Foreign Lobbying Influence Tracker as an issue of concern.
Inconsistencies: Sharman also points out many internal problems with the OECD initiative–not the least of which was omitting from its list of harmful tax competitors Switzerland and Luxembourg, both of which are OECD members. Rich tax havens in Europe were let off the hook, while poorer tax havens in the Caribbean, Central America, the South Pacific and Africa were blacklisted.
The role of ideology: Sharman mainly credits the Center for Freedom and Prosperity for turning back the OECD effort, with an assist from the havens themselves (although it's also worth noting that there was no unified response from tax havens: The Cayman Islands very quickly got on board with OECD effort, for example, while Barbados held out–despite its financial services industry's preference for cooperation with the OECD). Andrew Quinlan, Dan Mitchell and Veronique de Rugy played the pivotal role in redefining the argument from "harmful tax competition" to "global tax regulation," arguing that the OECD was attempting to impose some of its members' preferences for high taxes on the rest of the world. Sovereignty became the issue, rather than the OECD's preferred narrative of a harmful "rush to the bottom" caused by tax competition. One thing Sharman doesn't get into enough–Quinlan, Mitchell and de Rugy had much easier going with a Republican Congress and the Bush administration.
Current scene: With a Democratic Congress and the Obama administration, it would seem that tax havens might have less room to maneuver, and the Center for Freedom and Prosperity–which is lobbying on several fronts, and having multiple meetings on the Hill with members to oppose the Stop Tax Haven Abuse Act–would find less sympathetic ears. Quinlan told me that "there's not much of a lobbying effort by the countries themselves," and that, in the current climate havens "are willing to go along to get along and do whatever they can to survive." I have to admit, I was skeptical when Quinlan told me that "it's not like the British Virgin Islands or Antigua can afford to pay a $50,000 a month retainer to a Washington representative," since we were seeing payments higher than that from some (but not all) tax havens, but now I see, via InstaPundit, that the Cayman Islands have their own budget crisis. They might have to raise taxes…
Also: I'm going to keep following tax haven issues here and on My Political Notebook on our Open Congress platform.
Tags: Handy, tools


Irrigated Hay/Crop Land with Water Rights!
The Hay Bale would be the perfect fit for the outdoor enthusiast who enjoys working the land. Just under 5 acres, its level terrain and ample water rights, including five (5) shares of the Oil Creek Ditch and two (2) shares of the Hydraulic & Irrigating Ditch, will help make your farming ventures successful. And, it is tractor ready - till, plant, and harvest the crops, vegetables or fruits of your choice. Or, maintain its lush green hay to feed for your livestock - it currently produces 1-2 tons of natural grass hay per year. Full perimeter fencing, gate and the 8" irrigation pipe (used for flood irrigation & located on the south and west sides) are included. Enjoy the regions' mild winters, 255+ days of sunshine, low humidity and blue skies. Access to the property is via paved city street; however, it is county (not city) land with Agricultural Suburban zoning. You have the option of subdividing the property, maintaining 100% of the land as an operating farm/horse property or you may add a single-family home to the site. Underground electric, phone, water and sewer taps are available along its paved boundary line. There are no covenants or HOA. If you build, your home would not far from city amenities – employment, shopping, medical care and entertainment; such as the Canon City Whitewater Park (aka "The Riverwalk"), Royal Gorge Bridge & Park, Garden Park Fossil Area, Dinosaur Depot, Museums, Art Galleries, Fine Restaurants, Arkansas River (fly-fishing & rafting) and the Holy Cross Abbey and Winery - are just minutes away! The Hay Bale offers so many possibilities – don't hesitate to check this one out!


text:
Author Supernova: Linnea Sinclair
Back in the day when "space, the final frontier" was still a long way off, history birthed many adventurous souls around the globe: Lewis & Clark, Sacagawea, Isabella Bishop, Gudridur Thorbjarnardottir, Sir John Franklin, Amelia Earhart, Mary Kingsley, etc.
Each of their journeys was unique, but these brave men and women shared a common ability to chart new territory, discover exotic civilizations, and expand horizons. The stakes were high and the risks higher, but an indomitable spirit drove them all.
"HC SVNT DRACONES"
You might know that saying better as, "Here there be dragons."
Science fiction romance is one uncharted literary territory, replete with its own mysterious lands and creatures, but one intrepid explorer has been forging ahead to map it with a determination rivaling any of her explorer counterparts.
I'm talking, of course, about author Linnea Sinclair.
Linnea Sinclair is a former news reporter and retired private detective who pens smashingly fun science fiction romance. But if that weren't enough, she works tirelessly to promote the genre through interviews, workshops for writers, blogs, and conferences. And if that weren't enough, she runs the Intergalactic Bar & Grille, hosting a never-ending party for her zany genteel group of fans.
In 2006, Linnea Sinclair won the esteemed RITA award for her book GABRIEL'S GHOST, as well as too many other accolades to count. Her work blends action, adventure, hard SF, romance and mystery. This week I'll be showcasing this acclaimed author and her contributions to the science fiction romance genre.
Stay tuned for a contest later this week at The Galaxy Express. I'm giving away a copy of SHADES OF DARK, the sequel to Ms. Sinclair's hugely popular GABRIEL's GHOST. Here's a snippet about the story from her Web site:
For two fugitive lovers, space has no haven,
no mercy, no light—only...
SHADES OF DARK
Before her court-martial, Captain Chasidah "Chaz" Bergren was the pride of the Sixth Fleet. Now she's a fugitive from the "justice" of a corrupt Empire. Along with her lover, the former monk, mercenary, and telepath Gabriel Ross Sullivan, Chaz hoped to leave the past light-years behind—until the news of her brother Thad's arrest and upcoming execution for treason. It's a ploy by Sully's cousin Hayden Burke to force them out of hiding and it works.
With a killer targeting human females and a renegade gen lab breeding jukor war machines, Chaz and Sully already had their hands full of treachery, betrayal—not to mention each other. Throw in Chaz's Imperial ex-husband, Admiral Philip Guthrie, and a Kyi-Ragkiril mentor out to seduce Sully and not just loyalties but lives are at stake. For when Sully makes a fateful choice changing their relationship forever, Chaz must also choose—between what duty demands and what her heart tells her she must do.
Dragons or not, that's a story worth exploring!
Now here's a challenge for all of my Skiffy Rommer passengers: Imagine you're accompanying Linnea Sinclair on her mission to raise visibility for science fiction romance. What are ways we can reach out to new readers and put SFR on the map once and for all?
Posted by Heather Massey at 8:58 PM

redpajama_set_name: RedPajamaCommonCrawl


text:
Newt Gingrich: Donald Trump will win in 2020 if these two things happen
by NH Politician July 3, 2019 July 3, 2019
By Julia Musto | Fox News
President Trump needs just two things to happen for him to win the White House again in 2020, according to former House Speaker Newt Gingrich.
Speaking on "America's Newsroom", Gingrich said the president will get another four years if the economy continues on an upward trajectory and if he stays focused on the job.
"If the economy stays good and the president stays focused, he's going to win," he remarked.
While making the prediction, Gingrich pointed to the Trump campaign's increasing momentum, which he said: "is all predicated on just tremendous amounts of hard work."
TRUMP CAMPAIGN, RNC ANNOUNCE $105M FUNDRAISING HAUL, BLOWING PAST DEM CANDIDATES
On Tuesday the campaign and Republican National Committee (RNC) announced they had fundraised a record $105 million dollars in the second quarter of 2019.
The president already had an unprecedented $40.8 million in cash-on-hand on April 1, 2019. The Republican National Committee and their joint fundraising committees had a combined $82 million cash-on-hand.
""Deep down, I think President Trump's pretty confident that—when it's over—he's going to be re-elected," Gingrich said, before turning his attention to 2020 Campaign Manager Brad Parscale.
Gingrich has worked with Parscale since the Republican National Convention in 2016 and told the co-anchors he knows Parscale to be "very close" to the president. He said Parscale is the right man for the job because he believes Trump is "going to get re-elected."
"I mean, two things: look at the amount of money Parscale has raised and then look at the size of every one of these rallies," Gingrich exclaimed.
RNC'S MCDANIEL SAYS 'RADICALIZATION' OF DEM PARTY ON 'FULL DISPLAY' AT DEBATES
During his own appearance "The Story" with Martha MacCallum Tuesday evening, Parscale shared Gingrich's optimism.
He told MacCallum, "I think the president could beat anybody. The momentum we're seeing right now. I mean look…$105 million raised, a hundred million cash on hand. What we're seeing overall the president success is overseas, the momentum behind this president right now is like nothing that history has ever seen."
"I think the president is set for four more years," Parscale said definitively.
During his "America's Newsroom" appearance Wednesday, Gingrich also took aim at the crop of 2020 Democratic candidates, suggesting many people believe they are "going to go so far to the left."
BUTTIGIEG TRIPLES FUNDRAISING HAUL IN LAST QUARTER, RAKES IN NEARLY $25M
He cited the moment all ten Democratic candidates on the second debate stage raised their hands in favor of providing government-funded health care for illegal immigrants.
"They're going to leave a gap about 25 miles wide between their views and the American people," he said.
And, in terms of any Democratic contenders who could potentially dethrone the president? According to Gingrich, there's "no one." Although former Vice President Joe Biden and Senator Kamala Harris (D-CA) both pose a threat to the president. "She's probably the most dangerous of the Democrats. But, I also think that a leftwing politician from California is a pretty long way from the center of the American political system."
Gingrich predicted: "In my mind, they're going to have a nominee of the Democratic party. It will be a very left wing person and they will have almost and impossible time defending their positions."Julia Musto works with Fox News Channel's "America's Newsroom."


Mandy Actors is the largest growing jobs platform and network for like-minded professionals who are looking for their next acting role within film, TV, and commercials. We help you discover all the latest acting jobs and casting calls in NYC, Los Angeles and across the US. From feature films, short films, theatre, commercials to voice over acting jobs, our mission is to connect qualified professionals with great opportunities.
Start your job search with us here at The Mandy Network. Simply sign up, get listed and position yourself in front of casting directors who are seeking talent just like yours!
As the leading casting website in the USA, where we post thousands of acting auditions and casting calls every year, we are confident you'll find your dream crew job sooner than you think.
Salary: $15/hr per hour , Rate: $15/hr. 36 hours/wk maximum. 8% pension contribution. No health contribution.
Salary: $20.26 per hour , Pay is $20.26 per hour.


Every once in awhile, Disney Cruise Line has two cruises that cannot be booked as back to back. I remember hearing about this issue in the past. Thank goodness I have a friend who is a travel agent, who was willing to lead me in the right direction to answer your question!
The reason that you are unable to book these cruises is a US Maritime Law called "The Jones Act". This states that a ship cannot transport passengers from one US port to another US port without visiting a foreign port that is outside of North America. Therefore, since the cruise from New York to San Juan only visits St. Maarten and Tortola and the cruise from San Juan to Miami visits those same islands, it is against the law for Disney Cruise Line to transport you on these cruises back to back.
If you are looking to try back to back cruises, you might consider sailing on the Disney Fantasy out of Port Canaveral, Florida. The Fantasy alternates between the Eastern Caribbean itinerary and the Western Caribbean itinerary, so you would visit different ports each week onboard. It is one of my dreams to sail for two weeks on the Fantasy!
I hope this helps with your cruise planning! Please visit us again here at the Disney Parks Moms Panel with more questions that arise before you travel all the way from "Down Under"!


On Krogbækgaard we always have some horses for sale, especially in the fall when the season draws to a close.
To ensure that our buyers get just the right horse, we offer to rent horses to buy, whether you will hire horse 1 month or until our season starts in May is entirely up to the buyer. In this way, as a first time buyer practicing as a horse owner before taking the decision.
The price of the monthly rent is $ 700. veterinary expenses bear bearings up to 2.000Kr. per month. if the amount is higher hold own balance.


One of Busch Gardens' most popular roller coasters opened in 1999, but it had an infamously rocky start between a goose and a supermodel.
WILLIAMSBURG, Va. — The year 2019 marks a milestone for Busch Gardens Williamsburg: one of its most popular attractions, Apollo's Chariot, has thrilled and delighted park goers for exactly 20 years.
But it also marks an anniversary that one fashion model would probably like to forget.
On March 30, 1999, Fabio was on hand at the theme park to celebrate Apollo's Chariot's grand opening. He took front-seat for the inaugural voyage, along with a bevy of young maidens.
But on the ride's very first drop, Fabio found himself with a face full of feathers and a bloody nose in need of stitches.
A 10-pound goose found its way in the path of the coaster and -- at a speed of about 70 miles per hour -- landed squarely in the Italian model's face. Miraculously, Fabio's injuries were minor and while his maidens were shocked, they were otherwise unhurt.
According to the Los Angeles Times, the goose was not so lucky. It died on impact.
Fabio took it all in stride at the time, with even his publicist calling it "a testament of the man's strength." But a few weeks later he went on Good Morning America to warn people about the dangers of Apollo's Chariot.
"It was not a freak accident, and it's going to happen again," Fabio said. "A person -- or even a child -- can be killed."
In a statement at the time, Busch Gardens apologized to Fabio about the accident and said that "Safety is our number one priority, and our ride engineers are examining ways to enhance the safety of an already safe ride."
And despite Fabio's misgivings, it now does appear his "goosing" was indeed an isolated mishap. No further incidents between the ride and errant birds have occurred in the 20 years since its opening.


St. Patricks Day is officially here! The Black Squirrel Radio Web Staff put together a playlist for those of you who are still celebrating and need some motivation after fake Paddy's. This mix contains some Irish greats and drinking jams to really help you get into that St. Paddy's spirit!


The Señor de los Milagros / Lord of Miracles is the patron saint of Lima (since 1715). The origins of this devotion go back to 1651 when an African slave painted a figure of Christ on the wall of a church. The first procession took place in 1687 when much of Lima, but not the wall with the image, was destroyed by an earthquake. The Señor de los Milagros is celebrated in Lima throughout October, with much of the activity focussed on the Nazarenas church in the city centre. Smaller festivals take place in other towns and cities in Peru, and also abroad. On several days during the month an image of the Señor de los Milagros is carried through the streets of central Lima, these processions are attended by hundreds of thousands of people and are among the largest religious parades in the world.


text:
#include "app.h"
#include "utils.h"
#include "byte_stream.h"
#include "debug_utils.h"
#include "cmd_obj_ext.h"
#include "global_consts.h"
#include "intf_service.h"
#include "service_dispatcher.h"
#include "config_loader.h"
#include "server_stat.h"
#include "service_item.h"
#include <assert.h>
#include <netinet/in.h>
#include "c2cplatform/component/configcenter/config_client_set.h"
#include "c2cplatform/library/pptools/paipai_tools.h"

using namespace c2cplatform::library::pptools;

////////////////////////////////////////////////////////////////
#ifdef __cplusplus
extern "C"
{
#endif
	void process_service(void *ctx)
	{
		CServiceItem* pSvcItem = (CServiceItem*)ctx;
		assert(pSvcItem);

		//Ö´ÐÐExecuteÒý·¢soÖжÔÓÚÃüÁîºÅµÄÒµÎñÖ´ÐÐ
		//¿ÉÄÜÖ±½Ó·µ»Ø£¬RetCode=0³É¹¦»ò·Ç0ÒµÎñ´íÎóÂ룻¿ÉÄܵ÷stub4app£¬Õâ»áµ¼Öµ÷putSvcObjºÍschedule,·µ»ØRetCode=1
		//Ö±½Ó·µ»ØµÄ»°Execute½áÊøÇ°»á»Ø¸´msqqµ½¹ÜµÀ(µ÷putSvcObj)
		pSvcItem->RetCode(pSvcItem->Service()->Execute(CAPP->getSvcDispatcher().getCmdObj()));
	}
#ifdef __cplusplus
}
#endif
////////////////////////////////////////////////////////////////

//////////////////////////////
// class CServiceItem
CServiceItem::CServiceItem()
: m_pSvcItemList(NULL)
, m_pService(NULL)
, m_bStateful(true)
, m_bTimeoutCheck(false)
, m_dwCmdId(0)
, m_dwSessIdSelf(0)
, m_dwStartTimestamp(0)
, m_dwTimeout(0)
, m_poCmdObj(NULL)
, m_wVersion(APP_PLATFORM_PROTOCOL_VER)
, m_bPthSupport(false)
, m_bSchedule(false)
, m_iRetCode(0)
, m_pUCTX(NULL)
, m_nUCtxSize(0)
, m_bNeedResp(true)
, m_bSaved(false)
, m_wSvrLevelIndex(0)
, m_bNeedSetExpectRespCmdId(false)
, m_dwExpectRespCmdId(0)
, wClientPort(0)
, m_wCallOrder(0)
{
	m_poCmdObj = new CCmdObjExt;
	m_sCallerInterId = "";
	assert(m_poCmdObj);

	assert(m_oCallTrace.Init(CALLTRACE_MSGQ_KEY) == true);
}

CServiceItem::~CServiceItem()
{
	delete m_poCmdObj;

	if(m_bPthSupport)
	{
		pth_uctx_destroy(m_uctx);
		if(m_pUCTX)
			free(m_pUCTX);
	}
}

void CServiceItem::Reset(bool bResetService)
{
	if(bResetService && m_pService) //ÔÚReclaimStatfulSessionʱ²ÅÐèÒªResetÒµÎñSO·½·¨
		m_pService->Reset();

	m_poCmdObj->Reset();

	m_bTimeoutCheck = false;
	m_bIsStorm = false;

	//m_dwCmdId = 0;
	m_dwSessIdSelf = 0;
	m_dwStartTimestamp = 0;

	m_wVersion = APP_PLATFORM_PROTOCOL_VER;

	if(m_bPthSupport && !bResetService) //Ö»ÓÐApplyStatfulSessionʱ²ÅÐèÒªpth_uctx_make
	{
		pth_uctx_make(m_uctx, m_pUCTX, m_nUCtxSize, NULL, process_service, (void *)this, CAPP->UCTX());
		m_bSchedule = false;
	}

	m_bSaved = false;
	m_wSvrLevelIndex = 0;
	m_dwPkgTimestamp = 0;

	m_bNeedSetExpectRespCmdId = false;
	m_dwExpectRespCmdId = 0;
    wClientPort = 0;
}

void CServiceItem::Service(IService* pService)
{
	m_pService = pService;
	m_pService->setSvcCntl(*this);
}

int CServiceItem::putSvcObj(IServiceObject* pSvcObj,uint32_t dwResult)
{
    CAPP->ContSvrLog("in CServiceItem::putSvcObj,cmd[0x%x] result[%d]", pSvcObj->getCmdId(), dwResult);
	assert(m_poCmdObj);
	m_poCmdObj->Reset();
	m_poCmdObj->setCmdId(pSvcObj->getCmdId());

	bool bIsRequest = CCmdObjExt::isRequest(pSvcObj->getCmdId());

	if(bIsRequest) // Sending a Request
	{
        TraceStackEx_T stTraceStackEx;

        if(m_bNeedResp)
        {
            stTraceStackEx.stTraceStack.uchFlag = STATEFUL;

			//´¦Àí"cont_serverÖ§³ÖÒì²½´í°ü¶ªÆúÂß¼"
			if(m_bNeedSetExpectRespCmdId)
			{
				m_dwExpectRespCmdId = pSvcObj->getCmdId();
				// ½«Ëü±ä³ÉRespCmdId
				m_dwExpectRespCmdId &= 0xFFFF0FFF;
				m_dwExpectRespCmdId |= 0x00008000;
			}
        }
        else
        {
            stTraceStackEx.stTraceStack.uchFlag = NO_RESP;
        }
		stTraceStackEx.stTraceStack.dwSessId = m_dwSessIdSelf;
		stTraceStackEx.stTraceStack.uchDummy = 0;
		stTraceStackEx.stMsgTrack.wItem2 = (0x0000FFFF & getpid());
		stTraceStackEx.stMsgTrack.dwItem1 = CAPP->getCfgLoader().getLocalCfgItem().iMsgqBackKey;

        //ÁÙʱ±£´æÏÂclient¶ËµÄudp port
        wClientPort = m_oPkgHead.ClientPort();
        CAPP->ContSvrLog("Req ClientPort:%d", wClientPort);

        if(!m_oPkgHead.IsTraceStackEmpty())
        {
            const TraceStackEx_T& rTopTrace = m_oPkgHead.GetTopSvrLevel();
            if(0 == memcmp(&stTraceStackEx, &rTopTrace, sizeof(TraceStackEx_T)))
			{
                CAPP->ContSvrLog("Duplicated Trace in Stack");
			}
            else
			{
				if(!m_bSaved)
				{
					CAPP->ContSvrLog("always, Save to local");

					// Saving...
					m_dwPkgTimestamp = m_oPkgHead.m_stPkgHead.stOldPkgHead.u.stPassport.dwUSeconds;
					//±£´æm_oPkgHead.m_stPkgHead.stTraceStackºÍpstMsgTrackÖÁm_stTraceStack
					m_oPkgHead.SaveSvrLevel(m_stTraceStack, m_wSvrLevelIndex);
					m_bSaved = true;
					m_oPkgHead.ClearTraceStack();
					//½«stTraceStackEx(±£´æÁËcontainerÐÅÏ¢)дÈëm_oPkgHead.m_stPkgHead.stTraceStackºÍpstMsgTrack
					m_oPkgHead.PushSvrLevel(stTraceStackEx);

					//m_oPkgHead.Dump(std::cerr);
				}
				else
				{
					CAPP->ContSvrLog("[ERROR] TraceStack is NOT Empty & m_bSaved is TRUE, Drop Save-operation");
				}
			}
        }
        else
		{
			CAPP->ContSvrLog("TraceStack is Empty(it's not the first pkg for this session), no need to Save to local");
            m_oPkgHead.PushSvrLevel(stTraceStackEx);
		}

		// Reset PkgStart Timestamp before I send Request
		::gettimeofday(&m_tvTime, NULL);
		m_oPkgHead.m_stPkgHead.stOldPkgHead.u.stPassport.dwUSeconds
			= ((m_tvTime.tv_sec - PL_INNER_BASE_SECONDS) * 1000 + m_tvTime.tv_usec / 1000);

        CAPP->ContSvrLog("%s: CmdId ==> AucCallerName, m_dwCmdId[0x%x] AucCallerName:%s InvokeCmdId[0x%x]",
            __FUNCTION__,m_dwCmdId,m_oPkgHeadExt2.sAucCallerName.c_str(),pSvcObj->getCmdId());
        char szCmd[15] = {0};
        snprintf(szCmd, sizeof(szCmd), "0x%x", m_dwCmdId);
        m_oPkgHeadExt2.sCallerName = szCmd;
        m_oPkgHeadExt2.sAucCallerName = szCmd;

        if (m_oTraceContext.oTraceId.bCallType)
        {
        	// ±¾´ÎÇëÇóÐèÒª´«µÝµ÷ÓÃÉÏÏÂÎÄ, °ÑÏÂÒ»²ãRpcÐÅÏ¢·Åµ½ÏûÏ¢Àï
        	plat::CRpcId oRpcId;
        	oRpcId.dwCallerCmd = m_dwCallerCmd;			// Ö÷µ÷ÃüÁî×Ö
        	oRpcId.wCallOrder = ++m_wCallOrder;			// Ä¿±êRpcÔÚ±¾²ãµÄµ÷ÓÃ˳Ðò
        	oRpcId.dwCommand = pSvcObj->getCmdId();		// Ä¿±êRpcµÄÃüÁî×Ö
        	oRpcId.bSyncType = 0;						// ´®²¢Ðе÷ÓÃ
        	m_oPkgHeadExt2.oTraceContext.Reset();
        	m_oPkgHeadExt2.oTraceContext = m_oTraceContext;
        	m_oPkgHeadExt2.oTraceContext.dwCallerIP = CAPP->getCfgLoader().getLocalCfgItem().dwLocalIP;
        	m_oPkgHeadExt2.oTraceContext.vRpc.push_back(oRpcId);
        }
	}
    else // Sending a Response(·µ»Ø¸ønetioµÄºó¶Ë¹ÜµÀ)
    {
		if(m_bSaved)
		{
			CAPP->ContSvrLog("Restore from local");

			// Restoring...
			m_oPkgHead.RestorSvrLevel(m_stTraceStack, m_wSvrLevelIndex);
			m_oPkgHead.m_stPkgHead.stOldPkgHead.u.stPassport.dwUSeconds = m_dwPkgTimestamp;
			m_bSaved = false;
		}

        CAPP->ContSvrLog("Resp ClientPort:%d|%d", m_oPkgHead.ClientPort(), wClientPort);
        m_oPkgHead.ClientPort(wClientPort);

        assert(!m_oPkgHead.IsTraceStackEmpty());
        if(NO_RESP == m_oPkgHead.GetTopSvrLevel().stTraceStack.uchFlag)
        {
            CAPP->ContSvrLog("Drop NO_RESP Pkg, CmdId[0x%x]", pSvcObj->getCmdId());
            return 0;
        }

        if (m_oTraceContext.oTraceId.bCallType)
        {
        	// »Ø°üÇ°¼Ç¼ÈÕÖ¾
        	LogTrace("TraceContext Resp");
        	SendCallTrace("TraceContext Resp", false);
        	m_oTraceContext.Reset();
        	m_wCallOrder = 0;
        }
    }

	m_oPkgHead.Update(
		m_wVersion,  // user defined protocol version
		0, // Tmp BodyLen
		pSvcObj->getCmdId(), dwResult);

	if(bIsRequest) // I think it's route key
	{
		m_oPkgHead.Uin(dwResult);
	}

	m_oPkgHead.Legacy(false);

	// TEST :
	//m_oPkgHead.Dump(std::cout);

	CByteStreamNetwork bs(CAPP->getMsgBuf(),MAX_MSG_SIZE);
	bs.isStoring(true);
	bs.setVersion(m_wVersion);

	// Serialize
	m_oPkgHead.SerializeSTX(bs);
	m_oPkgHead.Serialize(bs);
    CAPP->ContSvrLog("[VER] version:%d Send cmd:0x%x", m_wVersion, pSvcObj->getCmdId());
    if (m_wVersion==3)//PkgHeadExt
    {
        std::string sPkgHeadExt;
        m_oPkgHeadExt.SerializeToString(&sPkgHeadExt);
        bs & sPkgHeadExt;
    }
    else if (m_wVersion == 4)//CPkgHeadExt
    {
        char sBuf[1024] = {0};
        CByteStreamNetwork bs2(sBuf, 1024);
        bs2.isStoring(true);
        bs2.setVersion(m_wVersion);
        m_oPkgHeadExt2.Serialize(bs2);
        std::string sPkgHeadExt;
        sPkgHeadExt.assign(sBuf, bs2.getWrittenLength());
        bs & sPkgHeadExt;
    }
	pSvcObj->Serialize(bs);
	m_oPkgHead.SerializeETX(bs);

	C2CPkgHeadEx* pstC2CPkgHeadEx = reinterpret_cast<C2CPkgHeadEx*>(CAPP->getMsgBuf() + 1);
	pstC2CPkgHeadEx->stOldPkgHead.dwLength = htonl(bs.getWrittenLength());

	m_poCmdObj->setUin(m_oPkgHead.Uin());
	// On Another Server
	m_poCmdObj->setBuffer(CAPP->getMsgBuf(),bs.getWrittenLength());

    // Sending a Request
	if(bIsRequest)
	{
		int iRetCode = CAPP->getSvcDispatcher().putRequestSvcObj(
            *m_poCmdObj, dwResult // RouteKey
			);
		if(iRetCode != 0)
		{
			m_oPkgHead.PopSvrLevel(); // Pop Request Stack
			CAPP->ContSvrErrLog("[ERROR]Send Request Failed: Cmd[0x%x] dwResult[%u] iRetCode[%d] PkgLen[%u] Pid[%d] SessId[%u]", pSvcObj->getCmdId(), dwResult, iRetCode, bs.getWrittenLength(), getpid(), m_dwSessIdSelf);

			//¼ÓÈëÄ£µ÷ÐÅÏ¢(Normal)
			MakeModInvokeInfo(NULL, 0xFFF0); //·¢ËÍʧ°Ü£¬IO´íÎó

			return iRetCode;
		}

        if(!m_bNeedResp) // Reset NeedResp
        {
            m_oPkgHead.PopSvrLevel(); // Pop NO_RESP Stack
            m_bNeedResp = true;
        }

		CAPP->ContSvrLog("Send Request OK: Cmd[0x%x] dwResult[%u] iRetCode[%d] PkgLen[%u] Pid[%d] SessId[%u]", pSvcObj->getCmdId(), dwResult, iRetCode, bs.getWrittenLength(), getpid(), m_dwSessIdSelf);
        return iRetCode;
	}

    // Ensure Reset NeedResp
    m_bNeedResp = true;

    // Sending a Response
	if(dwResult != 0)//²»ÕýÈ·µÄ»Ø°ü
		CAPP->getServerStat().UpdateStatValue(CServerStat::ERR_PKG_SENT, 1);

	const TraceStackEx_T& rTraceStackEx = m_oPkgHead.GetTopSvrLevel();
	CAPP->ContSvrLog("Put Back Response : MsgType[%d] MsgqKey[0x%x] PkgLen[%u]",
		rTraceStackEx.stMsgTrack.wItem2, rTraceStackEx.stMsgTrack.dwItem1, bs.getWrittenLength());

	return CAPP->getSvcDispatcher().putResponseSvcObj(
		*m_poCmdObj,
		static_cast<long>(rTraceStackEx.stMsgTrack.wItem2), // MsgType
		rTraceStackEx.stMsgTrack.dwItem1 // MsgQKey
		);
}

int CServiceItem::putErrRespSvcObj(IServiceObject* pSvcObj,uint32_t dwResult)
{
    CAPP->ContSvrLog("in CServiceItem::putErrRespSvcObj,cmd[0x%x] result[%d]", pSvcObj->getCmdId(), dwResult);
	assert(m_poCmdObj);
	m_poCmdObj->Reset();
	m_poCmdObj->setCmdId(pSvcObj->getCmdId());

    if(m_bSaved)
    {
    	CAPP->ContSvrLog("Restore from local");

    	// Restoring...
    	m_oPkgHead.RestorSvrLevel(m_stTraceStack, m_wSvrLevelIndex);
    	m_oPkgHead.m_stPkgHead.stOldPkgHead.u.stPassport.dwUSeconds = m_dwPkgTimestamp;
    	m_bSaved = false;
    }

    CAPP->ContSvrLog("Resp ClientPort:%d|%d", m_oPkgHead.ClientPort(), wClientPort);
    m_oPkgHead.ClientPort(wClientPort);

    assert(!m_oPkgHead.IsTraceStackEmpty());
    if(NO_RESP == m_oPkgHead.GetTopSvrLevel().stTraceStack.uchFlag)
    {
        CAPP->ContSvrLog("Drop NO_RESP Pkg, CmdId[0x%x]", pSvcObj->getCmdId());
        return 0;
    }

	m_oPkgHead.Update(
		m_wVersion,  // user defined protocol version
		0, // Tmp BodyLen
		pSvcObj->getCmdId(), dwResult);
	m_oPkgHead.Legacy(false);

	CByteStreamNetwork bs(CAPP->getMsgBuf(),MAX_MSG_SIZE);
	bs.isStoring(true);
	bs.setVersion(m_wVersion);

	// Serialize
	m_oPkgHead.SerializeSTX(bs);
	m_oPkgHead.Serialize(bs);
    CAPP->ContSvrLog("[VER] version:%d Send cmd:0x%x", m_wVersion, pSvcObj->getCmdId());
    if (m_wVersion==3)//PkgHeadExt
    {
        std::string sPkgHeadExt;
        m_oPkgHeadExt.SerializeToString(&sPkgHeadExt);
        bs & sPkgHeadExt;
    }
    else if (m_wVersion == 4)//CPkgHeadExt
    {
        static char sBuf[1024];
        CByteStreamNetwork bs2(sBuf, 1024);
        bs2.isStoring(true);
        bs2.setVersion(m_wVersion);
        m_oPkgHeadExt2.Serialize(bs2);
        std::string sPkgHeadExt;
        sPkgHeadExt.assign(sBuf, bs2.getWrittenLength());
        bs & sPkgHeadExt;
    }
	pSvcObj->Serialize(bs);
	m_oPkgHead.SerializeETX(bs);

	C2CPkgHeadEx* pstC2CPkgHeadEx = reinterpret_cast<C2CPkgHeadEx*>(CAPP->getMsgBuf() + 1);
	pstC2CPkgHeadEx->stOldPkgHead.dwLength = htonl(bs.getWrittenLength());

	m_poCmdObj->setUin(m_oPkgHead.Uin());
	// On Another Server
	m_poCmdObj->setBuffer(CAPP->getMsgBuf(),bs.getWrittenLength());

    // Ensure Reset NeedResp
    m_bNeedResp = true;

    // Sending a Response
	if(dwResult != 0)//²»ÕýÈ·µÄ»Ø°ü
		CAPP->getServerStat().UpdateStatValue(CServerStat::ERR_PKG_SENT, 1);

	const TraceStackEx_T& rTraceStackEx = m_oPkgHead.GetTopSvrLevel();
	CAPP->ContSvrLog("Put Back Response : MsgType[%d] MsgqKey[0x%x] PkgLen[%u]",
		rTraceStackEx.stMsgTrack.wItem2, rTraceStackEx.stMsgTrack.dwItem1, bs.getWrittenLength());

	return CAPP->getSvcDispatcher().putResponseSvcObj(
		*m_poCmdObj,
		static_cast<long>(rTraceStackEx.stMsgTrack.wItem2), // MsgType
		rTraceStackEx.stMsgTrack.dwItem1 // MsgQKey
		);
}

void CServiceItem::NeedResp(bool bNeedResp)
{
	m_bNeedResp = bNeedResp;
}

int CServiceItem::schedule()
{
	assert(m_bPthSupport);

	m_bSchedule = true;
	if(m_bPthSupport)
	{
        m_dwStartTimestamp = static_cast<uint32_t>(time((time_t *)0)); // Reset StartTimeStamp
		m_bTimeoutCheck = true; // Make it Active to Enable Timeout-Check
		::gettimeofday(&m_tvBegin, NULL);

		volatile int dwGuard = 20060907;

		CAPP->ContSvrLog("UCTX : CTX Switch from SvcItem to CAPP, SessId = %d", m_dwSessIdSelf);
		//Çл»»ØcontainerÖеÄsessionÖ´Ðв¿·Ö£¬·µ»Øm_iRetCode=1----2
		m_iRetCode = 1; // R_CONTINUE;
		assert(pth_uctx_switch(m_uctx, CAPP->UCTX()));
		CAPP->ContSvrLog("UCTX : CTX Switch back from CAPP, SessId = %d", m_dwSessIdSelf);

		assert(dwGuard == 20060907);

		if(!m_bTimeoutCheck)//±»timer½áÊøpth£¬²¢ÖÃΪfalse
		{
			int iRet = -1;

			if (m_bIsStorm)
			{
				//ºóÃæ·þÎñ´¦Àí³¬Ê±, ¿ÉÄÜÊÇÑ©±À
				MakeModInvokeInfo(NULL, 0xEEEEFFF9);
				iRet = -2;
			}else
			{
				//¼ÓÈëÄ£µ÷ÐÅÏ¢(Timeout)
				MakeModInvokeInfo(NULL, 0xFFF2); // »Ø°ü³¬Ê±
				iRet = -1;
			}

			//CAPP->ContSvrLog("UCTX : Reset by Timeout, SessId = %d", m_dwSessIdSelf);

			//´¦Àí"cont_serverÖ§³ÖÒì²½´í°ü¶ªÆúÂß¼"
			if(m_bNeedResp)
				m_bNeedSetExpectRespCmdId = true; //˵Ã÷ºÜ¿ÉÄܳ¬Ê±µÄCmdRespÔÚ;,¶øËüÓÖÊǺóÐø·ÃÎʲ»ÐèÒªµÄ
			return iRet; // Exception : Reset before switch back
		}
	}

	return 0;
}

CCmdObjExt& CServiceItem::getRespObj()
{
	assert(m_bSchedule);

	m_bSchedule = false;

	CCmdObjExt& rCmdObj = CAPP->getSvcDispatcher().getCmdObj();

	//¼ÓÈëÄ£µ÷ÐÅÏ¢(Normal)
	MakeModInvokeInfo(&rCmdObj, 0);

	//´¦Àí"cont_serverÖ§³ÖÒì²½´í°ü¶ªÆúÂß¼"
	m_dwExpectRespCmdId = 0; //Ö®ËùÒÔÄÜ×ßµ½ÕâÀï,˵Ã÷´Ë´ÎÊÕµ½µÄRespCmdÊÇÎÒÃÇÏëÒªµÄ,Çå¿Õ´Ë±äÁ¿
	//²»Çå¿Õm_bNeedSetExpectRespCmdId,ºÜ¿ÉÄܳ¬Ê±°ü»¹ÔÚ;,ÏÂÒ»¸öµ÷ÓüÌÐøÒªÖ´ÐдËÂß¼

	return rCmdObj;
}

void CServiceItem::MakeModInvokeInfo(CCmdObjExt* pRespCmdObj, uint32_t dwErrorCode)
{
	uint32_t dwSerialNo = m_poCmdObj->getSerialNo();
	uint32_t dwReqCmdId = m_poCmdObj->getCmdId();
	uint32_t dwPeerGroupId = (dwReqCmdId & 0xFFFF0000);
	uint32_t dwThisGroupId = CAPP->getCfgLoader().getLocalCfgItem().dwGroupId;
	uint32_t dwRouteKey = m_poCmdObj->getUin();
	std::string sThisGroupIP = CAPP->getCfgLoader().getLocalCfgItem().sLocalIP;
	std::string sPeerGroupIP = sThisGroupIP; // ȱʡµ±×÷±¾µØµ÷ÓÃ
	uint32_t dwPeerGroupIP = CAPP->getCfgLoader().getLocalCfgItem().dwLocalIP;
	uint16_t wPeerGroupPort = 0;

    //Ä£µ÷Éϱ¨µÄ¶Ô¶ËipºÍÊÇ·ñ×ßback_netio¼°Æä·ÓɲßÂÔ±£³ÖÒ»Ö£¬Ö»Äܾ¡Á¿±£³ÖÒ»ÖÂ
    uint32_t dwGroupId = CCmdObjExt::Cmd2CateId(dwReqCmdId);
	std::map<uint32_t, uint32_t>::const_iterator itMapBNG = CAPP->getCfgLoader().getLocalCfgItem().mapBackNetioGroups.find(dwGroupId);
    GroupMsgqKeyFrontMap_T::const_iterator itMKF = CAPP->getCfgLoader().getGroupMsgqKeyFront().find(dwGroupId);
	if(itMapBNG != CAPP->getCfgLoader().getLocalCfgItem().mapBackNetioGroups.end()
        || itMKF == CAPP->getCfgLoader().getGroupMsgqKeyFront().end())//ÐèҪͶµÝµ½back_netio
	{
		/*uint32_t dwOperatorUin = m_poCmdObj->getOperatorUin();
		uint32_t dwUin = m_poCmdObj->getUin();
		uint32_t dwKey = (dwUin > 0 ? dwUin : dwOperatorUin);
		uint8_t  cSet = ntohs(m_oPkgHead.m_stPkgHead.stOldPkgHead.wAppServerPort);
        int iCount = CONFIG_SET->GetCmdAddressCountBySet(dwReqCmdId, cSet);
        if (iCount == 0)
        {
            iCount = CONFIG_SET->GetCmdAddressCountBySet(dwReqCmdId, 0);
            cSet = 0;
        }
        GetAddress(dwReqCmdId, cSet, dwKey, m_InetAddr);*/
        m_InetAddr = CONFIG4DAEMON->getAppAddress(dwPeerGroupId, dwRouteKey);
        if(m_InetAddr.getAddress() != 0)
    	{
    		sPeerGroupIP = m_InetAddr.getHost();
    		dwPeerGroupIP = m_InetAddr.getAddress();
    		wPeerGroupPort = m_InetAddr.getPort();
    	}
	}

	::gettimeofday(&m_tvDiff, NULL);
	m_tvDiff.tv_sec -= m_tvBegin.tv_sec;
	m_tvDiff.tv_usec -= m_tvBegin.tv_usec;
	uint32_t dwDurTime = (m_tvDiff.tv_sec * 1000 + m_tvDiff.tv_usec / 1000);

	uint32_t dwResult = dwErrorCode; // ȱʡÊdz¬Ê±µÄ´íÎóÂë
	if(pRespCmdObj) // Got a resp
	{
		char* pRawBuf = NULL; uint32_t nLen = 0;
		pRespCmdObj->getRawBuffer(pRawBuf, nLen);
		C2CPkgHeadEx* pstC2CPkgHeadEx = reinterpret_cast<C2CPkgHeadEx*>(pRawBuf + 1);
		dwResult = pstC2CPkgHeadEx->stOldPkgHead.dwResult;
	}

	CAPP->ContSvrLog("[MIC]%u|%x|%x|%x|%u|%s|%s|%u|%x|%u",
			dwSerialNo,
			dwReqCmdId,
			dwPeerGroupId,
			dwThisGroupId,
			dwRouteKey,
			sThisGroupIP.c_str(),
			sPeerGroupIP.c_str(),
			dwDurTime,
			dwResult,
			m_oPkgHead.m_stPkgHead.stOldPkgHead.u.stPassport.dwUSeconds
			);

        uint32_t dwResultTmp = MODULE_INVOKE_SUCCESS;
        if(dwResult == 0)
            dwResultTmp = MODULE_INVOKE_SUCCESS;
        else if(dwResult == 0xFFF0)
            dwResultTmp = MODULE_INVOKE_IO_EXCEPTION;
        else if(dwResult == 0xFFF2)
            dwResultTmp = MODULE_INVOKE_NET_EXCEPTION;
        else
            dwResultTmp = MODULE_INVOKE_LOGIC_FAIL;

	CAPP->getServerStat().AddModInvokeInfo(
                MODULE_INVOKE_FOR_PLATFORM,
                dwThisGroupId,
                dwPeerGroupId,
                dwReqCmdId,
                CAPP->getCfgLoader().getLocalCfgItem().dwLocalIP,
                0,
				dwPeerGroupIP,
                wPeerGroupPort,
                __FILE__,
                __LINE__,
                "", //module create time
                dwErrorCode,
                dwDurTime,
                dwResultTmp,
                "",
                m_sCallerInterId.c_str());
}

void CServiceItem::Dump(std::ostream& os)
{
	uint32_t dwCmdBegin, dwCmdEnd;
	m_pService->getCmdIdRange(dwCmdBegin, dwCmdEnd);
	if(m_bStateful)
		os << "ServiceID [0x" << std::hex << dwCmdBegin << std::dec << "]";
	else
		os << "ServiceID Range[0x" << std::hex << dwCmdBegin << ",0x" << dwCmdEnd << std::dec << "]";

	os << " Stateful[" << (m_bStateful ? "true" : "false") << "] TimeoutCheck[" << (m_bTimeoutCheck ? "true" : "false") << "]";
	if(m_bTimeoutCheck)
	{
		os << " ActiveCmdId[" << m_dwCmdId << "]";
	}

	os << " SessIdSelf[" << m_dwSessIdSelf << "]" << std::endl;
	//    m_oPkgHead.Dump(os);
}

void CServiceItem::DumpActive(std::ostream& os)
{
	if(!m_bTimeoutCheck)
		return;

	Dump(os);
}

void CServiceItem::LogDebug(const std::string& sLog)
{
	//CAPP->getLogManager().Log(CLogManager::BUSINESS, CLogManager::DEBUG, sLog);
}

void CServiceItem::LogHex(const std::string& sLog)
{
	//CAPP->getLogManager().Log(CLogManager::BUSINESS, CLogManager::HEX, sLog);
}

void CServiceItem::LogInfo(const std::string& sLog)
{
	//CAPP->getLogManager().Log(CLogManager::BUSINESS, CLogManager::INFO, sLog);
}

void CServiceItem::LogError(const std::string& sLog)
{
	//CAPP->getLogManager().Log(CLogManager::BUSINESS, CLogManager::ERROR, sLog);
}

// SetDBResponseBuffer then getDBPkgInfoBeforeParse()
void CServiceItem::SetDBResponseBuffer(char* pBuf, uint32_t nBufLen)
{
	//assert(0);
	assert(pBuf != NULL);
	assert(nBufLen > sizeof(C2CPkgHead));
	m_stDBPkgInfo.psBuffer       = pBuf;
	m_stDBPkgInfo.dwBufferLength = nBufLen;
}

// Before Parse DB Packet
DB_PKG_INFO& CServiceItem::getDBPkgInfoBeforeParse()
{
	CAPP->ContSvrLog("in getDBPkgInfoBeforeParse()");
	//assert(0);
	return m_stDBPkgInfo;
}

// Before Make DB Packet
DB_PKG_INFO& CServiceItem::getDBPkgInfoBeforeMake()
{
	CAPP->ContSvrLog("in getDBPkgInfoBeforeMake()");

	m_oPkgHead.Update(m_wVersion, 0, 0, 0);

	memset(&m_stDBPkgInfo, 0, sizeof(m_stDBPkgInfo));
	m_stDBPkgInfo.stHead.wVersion = m_wVersion;
	CByteStreamNetwork bs(CAPP->getMsgBuf(), MAX_MSG_SIZE);
	bs.isStoring(true);

	m_oPkgHead.Legacy(true);

	// Push TraceStack
	TraceStackEx_T stTraceStackEx;
	//stTraceStackEx.stTraceStack.uchFlag = (m_bStateful ? STATEFUL : STATELESS);
	stTraceStackEx.stTraceStack.uchFlag = STATEFUL;
	stTraceStackEx.stTraceStack.dwSessId = m_dwSessIdSelf;
	stTraceStackEx.stTraceStack.uchDummy = 0;
	stTraceStackEx.stMsgTrack.wItem2 = (0x0000FFFF & getpid());
	stTraceStackEx.stMsgTrack.dwItem1 = CAPP->getCfgLoader().getLocalCfgItem().iMsgqBackKey;
	m_oPkgHead.PushSvrLevel(stTraceStackEx);

	this->m_oPkgHead.Serialize(bs);
	assert(bs.getWrittenLength() > sizeof(C2CPkgHead));

	memcpy(&m_stDBPkgInfo.stHead,CAPP->getMsgBuf(),sizeof(C2CPkgHead));

	memcpy(m_stDBPkgInfo.sCookie2,(CAPP->getMsgBuf()+sizeof(C2CPkgHead)),AP_PKG_COOKIE2_LENGTH);
	m_stDBPkgInfo.stHead.wCookie2Length = htons(AP_PKG_COOKIE2_LENGTH);
	m_stDBPkgInfo.stHead.dwAppServerIP = 0;
	m_stDBPkgInfo.stHead.wAppServerPort = 0;

	m_stDBPkgInfo.psBuffer       = CAPP->getMsgBuf();
	m_stDBPkgInfo.dwBufferLength = MAX_MSG_SIZE;

	return m_stDBPkgInfo;
}

int CServiceItem::putDBPkg(DB_PKG_INFO& stDBPkgInfo)
{
	CAPP->ContSvrLog("in putDBPkg()");
	//assert(0);
	m_InetAddr = CONFIG4DAEMON->getServiceAddress(DBR_SVC_NAME.c_str(),ntohl(stDBPkgInfo.stHead.u.stPassport.dwOperatorId));

	CAPP->ContSvrLog("[CServiceItem::putDBPkg] InetAddr for Uin[%d] is [%s:%d]",
		ntohl(stDBPkgInfo.stHead.u.stPassport.dwOperatorId), m_InetAddr.getHost(), m_InetAddr.getPort());

	//return 0;

	return CAPP->SendData(stDBPkgInfo.psBuffer,stDBPkgInfo.dwBufferLength,m_InetAddr.getHost(),m_InetAddr.getPort());
}

void CServiceItem::Stateful(bool bStateful)
{
	m_bStateful = bStateful;

	m_bPthSupport = CAPP->getCfgLoader().getLocalCfgItem().bPthSupport;
	if(m_bPthSupport && m_bStateful)
	{
		m_nUCtxSize = CAPP->getCfgLoader().getLocalCfgItem().nPthUCtxSize * 1024;//nPthUCtxSize kbytes
		//CAPP->ContSvrLog("UCTX : CTX Make for Service, UCtxSize = %d", m_nUCtxSize);
		pth_uctx_create((pth_uctx_t *)&m_uctx);
		m_pUCTX = (char*)malloc(m_nUCtxSize);
		assert(m_pUCTX);
	}
}

void CServiceItem::SetTraceContext(const plat::CTraceContext& oTraceContext)
{
	m_oTraceContext = oTraceContext;
	::gettimeofday(&m_tvContextTime, NULL);
	m_oTraceContext.vRpc.back().dwLocalIP = CAPP->getCfgLoader().getLocalCfgItem().dwLocalIP;
}

void CServiceItem::LogTrace(const std::string& sMsg)
{
	struct timeval tvTime;
	::gettimeofday(&tvTime, NULL);
	uint64_t qwCurTimestamp = (tvTime.tv_sec * 1000000) + tvTime.tv_usec;
	uint64_t qwContextTimestamp = (m_tvContextTime.tv_sec * 1000000) + m_tvContextTime.tv_usec;

	char sBuf[128] = {0};
	snprintf(sBuf, sizeof(sBuf), "0x%02x%08x%04x%016lx",
			m_oTraceContext.oTraceId.bCallType, m_oTraceContext.oTraceId.dwClientIP,
			m_oTraceContext.oTraceId.wPid, m_oTraceContext.oTraceId.qwTimeStamp);
	std::stringstream oss;
	oss << "TraceId[" << sBuf << "], CallerName[" << m_oPkgHeadExt2.sCallerName
		<< "], CallerIP[" << m_sCallerIp
		<< "], CallType[" << m_oTraceContext.sCallType
		<< "], ContextTimestamp[" << qwContextTimestamp
		<< "]us, CostTime[" << qwCurTimestamp - qwContextTimestamp
		<< "]us" << endl;
	size_t i = 0;
	for (; i < m_oTraceContext.vRpc.size(); ++i)
	{
		plat::CRpcId rpc = m_oTraceContext.vRpc[i];
		oss << "RPC Layer" << i + 1 << ": CallerCmd[0x" << std::hex << rpc.dwCallerCmd << std::dec
			<< "], CallOrder[" << rpc.wCallOrder
			<< "], Command[0x" << std::hex << rpc.dwCommand << std::dec
			<< "], IP[" << CPaiPaiTools::IpInt2String(rpc.dwLocalIP) << "]"
			<< endl;
	}
	CAPP->ContSvrLog("%s: %s", sMsg.c_str(), oss.str().c_str());
}

void CServiceItem::SendCallTrace(const std::string& sMsg, const bool bIsReq)
{
	struct timeval tvTime;
	::gettimeofday(&tvTime, NULL);
	uint64_t qwCurTimestamp = (tvTime.tv_sec * 1000000) + tvTime.tv_usec;
	uint64_t qwContextTimestamp = (m_tvContextTime.tv_sec * 1000000) + m_tvContextTime.tv_usec;
	stReqMsg req;

	req.lMsgType = REQ_MESSSAGE_TYPE;
	req.dwQPS = 0;

	// traceID
	snprintf(req.sTraceId, sizeof(req.sTraceId), "%02x%08x%04x%016lx",
			m_oTraceContext.oTraceId.bCallType, m_oTraceContext.oTraceId.dwClientIP,
			m_oTraceContext.oTraceId.wPid, m_oTraceContext.oTraceId.qwTimeStamp);

	// IsReq
	if (bIsReq)
		req.bIsReq = 1;
	else
		req.bIsReq = 0;

	// callerIP & callType & callerName
	strncpy(req.sCallerIP, m_sCallerIp.c_str(), sizeof(req.sCallerIP) - 1);
	strncpy(req.sCallType, m_oTraceContext.sCallType.c_str(), sizeof(req.sCallType) - 1);

	// ³ýCGIÍâ, ¸÷·þÎñ»á°ÑsCallerNameÉèÖÃΪÃüÁî×Ö, Ö»ÓзǷþÎñ²Å°Ñ¸Ã×Ö¶ÎÉϱ¨
	std::size_t found;
	found = m_dwCallerName.find("0x");
	if (found == string::npos)
		strncpy(req.sSvcName, m_dwCallerName.c_str(), sizeof(req.sSvcName) - 1);

	// timeStamp & costTime
	req.qwTimestamp = qwContextTimestamp;
	req.qwCostTime = qwCurTimestamp - qwContextTimestamp;

	// RpcLayer & callOrder & sCallerCommand & sCommand & sCmdIP
	plat::CRpcId rpc = m_oTraceContext.vRpc[m_oTraceContext.vRpc.size()-1];
	req.dwRpcLayer = m_oTraceContext.vRpc.size(); /* ´ÓµÚ1²ã¿ªÊ¼¼ÆÊý */
	req.dwCallOrder = rpc.wCallOrder;
	req.bSyncType = rpc.bSyncType;
	snprintf(req.sCallerCommand, sizeof(req.sCallerCommand), "%x", rpc.dwCallerCmd);
	snprintf(req.sCommand, sizeof(req.sCommand), "%x", rpc.dwCommand);
	strncpy(req.sCmdIP, CPaiPaiTools::IpInt2String(rpc.dwLocalIP).c_str(), sizeof(req.sCmdIP) - 1);

	if(m_oCallTrace.SendTraceMsg(&req, sizeof(stReqMsg) - sizeof(long)) == -1)
		CAPP->ContSvrLog("send calltrace FAILED: Err[%s], CallTraceErr[%s]", sMsg.c_str(), m_oCallTrace.GetErrMsg());
	else
		CAPP->ContSvrLog("send calltrace SUCCESS: TotalSize[%d], MsgType[%ld]", sizeof(stReqMsg), req.lMsgType);
}

redpajama_set_name: RedPajamaGithub


text:
Puwi-puwi, auch puik-puik oder pui-pui, sind unterschiedliche Einfachrohrblattinstrumente, gedoppelte Einfachrohrblattinstrumente und Doppelrohrblattinstrumente, die hauptsächlich auf den indonesischen Inseln Java und Sulawesi gespielt werden. Die zentraljavanische puwi-puwi ist ein seltenes oder verschwundenes, hölzernes Einfachrohrblattinstrument mit einer konischen Bohrung; in Südsulawesi besteht das heute gleichfalls seltene Einfachrohrblattinstrument aus einer zylindrischen Bambusröhre. Zwei dieser Röhren können zu einer Doppelklarinette verbunden sein.

Bekannter ist puik-puik in Südsulawesi als ein mit der javanischen tarompet verwandtes, konisches Doppelrohrblattinstrument, das in einem kleinen Ensemble mit der Trommel ganrang zur Begleitung von pakarena-Tänzen gespielt wird. Der höfische Frauentanz pakarena ist eine Kulturtradition der Makassaren.

Auf der Insel Alor bezeichnete puwi-puwi Anfang des 20. Jahrhunderts ein kleines, aus einem Blatt gefertigtes Blasinstrument mit Doppelrohrblatt.

Herkunft und Verbreitung

Rohrblattinstrumente
In Südostasien lassen sich vier Gruppen von Rohrblattinstrumenten unterscheiden: 1) einfache kurze Reisstrohpfeifen, bei denen ein seitlicher Einschnitt einen Halm zu einem Einfachrohrblattinstrument macht, 2) Instrumente aus Bambus oder Holz mit einem am Mundstück angebrachten Einfachrohrblatt und einer zylindrischen oder leicht konischen Bohrung, 3) gedoppelte Einfachrohrblattinstrumente (Doppelklarinetten) aus zwei parallel verbundenen Spielröhren und 4) mehrere (hier erwähnte) Typen von Doppelrohrblattinstrumenten, meist mit konischer Röhre (Kegeloboen).

Die im gesamten Malaiischen Archipel am weitesten verbreiteten Blasinstrumente sind Längsflöten aus Bambus oder Holz und unter diesen kommen vermutlich Außenkernspaltflöten vom Typ der javanischen suling am häufigsten vor. Suling werden solistisch zur privaten Unterhaltung, in kleinen informellen Ensembles zur Gesangsbegleitung und in den großen klassischen Orchestern (gamelan) gespielt. Doppelrohrblattinstrumente sind wesentlich seltener und in Indonesien nur regional in einem Inselbogen vom Norden Sumatras: Aceh (srune), Nordsumatra (sarune bei den Batak), Westsumatra (serunai bei den Minangkabau) bis nach Java (tarompet, selompret), Bali und Lombok (preret) bis Sumbawa und Südsulawesi bekannt. Sie werden in den meisten Fällen für die laut klingende Festmusik bei Prozessionen und zeremoniellen Veranstaltungen verwendet.

Einfachrohrblattinstrumente

Selbst gefertigte Einfachrohrblattinstrumente aus Reisstrohhalmen, deren Lautstärke durch ein als Schalltrichter umgebundenes Blatt vergrößert wird, kommen praktisch überall dort vor, wo Reis angebaut wird. Über einige weitere Inseln als die bereits genannten gibt es Berichte über Einfachrohrblattinstrumente aus Bambus oder Holz, die in derselben Funktion wie die Flöten, aber im Unterschied zu den Doppelrohrblattinstrumenten meist nur im informellen Rahmen und solistisch eingesetzt werden. In Ensembles werden sie selten verwendet.

In Asien sind Einfachrohrblattinstrumente – von den einfachen Grashalmpfeifen abgesehen – allgemein selten. Zu den wenigen Rohrpfeifentypen gehören beginnend im Westen die sipsi in der Türkei, die pilili in Georgien, die dilli tüýdük in Turkmenistan und die balaban weiter östlich in Zentralasien. Hinzu kommen einige Hornpfeifen von der Ukraine (rischok) über Russland (schaleika, brelka) bis nach Armenien (pku) und in der isolierten Region Nordostindien (pepa). In Nordindien bezeichnet murali (Hindi, auch murli, allgemein "Flöte") unter anderem ein seltenes Einfachrohrblattinstrument aus einer schlanken Bambusröhre.

Ein wesentlich weiter, in ganz Indien verbreitetes, gedoppeltes Blasinstrument mit einer Windkapsel ist die pungi, die wiederum als Vorstufe der indischen Sackpfeife mashak betrachtet werden kann. Gedoppelte Blasinstrumente (Flöten und Rohrblattinstrumente), die seit dem 3. Jahrtausend v. Chr. aus Mesopotamien bekannt sind, tauchen im 2./1. Jahrhundert v. Chr. als Reliefabbildungen an indischen Stupas auf. Sie waren damals und sind bis heute – vom Windkapselinstrument pungi abgesehen – in Indien selten; immerhin kommen in Indien gedoppelte Einfachrohrblattinstrumente gegenüber solchen mit einzelnen Spielröhren häufiger vor. Dasselbe gilt für China.

In mit Ziegeln gemauerten Grabkammern in der vietnamesischen Provinz Thanh Hóa aus dem 1. Jahrhundert vor und nach der Zeitenwende wurden Bronzeobjekte gefunden, die Hinweise auf die Verwendung von Einfachrohrblattinstrumenten geben. Musizierende Figuren, die einen Kandelaber und andere Bronzelampen verzieren, zeigen Blasinstrumente mit einer Spielröhre, jedoch keine Doppelblasinstrumente vom Typ des griechischen aulos. Der Kandelaber könnte aus dem weiter südlich gelegenen, von indischer Kultur geprägten Reich Funan stammen. Er ist stilistisch mit der Kunst des Kuschana-Reichs im südlichen Zentralasien und in Nordindien verwandt, das kulturell wiederum vom antiken Griechenland beeinflusst war. Im 15./16. Jahrhundert gab es in Vietnam ein Ensemble, das Sängerinnen mit dem gedoppelten Einfachrohrblattinstrument địch quản, der Querflöte trúc địch, der Laute đổi cảm, der Sanduhrtrommel yêu cồ und dem Bambusschlagstab trưởng cùng begleitete. Vermutlich gelangten Doppelklarinetten von Indien (ohne die Windkapsel der pungi) während der hindu-javanischen Zeit nach Java und weiter nach Sulawesi, wo der hinduistische Kultureinfluss im 13./14. Jahrhundert den Süden der Insel erreichte.

Einfachrohrblattinstrumente aus Reisstrohhalmen heißen auf der Malaiischen Halbinsel serunai padi (aus serunai, "Rohrblattinstrument", und dem Zusatz padi, "Reispflanze"). Die gleichen längsgeblasenen Reisstrohhalme sind im Bundesstaat Sabah als kungkuyak oder pumpuak bekannt. Ähnlich machen auch die Batak in der Provinz Nordsumatra in ihrer Instrumentenklassifizierung keinen Unterschied zwischen den Rohrblattinstrumententypen und bezeichnen alle als sarune(i), wobei die Einfachrohrblattinstrumente regional einen Zusatz wie sarunei na met-met ("kleines Rohrblattinstrument"), sarunei buluh ("Bambus-Rohrblattinstrument") oder sarunei ajang erhalten. Die sarunei mit Einfachrohrblatt spielen in mehreren Unterhaltungsensembles der Batak mit der Zupflaute hasapi zusammen. In der Provinc Aceh bildet das Einfachrohrblattinstrument srune (saruné) mit zwei großen Zylindertrommeln geundrang ein Instrumentalensemble.

Weitere, zum Teil historische Namen für idioglotte (Rohrblatt aus der Röhre herausgeschnitten) Blasinstrumente aus Reisstroh sind in Aceh wa, im dortigen Gayo-Hochland pepéon und bebeulen sowie im Alas-Gebiet iyup-iyup, bei den Toba-Batak oli-oli und alal, auf der Insel Nias lai waghè, in der Region Sunda in Westjava dami oder jarami, in Zentraljava demén oder derménan, bei den Toraja in Südsulawesi om-om, im Osten Sumbawas kafu (kafoa) und ra'us woja auf der Insel Flores. Von Flores wurden auch sieben bis zwölf Zentimeter lange, heteroglotte Einfachrohrblattinstrumente aus Bambus erwähnt (orupi und hu'a ha'u). Die bebeulen der Gayo im Gebiet Takengon in Aceh ist eine etwa 20 Zentimeter lange Klarinette aus einem Reisstrohhalm von 3 Millimetern Durchmesser und einem Schallbecher, der aus umgewickelten Pandanusblättern besteht. Die Position der vier bis sechs Fingerlöcher wird nicht exakt eingemessen, dafür dauert die Herstellung nur rund eine halbe Stunde.

Der alte Name für Reisstroh-Klarinetten in der hindu-javanischen Literatur (bis zum 15. Jahrhundert) ist damyadamyan. Sundanesisch dami und in Zentraljava demén sind hiervon abgeleitet. Jaap Kunst fand in den 1920er Jahren zwei Arten von Blasinstrumenten aus Reisstroh. Die demén (oder derménan) besteht aus einem Abschnitt mit einem offenen unteren Ende und einem durch einen Fruchtknoten geschlossenen oberen Ende. Direkt hinter dem geschlossenen Ende ist ein Schlitz eingeschnitten. Das entstandene Rohrblatt umschließt der Spieler vollständig mit dem Mund, sodass es in seinem Mundraum frei schwingen kann. Ein solches Blasinstrument kann zwei oder drei Fingerlöcher und einen Schalltrichter aus umgebundenen Blattstreifen der Kokosnusspalme besitzen. Derselbe Reisstrohhalm ergibt anders eingeschnitten ein einfaches Instrument mit Doppelrohrblatt.

Eine eigene Geschichte hat der Orchestertyp musik bambu klarinet  der Minahasa in der Provinz Nordsulawesi, der kurz vor dem Zweiten Weltkrieg als Abwandlung des hybriden Ensembles musik bambu seng ("Musikgruppe-Bambus-Zink") entstand. Dieses seit den 1930er Jahren aus Nachbauten europäischer Blechblasinstrumente in den namentlich genannten Materialien bestehende Orchester wurde um eine sogenannte klarinet, eigentlich eher ein Sopransaxophon aus Bambus, erweitert und heißt seitdem musik bambu klarinet.

Bauform und Spielweise

Java
In Zentraljava ist die puwi-puwi ein Einfachrohrblattinstrument mit einer konisch gebohrten Holzröhre und einem Rohrblatt aus Rattan. Der Schnitt ist von oben nach unten geführt, das heißt, das frei schwingende Ende des Rohrblatts ist dem Spieler zugewandt (anaglottes Rohrblatt). Während sich die Position des Rohrblatts von vielen anderen indonesischen Einfachrohrblattinstrumenten unterscheidet, wird das obere Ende wie bei allen indonesischen Typen vom Spieler vollständig in den Mund genommen. Die javanische puwi-puwi besitzt sechs Fingerlöcher und ein Daumenloch an der Unterseite. Damit lassen sich sieben Töne mit einem Tonumfang von ungefähr d1 bis d2 bei einem mittelstarken Blasdruck produzieren, wobei der oberste Ton Jaap Kunst zufolge nicht gespielt wird. Die Höhe jedes Tons kann durch starken oder schwachen Blasdruck im Bereich einer kleinen Terz variiert werden.

Auf Java kam die puwi-puwi in den ersten Jahrzehnten des 20. Jahrhunderts ausschließlich in den kleinen Militärkapellen (prajurit-Musik) am Sultanshof in Yogyakarta und vor dieser Zeit auch in Surakarta zum Einsatz. Des Weiteren gehörten zu diesen aus indonesischen und europäischen Instrumenten bestehenden Orchestern Querflöten (suling) mit sechs Fingerlöchern, Trompeten europäischer Produktion, Nachahmungen europäischer Marschtrommeln, zwei unterschiedlich große Buckelgongs, von denen der größere gong und der kleinere bendé heißt, kechèr (Zimbelpaar, eines davon auf einem Holzkasten montiert), kendang (große zweifellige Fasstrommel) und ketipung (kleine, konische, zweifellige Trommel). Damit spielten die Orchester zeremonielle Lieder und Märsche, deren Titel teilweise von niederländischen Eigennamen abgeleitet sind.

Die von Jaap Kunst gemessenen Frequenzen zweier puwi-puwi weichen voneinander ab und entsprechen auch nicht der üblichen pelog- oder slendro-Stimmung und nicht den Tonhöhen der Querflöte, obwohl beiden Blasinstrumente im prajurit-Ensemble zusammenspielen. Murray Barbour (1963) nahm die Abweichungen der bei der javanischen puwi-puwi gemessenen Tonhöhen beispielhaft zum Anlass, um die von Kunst aufgestellte Theorie exakt festgesetzter Stimmungen des javanischen gamelan zu kritisieren. Die Annahme eines festen Tonhöhensystems in der javanischen Musik bildete die Voraussetzung für die von Erich von Hornbostel eingeführte und auch von Jaap Kunst vertretene Blasquintentheorie, die heute nicht mehr aufrechterhalten wird.

Sulawesi

Einfachrohrblattinstrument
Auch auf Sulawesi ist das am meisten gespielte Blasinstrument die Bambuslängsflöte (suling). Um 1920 fand der schwedische Ethnograph Walter Kaudern in Zentralsulawesi (erwähnt ist der Ort Kulawi im Regierungsbezirk Sigi) pupai genannte, einfache Blasinstrumente aus einem fünf bis sieben Zentimeter langen Reisstrohhalm mit ein bis zwei seitlichen Einschnitten am oberen Ende und einem kegelförmigen Schalltrichter aus spiralig umwickelten Pandanusblättern. An der Ostspitze von Zentralsulawesi (Regierungsbezirk Banggai) ist dieses Blasinstrument mit einem Blatttrichter von maximal 50 Zentimetern Länge und 10 Zentimetern Durchmesser als leleo bekannt. Andernorts heißt es sikunru.

Einfachrohrblattinstrumente aus Bambus kommen vorwiegend im Süden vor. In der Umgebung von Makassar, der Hauptstadt der Provinz Südsulawesi und in der Provinz Nordsulawesi bezeichnet puwi-puwi ein etwa 23 Zentimeter langes, konisches Einfachrohrblattinstrument, das aus drei kurzen Bambusabschnitten zusammengesetzt ist. Der Name wird in einer alten Palmblatt-Chronik (Lontara Makassar) erwähnt, demnach wurde das Instrument an Herrscherhäusern auf der Insel verwendet. In Südsulawesi bestehen die Klarinetten aus einem einzelnen dünnen Bambusrohr mit einem wie auf Java nach oben gerichteten Rohrblatt, das entweder idioglott oder heteroglott ist (aus anderem Material eingesetzt), und einem konischen Schalltrichter aus Pandanusblattwicklungen. Vier Fingerlöcher wurden beim beschriebenen, musealen Instrument in die im Bereich der Löcher abgeflachte Spielröhre eingebrannt. Die Bambusklarinetten sind als keke-keke, banci-banci und basing-basing bekannt, wobei zumindest basing-basing (und bacing-pacing) auch Doppelklarinetten aus zwei verbundenen Bambusröhren bezeichnen kann. Diese sind durch eine längs in der Mitte an der Unterseite aufgelegte, dünne Holzleiste fixiert. Die Doppelblasinstrumente besitzen vier bis sechs Fingerlöcher und keinen Schallbecher. In jede Spielröhre der Doppelblasinstrumente ist ein Mundstück aus einem dünneren Bambus eingesteckt. Das aufgesetzte Rohrblatt ist mit einem Schnurring versehen, der verschoben werden kann, um die Länge des freien Endes zu verändern.

Walter Kaudern vermutet, die Einfachrohrblattinstrumente könnten von Java oder den Kleinen Sundainseln nach Südsulawesi eingeführt worden sein, von wo sie sich nach Norden bis zu den Toraja verbreiteten, vergleichbar etwa der Bootslaute kacapi(ng) in Südsulawesi, die etliche Verwandte auf den Sundainseln (jungga auf Sumba, ketadu auf Sawu) und im übrigen Malaiischen Archipel hat (sape auf Borneo, hasapi auf Sumatra). Das Wort basing-basing ist möglicherweise mit bansi für ein Einfachrohrblattinstrument auf Flores verwandt (und dieses mit der Hindi-Bezeichnung der indischen Flöte, bansi). Auf Timor heißt das Blasinstrument aus einem kurzen, geschälten Bambusrohr mit drei bis vier Fingerlöchern und mit einem großen kegelförmigen Schalltrichter aus Blättern mots und in Westsumatra pupui(k), was an den Namen des identischen Instrument pupai von Sulawesi erinnert, und bei den Minangkabau von Westsumatra bezeichnet pupuwi eine idioglotte Bambusklarinette. Puwi-puwi und pupai scheinen verwandte Wörter mit einem einheimischen Ursprung zu sein. Möglicherweise gehört zum selben Wortstamm auch der powiwi genannte Vogel, dessen Lautäußerungen bei gewissen religiösen Ritualen eine Rolle spielen und diese wurden vielleicht mit dem Klang der Blasinstrumente in Verbindung gebracht.

Doppelrohrblattinstrument

Das Wort puwi-puwi wird in der damaligen Schreibweise poewi-poewi in Benjamin Frederik Matthes Makassaarsch-Hollandsch woordenboek (1859) als Musikinstrument ("Klarinette") übersetzt; papoewi-poewi ist jemand, der dieses Musikinstrument spielt. Mit der heute in Südsulawesi üblichen Schreibweise puik-puik (oder pui-pui) ist hauptsächlich ein konisches Doppelrohrblattinstrument gemeint. Walter Kaudern beschreibt ein solches Instrument aus vier schlanken, ineinandergeschobenen Bambusröhren, von denen die mittleren beiden an ihren dünneren Enden durch Messinghülsen vor dem Ausreißen geschützt sind. Zur Schallverstärkung ist am unteren Ende ein Segment einer Kokosnussschale angebracht. In der zweitgrößten Röhre befinden sich sechs Fingerlöcher in gleichen Abständen an der Oberseite und ein Daumenloch an der Unterseite gegenüber zwischen dem ersten und zweiten Fingerloch. Das Mundstück ist mit einer kleinen runden Lippenstütze aus Metall ausgestattet. Die beiden Rohrblätter aus einem Palmblatt sind mit einer dünnen Schnur festgebunden. Dieser Instrumententyp gehört in eine Reihe zu den bekannten Kegeloboen von Sumatra (serunai) über Java (tarompet, selompret) bis Lombok (preret). Kegeloboen werden heute häufig aus einer konischen Holzröhre mit einem Mundstück und einer Lippenstütze aus Messingblech angefertigt.

Puik-puik spielen in kleinen Ensembles zur Tanzbegleitung und in der zeremoniellen Musik. Pakarena ist ein langsamer und würdevoller Tanz, der in unterschiedlichen Variationen vorkommt. Er stellt eine höfische Kunstform des ehemaligen Königreichs Gowa dar und war ursprünglich ein Tanz der adligen jungen Damen. Im Verlauf der späteren niederländischen Kolonialzeit (zwischen etwa 1880 und 1942) wurde der Tanzstil zugleich zu einer Unterhaltungsform des einfachen Volkes außerhalb der Palastmauern. Häufig tritt eine Gruppe von vier bis sechs Mädchen auf, begleitet von mehreren zweifelligen Fasstrommeln (ganrang, ähnlich der kendang), einer mit Zirkularatmung geblasenen puik-puik, die eine konstante Melodie spielt, einem großen hängenden Buckelgong (gong, funktionell dem javanischen gong ageng entsprechend) und einer Bambusschlitztrommel (kattok-kattok). Gelegentlich kommen Eisenschlagplatten (anak baccing) und Bambusschlaggabeln (lea-lea oder parappasa) hinzu. Tanz und Musik des ganrang-Ensembles wurden zu einem Charakteristikum der makassaresischen Kultur. Pakarena-Tanzgruppen werden zu Hochzeiten, Beschneidungen und anderen Familienfeiern eingeladen. Ein wesentliches Merkmal der Aufführungen ist der Gegensatz zwischen den insichgekehrt und emotionslos agierenden Tänzerinnen, deren Bewegungen sich nicht an den lebhaft spielenden und vor allem wild trommelnden Musikern orientieren. Die möglichen Interpretationen hierfür kreisen um die Zurschaustellung einer traditionellen Geschlechterrolle bei den Makassaren, zu der unnahbare, sich distanziert gebende Frauen und protzige Männer gehören.

Das ganrang-Ensemble entspricht in seiner Besetzung Doppelrohrblattinstrument als Melodieführung mit Trommeln und Gongs dem Spiel der hne im hsaing waing-Ensemble in Myanmar, der sralai im kambodschanischen pinpeat-Ensemble und der pi nai im piphat-Ensemble in Thailand.

Von den 1950er bis in die 1970er Jahre war die buginesische Sängerin Andi Nurhani Sapada (1929–2010) maßgeblich an der Entwicklung der darstellenden Künste der Makassaren beteiligt. Bu Nani, wie sie genannt wurde, schuf aus zahlreichen, in den Dörfern gepflegten Zeremonialtänzen Choreographien, die formal unterrichtet und bei Familienfeiern und öffentlichen Veranstaltungen auf der Bühne aufgeführt werden können. Zu einer Erzählung über den besonders verehrten Regenten von Gowa, Sultan Hasanuddin (1631–1670), choreographierte sie ein Tanzdrama, das mit 42 Tänzern und fünf Musikern besetzt ist. Anstelle der ansonsten von Westjava übernommenen kacapi-suling-Begleitmusik führte sie das pakarena-Ensemble mit zwei ganrang-Trommeln, einer puik-puik, einem Gong und der zweisaitigen Streichlaute keso-keso (ähnlich der javanischen rebab) ein.

Im ehemaligen Sultanat Bone in Südsulawesi, das im 17. Jahrhundert von Arung Palakka (1634–1696), dem Gegner des Sultans von Gowa, regiert wurde, bestand das zeremonielle Palastorchester aus tatabuang (Metallophone), puwi-puwi und Gongs. Mit tatabuang waren diverse Paarbecken und Zimbeln gemeint, die bei entsprechenden Ritualen zusammengeschlagen wurden, um böse Geister zu vertreiben. Das Orchester spielte auch zur Amtseinführung des Herrschers, wobei die anwesenden Gäste rhythmisch mit den Händen klatschten. Es war erforderlich, dass die Musik durchgängig spielte und eine Art hypnotischer Atmosphäre erzeugte. Zur kanjar genannten Zeremonie des Amtseids, die für alle Amtsträger verpflichtend war, gehörte, den am Gürtel getragenen Kris aus der Scheide zu ziehen, mit diesem in der Hand wilde Luftsprünge zu vollführen und zwischen den Sprüngen die als Eidesformel dienenden Worte zu rufen.

Weitere Inseln
Auf der Insel Selayar südlich von Sulawesi ist puwi-puwi ein gedoppeltes Einfachrohrblattinstrument. Die beiden Bambusspielröhren sind auf fast die gesamte Länge an der Außenseite quadratisch abgeflacht. Ihre fernen Enden stecken in einem großen rechteckigen Schalltrichter aus Holz. Die oberen Enden wurden in ein ähnliches konisches Holzstück geführt, das jedoch bis auf zwei kleine Löcher für die Aufnahme der Mundstücke mit integrierten Rohrblättern an der Oberseite geschlossen ist, und somit eine massive Lippenstütze bildet. Sechs Fingerlöcher an jeder Spielröhre sind parallel angeordnet. Zwischen den mittleren beiden Löchern ist der Abstand etwas größer. Auf benachbarten Inseln fand Walter Kaudern geringfügig abweichende Doppelklarinetten mit vier Fingerlöchern in jeder Spielröhre.

Die Verbreitung des Wortes puwi-puwi reicht im Osten bis zur Insel Alor, wo ein kleines Oboeninstrument aus einem Blatt so bezeichnet wird.

Literatur
 Margaret J. Kartomi, Jeremy Montagu: Puwi-puwi. In: Laurence Libin (Hrsg.): The Grove Dictionary of Musical Instruments. Band 4, Oxford University Press, Oxford / New York 2014, S. 182;
 Walter Kaudern: Ethnographical studies in Celebes: Results of the author's expedition to Celebes 1917–1920. III. Musical Instruments in Celebes. (PDF; 16 MB) Elanders Boktryckeri Aktiebolag, Göteborg 1927
 Jaap Kunst: Music in Java. Its History, its Theory and its Technique. 3. Auflage. Herausgegeben von Ernst L. Heins. Band 1. Martinus Nijhoff, Den Haag 1973

Weblinks
 Puik-puik @johnlatimojong. Youtube-Video (puik-puik, Solo einer Kegeloboe in Südsulawesi)
 Tari Pakarena: Tradisi Dari Gowa Sul-Sel (1951). Youtube-Video (pakarena, höfischer Tanz in der Tradition von Gowa mit acht Tänzerinnen in Südsulawesi)
 Performance of a pakarena, an Indonesian court dance. Youtube-Video (pakarena-Tanz mit zwei Tänzerinnen in Südsulawesi)
 Puik Puik of South Sulawesi. Indonesia Souvenirs (Abbildung einer puik-puik)

Einzelnachweise

Java (Insel)
Sulawesi
Musik (Indonesien)
Rohrblattinstrument

redpajama_set_name: RedPajamaWikipedia


Comments: 2017 Ford F-150 XLT 4x4 SuperCab with 19000 Miles at Roland Rich Ford----------------------------------------Stop by Roland Rich Ford in Delavan, IL to take this 2017 F-150 XLT for a test drive today! This 2017 F-150 XLT comes with a 2.7L EcoBoost, Navigation, Tailgate Step, Remote Start, Rear View Camera, Reverse Sensing, & Heated Front Seats. Call our sales team today at 309-244-8249 with any questions or to schedule your test drive!


text:
Rangers nip Caps
Clergy's popular writings
P.G. rallies to aid man
Soccer venue nears goal
'Good' virus ally to abalone
Hillary Clinton, Karl Rove among 2022 Panetta Lecture Series guest speakers
By Monterey Herald |
PUBLISHED: April 16, 2009 at 12:00 a.m. | UPDATED: September 11, 2018 at 12:00 a.m.
WASHINGTON (AP) — With the score tied in the third period, the New York Rangers did what they do best — kill off a power play. Then Markus Naslund popped out of the penalty box and set up the winning goal.
Naslund fed Brandon Dubinsky, who made a move that left defenseman Jeff Schultz sprawled on the ice. Dubinsky then beat goalie Jose Theodore inside the near post with 8:17 remaining, lifting the Rangers to a 4-3 victory over Alex Ovechkin and the Washington Capitals in Game 1 of the Eastern Conference series.
Scott Gomez had a goal and two assists, Nik Antropov and Naslund each had a goal and an assist, and Henrik Lundqvist made 32 saves for the seventh-seeded Rangers.
Tomas Fleischmann, Viktor Kozlov and Alexander Semin scored, Ovechkin had a pair of assists, and Jose Theodore made 17 saves for Washington.
Game 2 is Saturday in Washington.
Penguins 4, Flyers 1
Sidney Crosby and Evgeni Malkin each had a goal and an assist, and Pittsburgh shut down frustrated Philadelphia"s fleet of scorers.
Penguins goalie Marc-Andre Fleury, idle for long stretches in the first two periods as his teammates controlled play at the other end, made 26 saves to help the Penguins win their fourth consecutive conference playoff series opener.
Tyler Kennedy and Mark Eaton also scored for the Penguins, who beat the Flyers in five games last year in the Eastern Conference finals. Simon Gagne scored late in the third period for Philadelphia.
Game 2 is Friday night in Pittsburgh.
Devils 4, Hurricanes 1
Martin Brodeur made 18 saves, and Zach Parise and Jamie Langenbrunner each had a goal and an assist for New Jersey.
Defenseman Mike Mottau scored in the first period, Parise and Patrik Elias added goals in the second period, and Langenbrunner scored in the third.
Martin Brodeur, who set the regular-season record for NHL career wins last month, came within 11 minutes of tying Patrick Roy"s record for career playoff shutouts at 23 before Ray Whitney scored on a rebound.
Game 2 is Friday night in New Jersey.
Canucks 2, Blues 1
Daniel Sedin had a goal and an assist, and Roberto Luongo made 25 saves for Vancouver.
Sami Salo added a power-play goal for the Canucks, 14-1-1 at home since the start of February. Brad Boyes had a power-play goal for St. Louis.
Game 2 is Friday night in Vancouver.
Sara Boyns, Workplace Law: CalSavers compliance deadline approaching
Top 10 boys' soccer rankings
Top 10 boys' soccer rankings
Monterey Herald


Personnel - Jeremiah McDade: tenor saxophone; Donny Kennedy: alto saxophone; Paul Shrofel: piano; Solon McDade: bass; Rich Irwin: drums.
Juno award-winning bassist/composer Solon McDade releases his debut album in the company of his brother Jeremiah McDade on tenor saxophone, Donny Kennedy on alto sax, Paul Shrofel on piano, and Rich Irwin on drums. Comprising nine original tracks, predominantly faithful to the 4/4 time signature, Murals shows the quintet swinging aplomb in several tunes, letting the old school routines invade with anticipated if colorful intonations.
Elated experiences evocative of the hard-bop era such as "Whatever Whatever", and "Off The Bed Rose" thrive through audacious voice leadings while the opener "He's A Problem In the Locker Room" blurs the line between hard-bop and post-bop, embracing the moods of Wayne Shorter and Cannonball Adderley and displaying a fine collective improvisation by the pair of saxophonists. In those pieces, we can hear Irwin complementing passages with earnest drum fills or trading bars with the bandmates.
While "Blues For Sebastian" brings the horn riffing tics of the 60s, "Ali's Second Line" adds some funk, soul, and a bit more rhythmic seasoning, diverging from the post-bop orientation of "Buy The Tractor", introduced by the bandleader's woody bass and rounded off with expressive reeds for a relaxed dance. The arrival of piano and drums fixates the cadence before the stipulation of the theme through a melodic statement uttered in parallel.
The enthusiasm for swing refrains with songs like "Do Airplanes Scratch the Sky?", a modal hymn with balladic scents that still tilts for a while, and "The Ballad of Sir William Ormerod", a 3/4 piece initiated with Shrofel's rubato piano and later propelled by brushed drums. Closing out the album at a medium tempo, "A Shorter Thing" occasionally suggests Wayne Shorter's mood but confining it to a curvilinear romanticism.
Although technically well executed, I found the music obeying recurrent forms and formulas throughout. The impact would be larger if the quintet had assumed a more risk-taking posture, perhaps adding more collective improvisations and interactive passages instead of the traditional structure theme-improv-theme.
01 - He's A Problem In the Locker Room ► 02 - Buy The Tractor ► 03 - Do Airplanes Scratch the Sky?


text:
Ghana grants Citizenship to 126 Foreigners in Celebration of the Year of Return
EFCC's Arrest of 89 Alleged Yahoo Boys in Ibadan Has Got People Talking
Report says this Facial Recognition App lets Strangers find your Info with Just Your Photo
"There really was no other option" - See Prince Harry's Emotional Speech About Royal Exit
Isabel dos Santos' is Under Investigation for Corruption | Here's What We Know
Thomas Markle says Meghan & Harry are "Destroying" and "Cheapening" the Royal Family
Prince Harry & Meghan are No Longer Working Members of The Royal Family
See the Priceless Moment Anthony Joshua Presented his Championship Belts to President Buhari
Shehu Sani is Suing EFCC N100 Million for Illegally Detaining him
As part of Ghana's celebration of the "year of return," the country has granted citizenship to 126 people from the diaspora who have been living in Ghana for many years.
According to CNN, the oath of allegiance was administered by a judge in a ceremony at Jubilee House, the seat of government. The ceremony is the biggest highlight as Ghana marks 2019 as the Year of Return. One after the other, the new citizens took turns to shake hands with their president and went on to collect their citizenship certificates.
Speaking after the conferment ceremony, President Akufo-Addo stated that "I am glad you have decided to make Ghana your home, and thereby, join several generations of Diasporans, who committed their lives to us."
He noted that several persons, including the likes of George Padmore, Bob Marley's widow, Maya Angelou, and W.E.B du Bois all found homes in Ghana, with the latter buried in the country.
Photo Credit: Nana Addo Dankwah Akufo-Addo
Related Topics:George PadmoreMaya AngelouPresident Akufo-AddoPresident Nana Akufo-AddoRita MarleyW.E.B du Bois
Smart Adeyemi of APC wins Supplementary Election to unseat Dino Melaye from Kogi West Senatorial District
CAN wants the Senate to Stop Considering the Social Media & Hate Speech Bills
#BNQuoteoftheDay
Rashidat Akindele: Yes, I Am A Feminist


text:
Police in Hinckley dish out 9 speeding tickets during night-time operation
'Road safety across the town has been identified as a top priority'
Nick Dawson
Hinckley Police in action during a speeding operation in the town
Speeding tickets have been dished out to nine drivers in Hinckley during a police operation targeting speeding hotspots.
Enforcement checks were carried out in Leicester Road, Normandy Way, Coventry Road and Roston Drive on the evening of Thursday, February 18.
Several other motorists were given a warning for going over the speed limit.
A post on the Hinckley Police Facebook page read: "Road safety across Hinckley has been identified as a top priority by our community on a recent survey on Neighbourhood Link.
"In addition to the speed enforcement we have also been offering bin stickers to residents that identify that speeding on their road is an issue."
Neighbourhood Link is a free service run by Leicestershire Police and other groups, providing email updates to residents.
Large group of quad-bikers and motorcyclists hit with Covid-19 fines for illegal gathering
Car cruisers turn a section of main road into a 'race track', say residents
Checks were also carried in Station Road, Barwell, in the week before the Hinckley operation.
Residents have complained that drivers use Roston Drive, Outlands Drive and the A47 like a 'racing circuit'.
Hinckley and Bosworth borough councillor David Cope said previously that he often heard cars and motorbikes from his home as they accelerated along the perimeter road, despite him living a good half a mile away.
There have also been reports of more speeding in the town, especially on Leicester Road, since the start of coronavirus restrictions, in March 2020.
Plans are being considered by the county council to reduce the speed limit on the A47 perimeter road, between the Roston Drive and Wykin Road roundabouts, from 50mph to 40mph.
The proposal was put forward as a new roundabout is being installed by Bloor Homes between the two junctions, to create access to a new housing estate.
There was a formal consultation for the scheme from July to August 2020, and Hinckley borough and county councillor David Bill has now formally endorsed the project. It will now go through a statutory process and a final decision will then be made.
Roston Drive in Hinckley. Picture: Google
Hinckley Police has asked residents to get in touch via Neighbourhood Link with their ideas of what the priorities should be for policing in the town.
If you would like to get involved with Neighbourhood Link, email Ian.Edwards@Leicestershire.pnn.police.uk with your house number and post code.
'Armourer' who was ready to sell guns to criminals given lengthy jail term
Girl gets £7,500 payout after she was left with no school place for 14 months and missed GCSEs
The most discounted houses in Leicestershire right now as market frenzy set to continue
In the NewsHere's what you can get your hands on for a reduced rate
'Most expensive' parking charges in county are 'killing town centre', business owner claims
In the News'There are other people suffering, it's not just me. And it's scary.'


text:
Deon Meyer
South African crime/thriller novelist
Deon Meyer, South African novelist.
(1958-07-04) 4 July 1958 (age 63)
Paarl, Western Cape,
Novelist, screenwriter
University of Potchefstroom
Crime/Thriller fiction
Notable awards
Grand prix de littérature policière 2003 Prix Mystère de la critique 2004
deonmeyer.com
Deon Godfrey Meyer is a South African thriller novelist,[1] writing in Afrikaans. His books have been translated into more than 20 languages.[2] He has also written numerous scripts for television and film.[3]
1 Life and career
2 Novels
2.1 Bibliography
2.1.1 Benny Griessel series
2.2 Film rights awarded for novels
Life and career[edit]
Meyer was born on 4 July 1958 in Paarl. He matriculated in 1976 at the Schoonspruit High School in Klerksdorp. He studied at Potchefstroom University for Christian Higher Education where he studied for a BA with English and History as majors. He later obtained an honours degree at the University of the Free State. He was a long-time resident of historical coastal resort of Melkbosstrand where he wrote most of his novels.
In the 1980s he worked as a journalist at Die Volksblad, at the public relations office of the University of the Free State, and began work as advertising copy writer at Sanlam. In 1991 he was appointed manager of Internal Communication and creative director of Sanlam's Publicity department. After leaving Sanlam he started his own business specialising in the creation and management of virtual communities on the internet. He then worked as manager of special projects at BMW motorcycles. He currently writes full-time.[4] His hobbies include touring Southern Africa on a motorcycle[5]
Novels[edit]
Deon Meyer's novel-writing career started when the Afrikaans magazine, Huisgenoot, published a short story he had submitted.[6] Since then he has published eleven novels and two collections of short stories. His novels reflect current social issues in South Africa,[7][8] including that of the apartheid system.[9] His main characters are flawed but empathetic cops.[10]
(1994) Wie met vuur speel
(1996) Feniks (English title: Dead Before Dying — published in 1999)
(1997) Bottervisse in die jêm: 13 kortverhale (A collection of thirteen short stories)
(1998) Orion (also dramatised for television) (English title: Dead at Daybreak — published in 2000)
(2000) Proteus (English title: Heart of the Hunter — published in 2003)
(2007) Onsigbaar (English title: Blood Safari — published in 2009)
(2009) "Transito" (series written for television)
(2010) Karoonag en ander verhale (A collection of short stories)
(2010) Spoor (English title: Trackers — published in 2011)
(2016) Koors (English title: Fever — published in 2017)
Benny Griessel series[edit]
(2004) Infanta (English title: Devil's Peak — published in 2007)
(2008) 13 Uur (English title: Thirteen Hours — published in 2010)
(2011) 7 Dae (English title: Seven Days — published in 2012)
(2013) Kobra (English title: Cobra — published in 2014)
(2015) Ikarus (English title: Icarus — published in 2015)
(2017) Die vrou in die blou mantel (English title: The Woman in the Blue Cloak - published in 2018)
(2018) Prooi (English title: The Last Hunt — published in 2019)
(2020) Donkerdrif
Film rights awarded for novels[edit]
Feniks (Dead Before Dying) was the first novel for which film rights were awarded. The screenplay, written by South African writer Johann Potgieter, was finalised in 2008 but was never made into a motion picture. It was adapted again in 2015 by German TV-producer Annette Reeker as Cape Town, an international co-produced TV-series.
In August 2009 the film rights for 13 Uur (Thirteen Hours) were awarded to British producers Malcolm Kohll and Robert Fig. Roger Spottiswoode was appointed to direct the film.
The film rights for Proteus (Heart of the Hunter) were granted to a South African company.
"Transito" was specially written for television. The novel Orion was dramatised for television.
The 2019 South African TV series Trackers is based on Meyer's 2011 novel of the same name. It premiered in the US on June 5, 2020.
Meyer has been nominated for and has won numerous awards.[11]
Blood Safari
Won the inaugural ATKV Prize for Best Suspense Fiction in 2008.
German Title (Weisser Schatten ) received the German Krimi Award (third place) in 2009.
Dead at Daybreak
French title (Les Soldats de l'aube) won the French Prix Mystère de la critique 2004.
Awarded best television script for a South African series by the Afrikaanse Taal en Kultuurvereniging in 2007
Swedish title (Död i gryningen) was shortlisted for the Martin Beck Award for best translated crime fiction in 2008.
Afrikaans title (Orion) won the ATKV Prose Prize for 2000 and was shortlisted for the M-Net Book Prize.
Shortlisted for The Sunday Times Literary Prize.
Dead Before Dying
French title (Jusqu'au Dernier ) won Le Grand Prix de Littérature Policière 2003.
Devil's Peak
Won the Martin Beck Award ("Den gyllene kofoten" or The golden crowbar) by the Swedish Academy of Crime Writers in 2010.
Afrikaans Title (Infanta) won ATKV Prose Prize for 2004.
French Title (Le pic du diable ) won the Readers' Award from CritiquesLibres.com for Best Crime Novel or Thriller in 2010.
Heart of the Hunter
Afrikaans title (Proteus ) won the ATKV Prose Prize for 2003.
German title (Das Herz des Jägers) won Deutscher Krimi Preis in 2006.
13 Hours won the ATKV Prize for Best Suspense Fiction in 2009 and the Exclusive Books Boeke Prize (Exclusive Books Fanatics choice) 2011.
Afrikaans title (7 Dae) won the M-Net Literary Award (Film category) in 2012.[12]
^ Edward Gorman, Martin Harry Greenberg, The deadly bride, and 21 of the year's finest crime and mystery stories page 11
^ "Deon Meyer's biography". www.deonmeyer.com. Retrieved 16 December 2019.
^ "Welkom by Deon Meyer se webwerf". 3 December 2010. Archived from the original on 3 December 2010. Retrieved 16 December 2019.
^ Publisher's web site
^ Gallery "Archived copy". Archived from the original on 5 May 2012. Retrieved 5 May 2012. {{cite web}}: CS1 maint: archived copy as title (link)
^ "Deon Meyer - South African crime author. Welcome to the official site". 6 December 2010. Archived from the original on 6 December 2010. Retrieved 16 December 2019.
^ Lucy Valerie Graham, State of Peril: Race and Rape in South African Literature page 187
^ Meyer, Deon (9 September 2014). "Oscar Pistorius trial exposes our insatiable hunger for death". The Guardian. ISSN 0261-3077. Retrieved 15 January 2020.
^ Reyes Torres, Agustín (2011). "Investigating the New South Africa: An Interview with Deon Meyer on Dead Before Dying" (PDF). Anglistica. 15 (1): 79–89.
^ "Who's who of South African crime writing". TimesLIVE. Retrieved 15 January 2020.
^ "Awards listed on Meyer's web site". Archived from the original on 20 November 2010. Retrieved 2 December 2010.
^ Carolyn (19 October 2012). "The 2012 M-Net Literary Awards Winners". Books LIVE. Retrieved 19 October 2012.
Author's Web Site
Human & Rousseau Publishers
Shotsmag Ezine Review "Thirteen Hours"
2008 Interview in Shotsmag Ezine
2012 Interview on Crimezone.nl
Deon Meyer at IMDb
Retrieved from "https://en.wikipedia.org/w/index.php?title=Deon_Meyer&oldid=1068084934"
South African male novelists
Afrikaner people
White South African people
People from Paarl
Crime fiction writers
Barry Award winners
EngvarB from August 2014
Use dmy dates from August 2014
Articles with BIBSYS identifiers
Articles with NLK identifiers
Articles with SELIBR identifiers


Yesterday Twitter hit a pretty big snafu when an innocent user found a way to make another user follow them! A Turkish man wanted to tell his followers about a band "Accept" – but when he typed "Accept pwns" into the update box on Twitter, he noticed that a user by the name of @pwns now followed him.
Once news hit the Internet, Twitter alerted users to the bug and spent the day trying to remedy the situation. Several users complained that their accounts' follower and following lists were set to zero in an effort to make the lists accurate.
Which made me think … it probably makes sense to back up my Twitter follow list! Having been on Twitter for several years, I've spent a good amount of time building up my list to include interesting people in a variety of different industries. Some usernames know by heart, but certainly not all 1500 of them. So, perhaps its time to back them up.
Once you've chosen the items you want to back up, you then have the option to save it as a file on your hard drive. It goes without saying, that you'll probably need to back up that file as well. You don't want to repeat my trip to the Apple store last month where I promised the guy at the Genius Bar my first fourth-born child if he could save all of my data.


text:
La Queen's Gallery è un museo d'arte dove si trova esposta una parte della Royal Collection, mostrata al pubblico a rotazione. Il museo sorge presso Buckingham Palace ed accoglie circa 450 opere d'arte, in particolare dipinti e disegni.

Storia
La galleria costituisce l'ala sud del palazzo reale. La sua entrata ed uscita si trovano sul sito della cappella reale bombardata durante la seconda guerra mondiale. La galleria aprì i battenti nel 1962, venendo espansa nel 1999 (con lavori protrattisi sino al 2002) e ricevendo 5.000.000 di visitatori. L'ampliamento, commissionato all'architetto John Simpson, ha consentito la riapertura del museo il 21 maggio 2002 ad opera della regina Elisabetta II in occasione del suo Giubileo d'Oro. Venne creato l'ingresso con il tipico portico con colonnato dorico, nuove stanze e uno spazio espositivo interno più che triplicato.

Mostre ed esibizioni
Dal maggio all'ottobre del 2019, la Queen's Gallery ha ospitato una mostra per i 200 anni dell'ingresso dei disegni di Leonardo da Vinci nella Royal Collection

Distaccamento di Edimburgo

Nel 2002 è stata inaugurato un distaccamento della Queen's Gallery a Edimburgo, presso il Palazzo di Holyrood, nell'ex chiesa della Libera Chiesa di Scozia della cittadina. Prima della sua conversione a museo, l'edificio era utilizzato come magazzino del palazzo reale. Nel 2002, la struttura venne convertita ed adattata per le esigenze di un museo su progetto dell'architetto Benjamin Tindall.

Note

Bibliografia
Fisher, Mark (2004). Britain's Best Museums and Galleries. London: Penguin.

Voci correlate
 Buckingham Palace

Altri progetti


text:
Shearer: Carano kills 'em softly in "Haywire"
Andrew Shearer @abhcinema
What is an action movie, anyway? Guy runs around shooting at people. Stuff blows up. Guy jumps out of the way just as huge cloud of fire splits the sky behind him. Cars flip into the air, landing within inches of Guy. Throw in a few smart-alecky comments before wasting a villain and a red-faced police chief, and you've pretty much hit on all the essential bullet points. You can throw in aliens and call it science fiction, a few leather-wearing vampires and call it horror, but it's really all a means to the same end: our beaten, torn hero makes it out alive. Cue the fleet of ambulances, fire trucks and police cars and roll credits.
Fresh off last year's scariest movie, "Contagion," prolific film maker Steven Soderbergh seems intent on working in every possible genre. The setup for his latest, "Haywire," is about as basic as it gets as far as action movie plots go. Former Marine turned government contract worker Mallory Kane (Gina Carano) is double-crossed by her employers on a job in Barcelona and manages to fight her way out alone. Upon her return, she must evade those who want to end her life while attempting to determine who was responsible for trying to kill her.
To me, that sounds really boring and uninteresting. It's just not the kind of movie I go see. But from "Sex, Lies and Videotape" on through to "Erin Brockovich" and "Ocean's Eleven," I've been a fan of Atlanta native Soderbergh's vast body of work. This is, after all, the guy who made "Traffic." If he wants to cast a porn star in a leading role (Sasha Grey in 2008's "Girlfriend Experience"), I trust what he might do with a starring vehicle for retired MMA fighter (and former American Gladiator) Carano. The fact that her supporting players are Michael Douglas, Antonio Banderas, Ewan McGregor and Bill Paxton was an added incentive.
Like recent sleeper hits "Drive" and "Tinker Tailor Soldier Spy," "Haywire" takes the opportunity to play with what audiences have come to expect from films in the action category. Mallory isn't Lara Croft or Black Widow. She has depth without being cheesy, sex appeal without having to vamp it up and hand-to-hand skills that don't require flashy editing. Or sound effects. Or music. The fight sequences in "Haywire" are among the most unique I've seen since the '90s, back when Jackie Chan's "Rumble in the Bronx" and John Woo's "The Killer" changed everything. In short, this is about as far from the "Matrix"-inspired techno-fu battles as you can possibly get. As a result, when Mallory hits or gets hit (she truly takes a beating in this flick), we feel it. Soderbergh's stripped-down approach puts us closer to the action than any 3-D effect possibly could.
There's a time and a place for the fireballs and giant robots, the high-wire kicks and the skin-tight scuba gear. What "Haywire" represents is an alternative way of making a certain type of film, playing with our expectations while still ultimately meeting (and in some cases, surpassing) them.
• Shearer is a local filmmaker who likes pineapple soda. He can be reached at andrew.shearer@onlineathens.com.


There are countless of dozens of SEO blogs out there. Unfortunately, some of them offer outdated or unhelpful advice. Instead, we've helped you gather three of our favorite SEO blog resources.
Moz contributors post one article per day, with a focus on search marketing. Therefore, many businesses use Moz to help determine how to optimize their corporate website's search results. However, many digital and local businesses also benefit from Moz's help. Click on the link above to get started.
Neil Patel is a marketer. Also, he works with his team to share marketing news on this website. They also include videos on their site, which is a great addition to the blog posts. Click on the link above to get started.
This is one of the most unique SEO blogs out there. To explain, it offers one SEO tip per day, and includes tips and tricks to help you strategize your optimization campaign. Click on the link above to get started.


text:
Djembe Basics
Djembe Sounds
African Rhythms >
Kuku Rhythm
6/8 Rhythms & Breaks
Warmups Drills
Drum Performances
Sunu (Madou Dembele Version)
Sunu (Madou) - Lesson
Notes Sunu (Madou)
This version of Sunu is a rarely taught variation, from Madou Dembelé, a master drummer from Mali, who taught me this in 2003. He explained that it combines the feeling of several of the more common versions, and is what he played when he was the lone djembe for a gig.
I don't have any notation for this one. But you will see it is swung a lot, which is hard to notate anyway.
SUNU (MADOU)
Sunu (Madou) - Slow
I teach beginners how to drum, and advanced students how to inspire dancers to shake it like never before!
PRIVATE VIDEO LESSONS
SAN DIEGO DRUM LESSONS
FREE DRUM LESSONS ONLINE
Want Lessons?
Screaming with Joy
I am a musician myself but wanted to learn drumming. When I watch Robert drum for dancers at Dance Church, Sufi, and parties, and see how everyone starts moving, shouting and screaming with joy, it's amazing. I realized I wanted to do that! I have been taking group lessons from Robert once a week for about 2 months now, and for someone that never touched a drum before, I am getting better fast. His knowledge goes way beyond the rhythms and sounds - he really understands the art and spirit of it, the psychology and physiology of dancers. I get a lot out of every lesson, and I intend to join his performance group.
~~ Kevin Dalfonso, Musician, Systems Tech, Encinitas, CA
Get the Room Rocking
I met Robert some years ago. When I learned about his prowess as a drummer and rocking the djembe, I invited him to join my rock band, Clarke After Darke. He was amazing. It didn't matter what the song was, he was always able to get the room rocking with his strong percussive beats. And he dueled with the kit-drummer, like a swashbuckling pirate and they laid down some fabulous solos. Besides, he is a really kind and gentle person. We were sad when he left for California. We love him to bits.
~~ Clarke Stevens, Entertainer, CPA, Phoenix, AZ
Extraordinary Teacher
I've been casually drumming for many years but never formally, and never with african drumming. Then I saw Robert drumming at our local dance church. I was amazed how he could change rhythms effortlessly and "communicate" with the other drummers. Not only is he a great drummer, he is an extraordinary teacher. He is kind, patient and shows a true love for drumming and teaching. When he asked us at our first lesson what were our goals, he didn't snicker or laugh when I said "I just want to be as good as you" - now my goal is to have fun and be as good as I can be, and if that even approximates a quarter of Robert's talent I will be grateful.
~~ Paul Paez, Chiropractor, Encinitas, CA