text:
package syncdaopq

import (
	"database/sql"
	"data-sync-tools/go/syncdao"
	"data-sync-tools/go/syncutil"
	"errors"
	"log"
	"time"

	"github.com/lib/pq"
)

//SyncPairPostgresSQLDao implements the syncdao.SyncPairDao interface via an postgressql database.
type SyncPairPostgresSQLDao struct {
	db *sql.DB
}

//GetPairByNames gets the SyncPair by sync node names via a postgressql database.
func (dao SyncPairPostgresSQLDao) GetPairByNames(requestingNodeName string, toPairWithNodeName string) (syncdao.SyncPair, error) {
	// BUG(doug4j@gmail.com): Add SQL injection checks (see http://go-database-sql.org/retrieving.html and http://stackoverflow.com/questions/26345318/how-can-i-prevent-sql-injection-attacks-in-go-while-using-database-sql
	var syncPair syncdao.SyncPair
	sqlStr := `
SELECT        sync_pair.PairId, sync_pair.PairName, sync_pair.MaxSesDurValue, sync_pair.MaxSesDurUnit, sync_pair.SyncDataTransForm, sync_pair.SyncMsgTransForm,
                         sync_pair.SyncMsgSecPol, sync_pair.SyncSessionId, sync_pair.SyncSessionState, sync_pair.SyncSessionStart, sync_pair.SyncConflictUri, sync_pair.RecordCreated
FROM            sync_node INNER JOIN
                         sync_pair_nodes ON sync_node.NodeId = sync_pair_nodes.NodeId INNER JOIN
                         sync_pair ON sync_pair_nodes.PairId = sync_pair.PairId where (

 ( (sync_pair_nodes.NodeId = (select sync_node.NodeId from sync_node where(sync_node.NodeName = $1))) AND
   (sync_pair_nodes.TargetNodeId = (select sync_node.NodeId from sync_node where(sync_node.NodeName = $2))) ) OR
 ( (sync_pair_nodes.NodeId = (select sync_node.NodeId from sync_node where(sync_node.NodeName = $2))) AND
   (sync_pair_nodes.TargetNodeId = (select sync_node.NodeId from sync_node where(sync_node.NodeName = $1))) )

) limit 3;
`
	rows, err := dao.db.Query(sqlStr, requestingNodeName, toPairWithNodeName)
	if err == sql.ErrNoRows {
		//msg := "No records found, expected exactly 2."
		return syncPair, syncdao.ErrDaoNoDataFound
	}
	closeRowQuietly := func() {
		err := rows.Close()
		if err != nil {
			syncutil.Error("Quietly handling of row close error. Error: " + err.Error())
		}
	}
	defer closeRowQuietly()
	var rowCount int //by default this is of course 0
	for rows.Next() {
		rowCount++
		if rowCount == 1 {
			var (
				pairID            string
				pairName          string
				maxSesDurValue    int
				maxSesDurUnit     string
				syncDataTransForm string
				syncMsgTransForm  string
				syncMsgSecPol     string
				syncSessionID     sql.NullString
				syncSessionState  string
				syncSessionStart  pq.NullTime
				syncConflictURI   string
				recordCreated     pq.NullTime
			)
			if err := rows.Scan(&pairID, &pairName, &maxSesDurValue, &maxSesDurUnit, &syncDataTransForm,
				&syncMsgTransForm, &syncMsgSecPol, &syncSessionID, &syncSessionState, &syncSessionStart,
				&syncConflictURI, &recordCreated); err != nil {

				return syncPair, err
			}
			syncPair = syncdao.SyncPair{
				PairID:            pairID,
				PairName:          pairName,
				MaxSesDurValue:    maxSesDurValue,
				MaxSesDurUnit:     maxSesDurUnit,
				SyncDataTransForm: syncDataTransForm,
				SyncMsgTransForm:  syncMsgTransForm,
				SyncMsgSecPol:     syncMsgSecPol,
				SyncSessionID:     syncSessionID.String,
				SyncSessionState:  syncSessionState,
				SyncSessionStart:  syncSessionStart.Time,
				SyncConflictURI:   syncConflictURI,
				RecordCreated:     recordCreated.Time,
			}
		}
	}
	if rowCount == 0 {
		//msg := "No records found, expected exactly 2."
		return syncPair, syncdao.ErrDaoNoDataFound
	} else if rowCount == 1 {
		msg := "Only 1 record found, expected exactly 2."
		return syncPair, errors.New(msg)
	} else if rowCount > 2 {
		msg := "More than 2 records found, expected exactly 2."
		return syncPair, errors.New(msg)
	}
	//Note: if we're here, the row count was 2, which is correct (we had a pair)
	return syncPair, nil
}

//GetNodePairItem gets the NodePairItem by pairId and node name via a postgressql database.
func (dao SyncPairPostgresSQLDao) GetNodePairItem(pairID string, nodeName string) (syncdao.NodePairItem, error) {
	var nodePairItem syncdao.NodePairItem
	sqlStr := `
SELECT        sync_node.NodeId, sync_node.Enabled, sync_node.DataMsgConsUri, sync_node.DataMsgProdUri,
			  sync_node.MgmtMsgConsUri, sync_node.MgmtMsgProdUri, sync_node.SyncDataPersistForm,
			  sync_node.InMsgBatchSize, sync_node.MaxOutMsgBatchSize, sync_node.InChanDepthSize,
			  sync_node.MaxOutChanDepthSize, sync_node.RecordCreated
FROM            sync_node INNER JOIN
                         sync_pair_nodes ON sync_node.NodeId = sync_pair_nodes.NodeId INNER JOIN
                         sync_pair ON sync_pair_nodes.PairId = sync_pair.PairId
WHERE        (sync_pair_nodes.PairId = $1 and sync_node.NodeName=$2)
`
	row := dao.db.QueryRow(sqlStr, pairID, nodeName)
	var (
		nodeID                    string
		enabled                   bool
		dataMsgConsumerURI        sql.NullString
		dataMsgProducerURI        sql.NullString
		mgmtMsgConsumerURI        sql.NullString
		mgmtMsgProducerURI        sql.NullString
		syncDataPersistanceFormat sql.NullString
		inMsgBatchSize            int
		maxOutMsgBatchSize        int
		inChanDepthSize           int
		maxOutChanDeptSize        int
		// BUG(doug4j@gmail.com): Leverage record created in output
		recordCreated pq.NullTime
	)
	if err := row.Scan(&nodeID, &enabled, &dataMsgConsumerURI, &dataMsgProducerURI, &mgmtMsgConsumerURI,
		&mgmtMsgProducerURI, &syncDataPersistanceFormat, &inMsgBatchSize, &maxOutMsgBatchSize,
		&inChanDepthSize, &maxOutChanDeptSize, &recordCreated); err != nil {
		if err == sql.ErrNoRows {
			return nodePairItem, syncdao.ErrDaoNoDataFound
		}
		return nodePairItem, err
	}

	nodePairItem = syncdao.NodePairItem{
		NodeID:                    nodeID,
		NodeName:                  nodeName,
		Enabled:                   enabled,
		DataMsgConsumerURI:        dataMsgConsumerURI.String,
		DataMsgProducerURI:        dataMsgProducerURI.String,
		MgmtMsgConsumerURI:        mgmtMsgConsumerURI.String,
		MgmtMsgProducerURI:        mgmtMsgProducerURI.String,
		SyncDataPersistanceFormat: syncDataPersistanceFormat.String,
		InMsgBatchSize:            inMsgBatchSize,
		MaxOutMsgBatchSize:        maxOutMsgBatchSize,
		InChanDepthSize:           inChanDepthSize,
		MaxOutChanDeptSize:        maxOutChanDeptSize,
		DataVersionName:           "-not implemented-",
	}
	return nodePairItem, nil
}

//GetEntityPairItem retrieves the EntityPairId by pairId and node name via an postgressql database.
func (dao SyncPairPostgresSQLDao) GetEntityPairItem(pairID string, nodeName string) ([]syncdao.EntityPairItem, error) {
	var items []syncdao.EntityPairItem
	sqlStr := `
SELECT        sync_data_entity.EntitySingularName, sync_data_entity.EntityPluralName, sync_data_entity.ProcOrderAddUpdate, sync_data_entity.ProcOrderDelete, sync_data_entity.EntityHandlerUri
FROM            sync_node INNER JOIN
                         sync_data_version ON sync_node.DataVersionName = sync_data_version.DataVersionName INNER JOIN
                         sync_data_entity ON sync_data_version.DataVersionName = sync_data_entity.DataVersionName
WHERE			(sync_node.NodeName = $1);
`
	rows, err := dao.db.Query(sqlStr, nodeName)
	if err == sql.ErrNoRows {
		return items, err
	} else if err != nil {
		msg := "Error getting entity pairinputData=PairId:'%s', NodeName:'%s'. Error:%s"
		log.Printf(msg, pairID, nodeName, err.Error())
		//log.Println("Error inserting to database, inputData=", item)
		return items, err
	}
	closeRowQuietly := func() {
		err := rows.Close()
		if err != nil {
			syncutil.Error("Quietly handling of row close error. Error: " + err.Error())
		}
	}
	defer closeRowQuietly()
	for rows.Next() {
		var (
			entitySingularName, entityPluralName, entityHandlerURI string
			processOrderAddUpdate, processOrderDelete              int
		)
		if err := rows.Scan(&entitySingularName, &entityPluralName, &processOrderAddUpdate, &processOrderDelete, &entityHandlerURI); err != nil {
			if err == sql.ErrNoRows {
				return items, syncdao.ErrDaoNoDataFound
			}
			return items, err
		}
		entityPairItem := syncdao.EntityPairItem{
			EntitySingularName:    entitySingularName,
			EntityPluralName:      entityPluralName,
			ProcessOrderAddUpdate: processOrderAddUpdate,
			ProcessOrderDelete:    processOrderDelete,
			EntityHandlerURI:      entityHandlerURI,
		}
		items = append(items, entityPairItem)
	}
	if err := rows.Err(); err != nil {
		log.Fatal(err)
		return items, err
	}
	return items, nil
}

//NullTime represents an empty time value.
type NullTime struct {
	Time  time.Time
	Valid bool // Valid is true if Time is not NULL
}

//CreateSyncSession creates a session between sync pairs via a postgressql database.
func (dao SyncPairPostgresSQLDao) CreateSyncSession(item syncdao.CreateSyncSessionRequest) (syncdao.CreateSyncSessionDaoResult, error) {
	var answer syncdao.CreateSyncSessionDaoResult
	var actualSessionID string
	sqlStr := `
Update sync_pair SET SyncSessionId=$2, SyncSessionStart=$3, SyncSessionState='Initializing'
where SyncSessionState='Inactive' and PairId=$1;`
	now := time.Now()
	format := "2006-01-02 15:04:05.000"
	dateString := now.Format(format)
	result, err := dao.db.Exec(sqlStr, item.PairID, item.SessionID, now.Format(format))
	if err != nil {
		msg := "Error updating to database, inputData=PairId:'%s', SessionId:'%s', dateString:'%s'. Error:%s"
		log.Printf(msg, item.PairID, item.SessionID, dateString, err.Error())
		//log.Println("Error inserting to database, inputData=", item)
		return answer, err
	}
	var affectedCount int64
	affectedCount, err = result.RowsAffected()
	if err != nil {
		msg := "Error getting results from database, inputData=PairId:'%s', SessionId:'%s', dateString:'%s'. Error:%s"
		log.Printf(msg, item.PairID, item.SessionID, dateString, err.Error())
		//log.Println("Error inserting to database, inputData=", item)
		return answer, err
	}
	if affectedCount == 0 {
		//log.Println("No rows affected")
		//Get the actual id
		sqlStr := "Select SyncSessionId from sync_pair where PairId=$1;"
		row := dao.db.QueryRow(sqlStr, item.PairID)
		if err := row.Scan(&actualSessionID); err != nil {
			return answer, err
		}
		//log.Println("Found existing sessionId: " + actualSessionId)
		if item.SessionID == actualSessionID {
			answer = syncdao.CreateSyncSessionDaoResult{
				Result:          "ThisSessionIdAlreadyActive",
				ActualSessionID: actualSessionID,
			}
		} else {
			answer = syncdao.CreateSyncSessionDaoResult{
				Result:          "DifferentSessionIdAlreadyActive",
				ActualSessionID: actualSessionID,
			}
		}
		return answer, nil
	} else if affectedCount == 1 {
		answer = syncdao.CreateSyncSessionDaoResult{
			Result:          "OK",
			ActualSessionID: item.SessionID,
		}
		//log.Println("One row affected")
		return answer, nil
	} else {
		msg := "More than one row was affected by the SQL update. this is very unexpected and suggests a " +
			"mis-configuration or incorrect query"
		err = errors.New(msg)
		log.Printf(msg, item.PairID, item.SessionID, dateString, err.Error())
		return answer, err
	}
}

//CloseSyncSession closes a sync session via an postgressql database.
func (dao SyncPairPostgresSQLDao) CloseSyncSession(item syncdao.CloseSyncSessionRequest) (syncdao.CloseSyncSessionDaoResult, error) {
	var answer syncdao.CloseSyncSessionDaoResult
	var actualSessionID string
	sqlStr := `
Update sync_pair SET SyncSessionId=null, SyncSessionStart=null, SyncSessionState='Inactive' where PairId=$1 and
SyncSessionId=$2 and SyncSessionState<>'Inactive';`
	result, err := dao.db.Exec(sqlStr, item.PairID, item.SessionID)
	if err != nil {
		msg := "Error updating to database, inputData=PairId:'%s', SessionId:'%s'. Error:%s"
		log.Printf(msg, item.PairID, item.SessionID, err.Error())
		//log.Println("Error inserting to database, inputData=", item)
		return answer, err
	}
	var affectedCount int64
	affectedCount, err = result.RowsAffected()
	if err != nil {
		msg := "Error getting results from database, inputData=PairId:'%s', SessionId:'%s'. Error:%s"
		log.Printf(msg, item.PairID, item.SessionID, err.Error())
		//log.Println("Error inserting to database, inputData=", item)
		return answer, err
	}
	if affectedCount == 0 {
		//log.Println("No rows affected")
		//Get the actual id
		sqlStr := "Select SyncSessionId from sync_pair where PairId=$1;"
		row := dao.db.QueryRow(sqlStr, item.PairID)
		if err := row.Scan(&actualSessionID); err != nil {
			//actualSessionId was null
			answer = syncdao.CloseSyncSessionDaoResult{
				Result:          "ThisSessionIdAlreadyInactive",
				ActualSessionID: actualSessionID,
			}
		} else {
			answer = syncdao.CloseSyncSessionDaoResult{
				Result:          "DifferentSessionIdAlreadyActive",
				ActualSessionID: actualSessionID,
			}
		}
		return answer, nil
	} else if affectedCount == 1 {
		answer = syncdao.CloseSyncSessionDaoResult{
			Result:          "OK",
			ActualSessionID: item.SessionID,
		}
		//log.Println("One row affected")
		return answer, nil
	} else {
		msg := "More than one row was affected by the SQL update. this is very unexpected and suggests a " +
			"mis-configuration or incorrect query"
		err = errors.New(msg)
		log.Printf(msg, item.PairID, item.SessionID, err.Error())
		return answer, err
	}
}

//UpdateSyncSessionState updates the sync session state via a postgressql database.
func (dao SyncPairPostgresSQLDao) UpdateSyncSessionState(item syncdao.UpdateSyncSessionStateRequest) (syncdao.UpdateSyncSessionStateResult, error) {
	var (
		answer          syncdao.UpdateSyncSessionStateResult
		actualSessionID string
		resultingState  string
	)
	sqlStr := `
Update sync_pair SET SyncSessionState=$3 where PairId=$1 and SyncSessionId=$2 and SyncSessionState<>'Inactive';
`
	result, err := dao.db.Exec(sqlStr, item.PairID, item.SessionID, item.State)
	if err != nil {
		msg := "Error getting results from database, inputData=SessionId:'%s', State:'%s'. Error:%s"
		log.Printf(msg, item.SessionID, item.State, err.Error())
		//log.Println("Error inserting to database, inputData=", item)
		return answer, err
	}
	var affectedCount int64
	affectedCount, err = result.RowsAffected()
	if affectedCount == 0 {
		//log.Println("No rows affected")
		//Get the actual id
		sqlStr := "Select SyncSessionId, SyncSessionState from sync_pair where PairId=$1;"
		row := dao.db.QueryRow(sqlStr, item.PairID)
		if err := row.Scan(&actualSessionID, &resultingState); err != nil {
			//actualSessionId was null
			answer = syncdao.UpdateSyncSessionStateResult{
				Result:             "CouldNoFindActiveSessionToUpdate",
				ResultMsg:          "",
				RequestedSessionID: item.SessionID,
				ActualSessionID:    "",
				RequestedState:     item.State,
				ResultingState:     "",
			}
		} else {
			answer = syncdao.UpdateSyncSessionStateResult{
				Result:             "CouldNoFindActiveSessionToUpdate",
				ResultMsg:          "",
				RequestedSessionID: item.SessionID,
				ActualSessionID:    actualSessionID,
				RequestedState:     item.State,
				ResultingState:     resultingState,
			}
		}
		return answer, nil
	} else if affectedCount == 1 {
		answer = syncdao.UpdateSyncSessionStateResult{
			Result:             "OK",
			ResultMsg:          "",
			RequestedSessionID: item.SessionID,
			ActualSessionID:    item.SessionID,
			RequestedState:     item.State,
			ResultingState:     item.State,
		}
		//log.Println("One row affected")
		return answer, nil
	} else {
		msg := "More than one row was affected by the SQL update. this is very unexpected and suggests a " +
			"mis-configuration or incorrect query"
		err = errors.New(msg)
		//log.Printf(msg, item.PairId, item.SessionId, err.Error())
		return answer, err
	}
}

//QueryPairState queries the current pair state via a postgressql database.
func (dao SyncPairPostgresSQLDao) QueryPairState(item syncdao.QueryPairStateRequest) (syncdao.QueryPairStateDaoResult, error) {
	var (
		sessionID    sql.NullString
		sessionState string
		sessionStart pq.NullTime
	)
	sqlStr := `
SELECT        sync_pair.SyncSessionState, sync_pair.SyncSessionStart, sync_pair.SyncSessionId
FROM          sync_pair
WHERE         (sync_pair.PairId = $1)
`
	err := dao.db.QueryRow(sqlStr, item.PairID).Scan(&sessionState, &sessionStart, &sessionID)
	var answer syncdao.QueryPairStateDaoResult
	var lastUpdated time.Time
	switch {
	case err == sql.ErrNoRows:
		log.Println("No Data")
		return answer, syncdao.ErrDaoNoDataFound
	case err != nil:
		log.Println("DB Error")
		return answer, err
	default:
		answer = syncdao.QueryPairStateDaoResult{
			State:        sessionState,
			SessionID:    sessionID.String,
			SessionStart: sessionStart.Time,
			LastUpdated:  lastUpdated,
		}
	}

	return answer, nil
}


Scouts agree that speed is Zach Davis' top tool, but the Chicago Cubs wanted him to reach first base even faster.
The first oddity - a third strike that bounced and stuck in the middle of the chest protector of Gold Glove catcher Yadier Molina - enabled pinch-hitter Matt Szczur to reach first base to start the seventh inning.
For simplicity of reference in this paper, each of the seven ways that a batter can reach first base will be referred to as a Way (capitalization intentional).
The lie here is that the Western media promoted the "evidence" as being unquestionably true, when the story doesn't reach first base when it comes to evidence-based journalism.
The modem for my office internet had been delayed over Christmas, and without any internet access Effective Communication was not even going to reach first base.
If they reach first base and put the flag up, that means they may steal and pitchers can try to pick them off.
Decision for Sox: Papelbon or Bard?
William Winokur, it focuses on pitcher Angel Macias who, so far, has thrown the only perfect game in Little League championship history (a "perfect game" is when no hitter is allowed to reach first base.
Just as there are many ways to reach first base, there are many ways to procure and field a weapon system or product.
Seeing Andruw Jones strike out in all five trips to the plate didn't help matters, but Jones did manage to reach first base on his strikeout in the 11thinning when Marlins catcher John Baker threw wide to first on a dropped third strike.
But James could see, and later was to calculate, that the most important thing a batter could do was simply reach first base by drawing a walk.
However, Mr Hemming's grand plan to re-run the AGM in September, with all positions being up for grabs on a Single Trans-ferrable Vote (STV) basis, probably won't reach first base for a number of reasons.
Baseball players can reach first base in a variety of ways: Single, base on balls, passed ball on a third strike, hit by pitcher, catcher interference, and error.
Braves hurler Kevin Millwood, desperate to keep New York's first two hitters Chuck Knoblauch and Derek Jeter off base - it is Atlanta's biggest mission against New York in this series - let them reach first base with singles to start the game.
Kirwin's solutions are reasonable as far as they go, but they only reach first base.
Once the ball is put into play, the usual rules apply: The batter (or pinch-runner) must reach first base before being "put out" by the defense team.


Our wee highland bar is the heart of the Invershin and the fire is always lit.
You can sample a real cask ale or a 'wee drammy' from our selection of fine Scottish malt whiskeys, whilst enjoying some banter with our locals. We also have regular live music sessions, usually on a Friday, however, these can be rather unplanned and spontaneous, so you may well be lucky enough to catch one whatever night you are staying.
In the evening. We offer a small selection of hearty, homecooked meals, usually served in our bar, but if you prefer you can eat in the conservatory overlooking the Kyle of Sutherland.
All our meat and fish is sourced locally, and when possible, we use vegetables from our garden.
If you are traveling as a large group then we are able to do an outside BBQ - from lobsters to burgers - just let us know if you would like this.
We are happy to cater for all requirements, please inform us when booking if you have any special dietary needs.


How do you define and created a publicly addressable name? I am a seasoned MS IT guy but completely new to Alfresco and Linux/Tomcat/Postgresql. I went down the road of a firewall being installed but I can ping back and forth by ip and name. I'm eager to learn but I don't know if I'm banging my head against Alfresco, Tomcat, or just Linux in general.
"How do you define and created a publicly addressable name?"
What the above means is that you need a DNS which resolves to the alfresco server ip (assuming you don't have any proxy server sitting in front of the alfresco server) and set it in tomcat/shared/classes/alfresco-global.properties.
alfresco.host and share.host are the ones you need to change.
And make sure port 8080 is opened and accessible on the alfresco server and your firewall.
Thank you. I made the changes to the alfresco-global.properties. It still does not work. I'm going to down the road of trying to figure out if port 8080 is open. To my knowledge there is no firewall running. I cannot find that iptables is running and there is no firewall between my workstation and this server.
They should be dead if you don't want them on.
Thanks, I hadn't refreshed the page in a while and saw your reply right after my last post. I tried this and received.
I'm running Oracle Linux 7.
Yeah sorry about that…..that was my bad. I typed it down wrong for you.
Does anyone have any other hints at what I can look at? I have spent several hours on this and have made no progress.
What all should I check to make sure this is open? When I do a netstat it shows 8080 under TCP6. But when I look by running this "# ip a | grep inet" it does not return any ipv6 addresses. I've also looked in the /opt/alfresco-community/tomcat/conf/server.xml file and cannot find the line "resolveHosts="false"".
I can hit Alfresco Share from the local server just fine I just can't hit Alfresco from any other computer on the network. I can ping the machine by name and have tried the IP address as well.
Does the server have a hostname setup?
Here is some references you should probably take a look at.
Thanks for your help. That returns "tsserver01.localdomain".
I messed with everything in that article and restarted several times. I also turned off ipv6 in the ifcfg-eth0 file because when I ran netstat -nlp it looked like 8080 was on tcp6 instead of tcp. It got to the point where I could no longer VNC to the machine but I could still Putty to it and ping by name. I removed the entries in the hosts file and then I could VNC to it again. Then Alfresco would no longer work from within the machine. Now 8080 is showing up under tcp instead of tcp6. I turned the IPV6 back on and now I'm back where I started. It works from within the machine but not from another machine.
I would try from another machine to ping the server to make sure you have connection. If you can ping then I would almost bet its a firewall (network gateway for all traffic) or proxy server issue.
I missed your response up earlier in the thread where you corrected the syntax for checking the firewall. Someone pointed that out to me and determined that firewalld was running. Once that was disabled I was able to connect externally. Thanks for all of your help!


text:
A Hollywood High
Remix Albums
Duran Spotting
Ask Katy
WHOOOSH!
Collector's Corner (Archive)
[ Advanced Search ] CLOSE
VIP / Join / Login
Progress Report: Duran Duran
All press / news
Jan 14th '11 by T. Cole Rachel
NAME: Duran Duran
PROGRESS REPORT: Pop icons chat up the release of new Mark Ronson-produced record, All You Need Is Now.
Even if you were born in the 80's (rather than having lived through it while wearing neon tank tops and jelly bracelets, like some of us geezers did) chances are that you still know at least one or two Duran Duran songs by heart. Any pop band that manages to sell over 80 million records around the globe will inevitably have a long cultural reach, even to those who couldn't care less about what a bunch of middle-aged English fops four decades deep into their career might happen to be doing in 2011. So, you might have heard that Duran Duran have a new record out this spring called All You Need Is Now AND you might also have heard that it was produced by Mark Ronson, a man with a knack for reinvigorating familiar pop tropes and making them seem awesome all over again. (Please revisit his stellar Boy George reinvention single, "Somebody to Love" to be reminded of what a deft touch he has in this arena). Since this new Duran Duran record is being pushed hard as a return to the band's pop-tastic glory days (a.k.a. the Rio days), the band has been everywhere in the past two weeks talking about it. (Just prior to the writing of this paragraph, I watched the band suffer through a litany brainless questions at the hands of Kathy Lee Gifford on the Today show, in this week's issue of New York the band hang out at the New Museum discussing the "anussy" work of Clunie Reid, the young artist who designed the artwork for their new record.) Still, regardless of what you think of Duran Duran or how you feel about the group's ever-shifting lineup or sometimes spotty musical output over the past two decades, there is no denying that they are true icons of pop music. Not only have they made some of the most influential and popular pop music of all time, they also basically turned music videos into their own, stand-alone art form. All of this — along with the fact that they are smart, charming guys—make them fun to sit down and share cookies and tea with on a random weekday afternoon.
Duran Duran have described their new album as a kind of psychic follow up to 1982's Rio (and pretending that the intervening 29 years never happened), and it is without a doubt the freshest sounding record the band has released in over a decade. According to band members Simon Le Bon and Nick Rhodes, the experience of working with Mark Ronson — and finally playing up to their obvious strengths as a pop band — proved to be a career-defining experience.
"Originally we were only going to have Mark produce a couple of songs for the record," explains Le Bon, "But he really wanted to do the whole album, which ultimately worked out well for everybody. He's as good as anybody we've ever worked with and he has a vast musical knowledge. He turned us on to all sorts of new things, which was very exciting. It was a tough record to make, though. Writing the lyrics was quite hard for me this time. It couldn't just be any old gobbledygook. We also allowed certain little mistakes to stay on the record, which makes it sound more human and alive."
"Mark wanted everything to be organic," says Rhodes, "Everything was basically recorded onto tape. All analog synths. He sat in on every session, every second of recording. We talked at great length about what the record was going to be before we ever started and he had a vision for what he wanted things to sound like. Our last record was produced by Timbaland–which was a great experience–but Mark's way of working was completely the opposite. I'd say this is the most meticulous album we've ever made, but it was also somehow the most natural. It felt very much like the early days of Duran Duran where it would just be all of us in a room slaving away for hours until it was done. It felt very intimate."
The new Duran Duran album might be musical return to form, but it's also a literal return to form as well. For the first time in years, the band is playing with all four of its original members. For superfans, this is a moment long in the making. For the band, it was simply a matter of timing and what appears to be a general movement to shrug off some past baggage.
"At the moment, the dynamic between all of us is as good as it's ever been," says Rhodes. "Mostly it's because we're all so excited about the new material. We're a good live band, mostly because we've been doing it for so long. From our point of view, things have really come into focus more. The shows we play now are much better than the shows we were playing 20 years ago, even though people might not always remember it that way."
"It was surprisingly easy to get us all back together," says Le Bon, "It was simply a matter of everyone being ready and able. It was a couple of phone calls, basically."
It would be easy to talk to Simon and Nick for hours about Duran Duran's history. And it's interesting to note that the band members have never quite seen themselves in the same way as the public might choose to. Before the band became the lust object of every teen girl (and some boys) in the known universe back in the early '80s, they were a struggling new wave band with mostly artistic aspirations.
"It's the principal dichotomy of Duran Duran," says Le Bon, "When we started out, I remember that John would say things like 'I really want us to be #1,' which I thought was just impossible. I thought our songs were too out there, too odd. Ultimately, I guess the people who really liked our image — mostly young women, at the time — also had very open minds about music. People that got into us, even if they originally got into us for our looks, often really went deep into the band. The connection people felt with the music was really profound, which was amazing and surprising, even to us."
"Once the teen hysteria started to happen, people got a really strange idea about us," says Rhodes, "Male rock critics hated us. They felt like what we were doing clearly wasn't for them. You know, I had grown up listening to John Peel's radio show and following all of these bands that were really pushing music in all these weird directions. We blew up so big so fast that we were really separated from that world, in a way. I would have loved to do a Peel Session, but we were already too far down the line by that point. We were already being chased by crowds of kids."
It's hard for bands to grow old gracefully, which is a fact that the members of Duran Duran are more than aware of because, as Le Bon points out, they are reminded of it constantly. Most of the band's '80s contemporaries no longer exist and the ones who are still around and playing shows have largely been relegated to the ranks of nostalgia acts. It's a fate that both Le Bon and Rhodes have spent considerable effort hoping to avoid. Still, despite the hyped-up new album and their seemingly ever-renewable fanbase, the boys have no qualms about going out and playing the hits on their forthcoming 2011 world tour.
"Frank Sinatra said that if you make at least one great song, there will always be people who want to come out and see you," says Rhodes, "And if you could make more than one great song, or a few of them, you'll always have a career. I actually feel that having the amount of popular songs that we do — that people really love — is amazing. It's great to know that when you play those certain songs — when the first notes start and people realize what the song is — that you can generate this instantaneous happiness in them. I feel very blessed to still be making new music with people I enjoy and admire, but I'll always be happy to play those old songs. Our fans have supplied us with a very good life, they deserve to hear the songs that they love."
All You Need is Now is available now on iTunes. An extended physical version of the album will be available in February.
Courtesy Stereogum.com
This Week In Simon Le Bon Tweets: Jan. 7-13
Hear Simon on Steve Wright
Digital Deluxe out now featuring 3 new songs including LAUGHING BOY
Buy / Listen Purchase
iTunes Amazon Rough Trade Bundle Digital Deluxe
Apple Music Spotify Shazam Pandora Tidal
© 2023 Duran Duran.
Dev by Reccenter
Privacy Policy Terms And Conditions Membership Policy FAQ Contact Cookie Policy

redpajama_set_name: RedPajamaCommonCrawl


sometimes it happen that some of your friend due to some reason unfriend you or block you on facebook. but its equally difficult to track who was that, who left you or joined you on facebook. so to track who is leaving you and who is joining you on facebook, there is an app on facebook which can help you to keep track of all these stats. here is a link to that twenty feet which keeps all your record.
just click on the link and register yourself for the use of app. you can register it through your facebook account, twitter account or through direct registration page.
i felt the aroma of being in togetherness, it was splendid, mind blowing experience, everyone there was drenched into the aura of oneness. wow what a relation, a chord, a thread binding the whole genre into one knot. so now i realized my stupidity, how wrong i was, how mean i was, how unknown and bizarre i was from all these joyous. i had lots and lots of mis-understandings, so bad of me. but now at this time of 'THE END' of my college life, i'm feeling i could have enjoyed more and would have grabbed more fun.
with the end of this my college life, one thing i learned is, one can get anything, almost anything from earth by paying, but friendship and love is impossible. its the only selfless thing in this world, which we never gonna get again.whenever we need a friend to be with us, we gonna miss our college days.
college days oh those friends days.


How to address changing U.S. housing trends is the subject of a new exhibition entitled "Housing for a Changing America" now on display at the the National Building Museum in Washington, D.C. For those who may not have heard of this museum, it was created by Congress in 1980 and is dedicated to "architecture, design, engineering, construction, and urban planning." A rather unique niche.
"The post-World War II suburbanization of America was driven by the housing needs of nuclear families, the nation's leading demographic. (The nuclear family is defined as a married couple living with one or more children). In 1950, these families represented 43% of our households; in 1970, it was 40%. Since then, unprecedented shifts in demographics and lifestyle have redefined who we are—and how we want to live.
Today, nuclear families account for only 20% of America's households, while nearly 30% are single adults living alone, a growing phenomenon across all ages and incomes. Supply, however, has been slow to meet the demands of this burgeoning market—or to respond to the needs of our increasingly varied mix of living arrangements: from roommates to single-parent, extended, and fluid families. Innovation has been constrained, often by deeply-rooted zoning regulations.
This is clearly not the direction we need to go. Friedlander is but one voice encouraging a new vision – not only a new vision in response to these current U.S. housing trends but in understanding how and why we need to make the buildings in which we live, work and study more energy-efficient. Whether we are talking existing buildings or new construction, energy efficiency is critically important.
Today's building industry does appear to be slowly evolving towards minimizing the energy, carbon, and environmental footprint of commercial and residential buildings. Not necessarily of their own accord. As so often in human history, this shift is being driven by a need to optimize and conserve limited resources — specifically, clean air, water, and energy as well as land. And, once again, transformative technologies hold the key to meeting these challenges. As designers, developers, and owners search for ways to minimize the operating costs and environmental impacts of buildings, while also increasing their functionality and appeal to occupants, "green" trends are becoming observable in the marketplace. That's where solar comes in.
These are many sound reasons to invest in solar energy for your home or business. But the fact that it is a clean energy source seems most critical to note. Learn more by contacting one of our solar experts at Venture Home Solar. Call us today at 800-203-4158 to find out how you can help the planet and save money at the same time by investing in solar energy! We know the "ins and outs" of our state policies here in New York, including the tax incentives and rebates that can make a solar installation on your home or business even more cost effective. We're the local experts who stand ready to help you evaluate the feasibility of going solar with your home or business. Call Venture Home Solar today (800-203-4158) to get started! Help contribute to changing U.S. housing trends that will make a critical difference!


Terrell Owens Net Worth: Terrell Eldorado Owens popularly known by his initials, T.O., is a former American football wide receiver. A six-time Pro Bowl selection, Owens holds or shares several National Football League (NFL) records. Over 16 seasons, his 15,934 career receiving yards rank second in NFL history and his 153 receiving touchdowns rank third. He has a net worth of $ 100 Thousand.
Check out the below article to know the complete information regarding Terrell Owens Networth, His Salary Per Day, Per Month, Per Year, Earnings Per Show, Houses, Cars, Biography and his other Investments details.
How much is Terrell Owens Worth?
Terrell Owens is a retired professional football player who has a net worth of $100 thousand.
Born as Terrell Eldorado Owens on December 7, 1973 in Alexander City, Alabama, Terrell Owens attended the University of Tennessee at Chattanooga, where he played college basketball and football. In 1996, he debuted into the NFL when he was selected as a third round pick by the San Francisco 49ers in the 1996 NFL Draft. After a dispute with a fellow 49ers member, Owens was traded to the Philadelphia Eagles.
During his NFL career, Terrell Owens earned around $80 million in salary and endorsements. Unfortunately, by 2011 Terrell was completely broke, telling a judge that he had no monthly income and very expensive monthly obligations. At the time he was in court asking for reductions in four separate child support cases. In documents submitted to the judge, Terrell described how he is currently required to pay nearly $60,000 a month to four different women. He also pays $63,000 a month for all the homes that these women live in.
Furthermore, his personal home in Georgia was in foreclosure which forced him to move into a girlfriend's apartment in Los Angeles. Tough times for TO. The final lesson here is save your money and use a condom. In 2015, Owens joined the cast of the hit NBC television series, Celebrity Apprentice with Donald Trump where he competed in a variety of business-related challenges with his fellow celebrity cast-mates. Later that year, he also appeared on the hit reality television series, Celebrity Wife Swap, where he traded lives with actor Robert Carradine. As an NFL player he played the 49er's, Philadelphia Eagles, Dallas Cowboys, Buffalo Bills and the Cincinnati Bengles. Terrell Owens was a wide receiver.
Hope you like this Terrell Owens Networth article. If you like this, then please share it with your friends… This above post is all about the estimated earnings of Terrell Owens. Do you have any queries, then feel free to ask via comment section.


text:
var isLoad = false;
exports.isLoad = function(){return isLoad;};
exports.Load = function(global){
	var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },
  __slice = [].slice;

(function($, window) {
	if(isLoad) return;
	isLoad = true;
  var ResizableColumns;
  ResizableColumns = (function() {
    ResizableColumns.prototype.defaults = {
      store: window.store,
      rigidSizing: false
    };

    function ResizableColumns($table, options) {
      this.mousedown = __bind(this.mousedown, this);
      var _this = this;

      this.options = $.extend({}, this.defaults, options);
      this.$table = $table;
      this.tableId = this.$table.data('resizable-columns-id');
      //为静态html执行功能
      if(this.options.singleLine){//单行显示,多余隐藏
      		//conole.log('single');
      		//代码片段1
        		var setModuleContent = function (cells){
				for(var i = 0; i<cells.length;i++){
					cells.eq(i).html('
'+cells.eq(i).html()+'
');
				}
			}
			setModuleContent($table.find('td'));
			setModuleContent($table.find('thead th'));

			//代码片段2
			$table.removeClass('table-resizable');
			var ths = $table.find('thead th');
			for(var i=0;i<ths.length;i++){
				var thWidth = ths.eq(i).width();
				ths.eq(i).css({width:thWidth});
				var _div = ths.eq(i).find('.rc-div');
				if(!_div.hasClass('rc-cells')){
					_div.addClass('rc-cells').after('
'+_div.text()+'
');
				}
			}
			var divs = $table.find('tbody td .rc-div');
			for(var i=0;i<divs.length;i++){divs.eq(i).addClass('rc-cells').after(' ');}

        }
      this.createHandles();
      this.restoreColumnWidths();
      this.syncHandleWidths();
      $(window).on('resize.rc', (function() {
        return _this.syncHandleWidths();
      }));
    }

    ResizableColumns.prototype.destroy = function() {
      this.$handleContainer.remove();
      this.$table.removeData('resizableColumns');
      return $(window).off('.rc');
    };

    ResizableColumns.prototype.createHandles = function() {
      var _this = this;

      this.$table.before((this.$handleContainer = $("
")));
      this.$table.find('tr th').each(function(i, el) {
        var $handle;

        if (_this.$table.find('tr th').eq(i + 1).length === 0 || (_this.$table.find('tr th').eq(i).attr('data-noresize') != null) || (_this.$table.find('tr th').eq(i + 1).attr('data-noresize') != null)) {
          return;
        }
        $handle = $("
");
        $handle.data('th', $(el));
        return $handle.appendTo(_this.$handleContainer);
      });
      return this.$handleContainer.on('mousedown', '.rc-handle', this.mousedown);
    };

    ResizableColumns.prototype.syncHandleWidths = function() {
      var _this = this;

      this.$handleContainer.width(this.$table.width());
      return this.$handleContainer.find('.rc-handle').each(function(_, el) {
        return $(el).css({
          left: $(el).data('th').outerWidth() + ($(el).data('th').offset().left - _this.$handleContainer.offset().left),
          height: _this.$table.height()
        });
      });
    };

    ResizableColumns.prototype.saveColumnWidths = function() {
      var _this = this;

      return this.$table.find('tr th').each(function(_, el) {
        var id;
        if ($(el).attr('data-noresize') == null) {
          id = _this.tableId + '-' + $(el).data('resizable-column-id');
          if (_this.options.store != null) {
            return store.set(id, $(el).width());
          }
        }
      });
    };

    ResizableColumns.prototype.restoreColumnWidths = function() {
      var _this = this;
      return this.$table.find('tr th').each(function(_, el) {
        var id, width;

        id = _this.tableId + '-' + $(el).data('resizable-column-id');
        if ((_this.options.store != null) && (width = store.get(id))) {
          return $(el).width(width);
        }
      });
    };

    ResizableColumns.prototype.mousedown = function(e) {
      var $currentGrip, $leftColumn, $rightColumn, idx, leftColumnStartWidth, rightColumnStartWidth,
        _this = this;
      e.preventDefault();
      this.startPosition = e.pageX;
      $currentGrip = $(e.currentTarget);
      $leftColumn = $currentGrip.data('th');
      leftColumnStartWidth = $leftColumn.width();
      idx = this.$table.find('tr th').index($currentGrip.data('th'));
      $rightColumn = this.$table.find('tr th').eq(idx + 1);
      rightColumnStartWidth = $rightColumn.width();
      $(document).on('mousemove.rc', function(e) {
        var difference, newLeftColumnWidth, newRightColumnWidth;

        difference = e.pageX - _this.startPosition;
        newRightColumnWidth = rightColumnStartWidth - difference;
        newLeftColumnWidth = leftColumnStartWidth + difference;
        if (_this.options.rigidSizing && ((parseInt($rightColumn[0].style.width) < $rightColumn.width()) && (newRightColumnWidth < $rightColumn.width())) || ((parseInt($leftColumn[0].style.width) < $leftColumn.width()) && (newLeftColumnWidth < $leftColumn.width()))) {
          return;
        }

      	var width = newLeftColumnWidth;
        $leftColumn.find('.rc-td').css({width:width});
        $leftColumn.width(newLeftColumnWidth);
        $rightColumn.width(newRightColumnWidth);
        return _this.syncHandleWidths();
      });
      return $(document).one('mouseup', function() {
        $(document).off('mousemove.rc');
        return _this.saveColumnWidths();
      });
    };

    return ResizableColumns;

  })();
  return $.fn.extend({
    resizableColumns: function() {
      var args, option;

      option = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
      return this.each(function() {
        var $table, data;

        $table = $(this);

        data = $table.data('resizableColumns');
        if (true){//(!data) {
          $table.data('resizableColumns', (data = new ResizableColumns($table, option)));
        }
        if (typeof option === 'string') {
          return data[option].apply(data, args);
        }
      });
    }
  });
})(window.jQuery, window);
}

redpajama_set_name: RedPajamaGithub


On the heals of her "Best Lifter" performance at the 2011 Massachusetts/Rhode Island State Championships we are proud to select Heath Crocker of Reading, MA as the first Featured Lifter. Heather's, 516.9 Wilks Points was the highest at the championship, male or female. Heather is still a relatively newcomer to the sport but she is on the fast track to reach the highest levels sport has to offer.
I am a fifth year nursing student at northeastern—about to graduate in May of 2012. I was a former member of the Northeastern ice hockey team and track and field team, currently holding the school record in javelin. I am a sports enthusiast, with other interests including hiking, wakeboarding, snowboarding, and ice hockey. I am from Reading, MA…daughter of the incredible and supportive parents Lorna and Bob Crocker. I have a 20 year old brother, Terry, who is also passionate about lifting.
I didn't start lifting until the summer going into college for training purposes. Through being in the gym at the same time as the powerlifting club, I was quickly recruited…mostly with the motivational factor being a trip to Orlando, FL for collegiate nationals. I soon became addicted to the sport and have been obsessively training ever since.
I began by competing in the 148 class, but with my natural body weight being caught in the middle of 132 and 148, I've found myself to be a more competitive lifter by cutting down to 132…which is what I have been doing for the past year.
I came in 1st place for the 148 class in collegiate nationals of 2010. At the 2011 collegiate nationals, I placed 1st in the 132 class and won best lightweight lifter. I also won the 148 Junior Raw nationals as well as best junior lifter this past summer.
Between the months of September and April (the school year), I train at Northeastern's varsity gym: Cabot, with my fellow NUPLers. When at home (Reading), I train at the Reading Athletic Club by myself, which can prove challenging due to impaired deadlifting capabilities and no use of gear. Otherwise, I have been known to make appearances at Xaverian Brothers and Baystate Athletic Club.
I lift with the Northeastern Powerlifting team (NUPL). It is a spectacular group, with all members exhibiting the highest levels of encouragement, motivation, and support. My coach, "Big Mike" Zawilinski has been with me from the start and was the first to ever suggest powerlifting when he saw me doing power-cleans in the gym. He has been an incredible mentor in my lifting career.
My biggest goal of late has been to break a 1000lb total—which I just accomplished at the MA/RI meet. So now, my next lifting goals include a 450 squat, 300 bench and 450 deadlift for a 1200 total at 132. Overall I would like to see myself compete at worlds in the future.
There are too many to count; the first time I won collegiate nationals was completely unexpected and such and incredible surprise. I was definitely ecstatic then. This level of excitement also occurred the first time I squatted 402 (the Arnold) and deadlifted 402 (American Opens). Although I have been extremely honored to win best lifter at a number of meets, overall I have felt the greatest moments come from personal records and gains—not just my performance in relation to others.
My training routine has fluctuated so incredibly much. I started as a drone…just following the routine given to me. Since then I've followed multiple routines that I thought would be most beneficial for me at the time. Of late, I have been creating my own "Frankenstein's" of plans including pieces of each routine. The one I caught the most criticism for was a combination of the "Coan/Phillipi" Deadlift program, "5/3/1" and the "Dave Tate" Bench program.
Already mentioned was coach "Big" Mike Zawilinski… who has helped me to grow as a competitive lifter over these past few years by providing his wisdom from years of experience. And other than my partner in crime, Joe Capellino (who originally recruited me to the team and has been a key supporter and incredible leader) I get much of my motivation from my teammates. They are the ultimate mentors. Fellow lifter Shaina Petit and I have always held a healthy competitive relationship—driving one another to improve while providing support and encouragement. Luis Jaimes has taught me the in's and outs of being a gear-mongrel, while providing the vital finer points of lifting technique. Alex Bruno has also been an unlimited source of information regarding lifting technique, programs and nutritional needs; listening to my rants and raves about training downfalls, frustrations and weight cut anxiety only to provide support and reinforcement about my abilities to succeed.
Just keep trekkin'. Honestly… you don't start off strong. It takes a lot of hard work, and some people may be faster to make improvements than others. But everyone hits plateaus, and everyone has their weaknesses. The key is to train through them—find a program that works for you, stick to it and you'll get stronger.
I am a naturally competitive person. I want to beat myself. I have goals, and I will not stop lifting until I meet them. I also look to others who make me want to become a better lifter. Seeing world-class female lifters like Jennifer Thompson, Lian Blyn, Sioux-z Hartwig Gary and Priscilla Ribic is truly inspiring and gives me the motivation to hit the gym harder, and set higher goals for myself.
Anything… as long as theres music. A little up-beat, no Sarah McLaughlin or anything, but I could listen to country, rap, pop, alternative.
I used to play varsity ice hockey (for one year) in college; I had played for four years in highschool. I recently joined a women's league to get back into it. I also threw javelin in track for my highschool and northeastern. I'm an avid snowboarder and I love all things winter and summer.
GO NUPL, oh… and thank you Con-Cret for your support!


text:
Q: Android - Is MediaStore ID a safe way to store information about pics/albums? In my app I store information about an image or an image album by storing it's MediaStore id. Later on I may have to perform operations that require these images/albums. Is the MediaStore id a safe way to keep image\album information?
More specifically:
1) If an image/album whose id I have stored gets deleted, is it possible a new picture/album could take this id resulting in me using the wrong picture/album ?
2) when pictures/abums are renamed or moved ( using a file browser on the phone or by connecting to a laptop) do their ids change ?
If so...what measures do I take to avoid these errors ?

A: I've not had direct experience with this, but appears from this SE answer that individual IDs do change when the user moves them, and all IDs may change if the SD media is disconnected and reconnected.
Better, it seems, to store your own unique ID (perhaps by creating a hash value), or, more simply, the filename.

redpajama_set_name: RedPajamaStackExchange


You are here: Home / Actors and Performers / Do you really show up in your creative work?
How much are you able to bring your full and authentic self to your creative work?
This may be an especially meaningful question if you are an actor.
From article Can You Be Present in Your Art and Your 'Real' Life?
"I don't want to be that kind of person that gets hippo skin. I want to keep my skin thin always because that is the only way to be a creative person and try to be authentic.
From article: Emma Stone: "The Favourite" gives us an Exclusive Interview with Eileen Shapiro, starsandcelebs.com.
Emotional challenges and trauma can get in the way of being present.
For example, a number of actors have experienced depression, including Halle Berry, Lorraine Bracco, Jon Hamm, Anne Hathaway, Kristen Bell and others.
Eiza González has talked about one kind of experience that can lead to depression – the death of a close relative – and a common way people deal with emotional pain.
This kind of trauma can have an especially strong impact on highly sensitive people, as many or most actors are.
"I lost my father very young, but not young enough to not be aware of what was going on.
"My father and I had an amazing relationship. We were very close.
"I fell into a very dark place and I couldn't deal with [the] loss. I started eating excessively and gained a lot of weight, and I was very sad. I wasn't in a good place.
She addresses these topics of being authentic and present as an artist, and dealing with emotions, in a number of her articles on her site.
Over and over again you get the same messages. Show up in your art!
Show up in the world! Bring your art to those that need it!
But, sometimes, you feel confused.
You keep showing up and not really getting anywhere, despite being so actively engaged, determined, and sure of what you want.
You want recognition. You want to have an impact. You want emotional and financial rewards.
When you don't see yourself on a path that gets you closer to what you aim for, you wonder if you're missing something or you're doing something wrong.
When you don't have the success you long for you may become full of self-doubts and questions.
You wonder if it's just the arts and entertainment world where "the normal success rules" don't apply.
Here's one question you may not have asked yourself: are you avoiding something?
Despite the way you're showing up and actively pursuing your dreams, is there something you're still avoiding? And, if you are, what would that be?
Sometimes avoidance operates at unconscious level.
That means you fall into patterns of avoidance without being aware you're doing it.
Deep in your mind and your heart, you feel like you're showing up.
How could you be stuck in avoidance when you're so actively pursuing your dreams?
Yes, you may be very active in pursuing your career, but still avoid taking the actions that matter.
Yes, you may be very determined about what you want to create, and still avoid feelings you need to feel in order to perform or make your art a reality.
Yes, you may show up and still not make a genuine connection that brings forth all that you are and all that you have to offer.
Your determination and big wish to accomplish something is a beautiful energy.
And yet you might be misdirecting that energy and expressing it in a way that is not aligned with what you want to create or with the people that are right for you.
If you aren't aware you're avoiding something, how do you know you are avoiding?
The signs can be subtle, but you can learn to see how and when you may be avoiding something unconsciously.
If you find yourself trapped in a certain pattern, not really moving forward on a journey, it's a sign.
Going in circles without getting to any destination is a sign. You're looping around, not seeing growth or transformation.
Symptoms of anxiety or depression.
There are many reasons why one would have anxiety or depression symptoms, but often these symptoms cover some repressed emotional pain.
As you unconsciously avoid painful memories, these symptoms are reinforced.
Anxiety, panic attacks, or phobias can be clear signs that you may be avoiding something. Depression is also a strong sign.
What are you unconsciously avoiding?
Many times when we avoid something, at some level, we know we're avoiding it.
It's possible, however, to block painful experiences, which then become repressed memories.
This is what we avoid without awareness. We are actually avoiding past painful experiences that we didn't have the chance to master.
Photo is from her directorial debut movie Unicorn Store.


Not long ago, the Novotel completed an $85 million renovation that transformed its lobby into the set for Star Trek. Okay, not really, but your first vision of the hotel, a pulsing, purple hall that looks like the entrance to a Disney ride, is, er, a stunner. Rooms, which are now called "Next Rooms" (they'll soon be standard across the chain), are almost as whiz-bang, with a TV entertainment system that you can control from your cellphone; truly soundproofed windows (you can't hear the city at all); and a lighted frame on the backboard of the bed that gives the room an eerie glow. Other than that, they're not all that odd, but quite comfortable and spacious, with excellent views, good desk space, and even better beds. Families can easily share the rooms with two double beds. The breakfast room has one of the best views of Times Square in town.


text:
Liga de Ascenso livescores, results, table and standings
Copa Costa Rica
Liga de Ascenso (2020/2021)
Costa Rica : Liga de Ascenso
AD Cariari Pococí
CD Ramonense Poeta de Occidente
Matchday 1 (Clausura)
Consultants Moravia
Puerto Golfito
Aserrí
Municipal Liberia
Cofutpa
Guanacasteca
Marineros de Puntarenas
Municipal Garabito
Barrio México
Escazuceña
Apertura - Finals
Apertura - Semi-finals
Apertura - Quarter-finals
1 Municipal Liberia
10 5 2 3 14:11 +3 L D W L W
2 Guanacasteca
10 3 6 1 12:9 +3 L W D D W
3 Puntarenas
10 2 6 2 11:12 -1 W L L D D
4 Municipal Garabito
10 2 5 3 11:13 -2 L W D W L
5 La U Universitarios
8 1 6 1 9:9 0 D D D W D
Legends:
Possible Quarter-finals
1 Cofutpa
10 5 2 3 15:10 +5 L W L D D
2 AD Cariari Pococí
9 5 2 2 12:8 +4 W L W W D
3 Escazuceña
10 4 3 3 12:11 +1 W D W L D
4 Carmelita
10 3 3 4 9:10 -1 W D W D L
5 Santa Ana
10 2 4 4 10:14 -4 L D D D L
6 CD Ramonense Poeta de Occidente
9 2 2 5 6:11 -5 L L D D W
1 Barrio México
10 6 2 2 13:7 +6 L W W W D
2 Consultants Moravia
10 5 3 2 18:10 +8 L W W D D
3 Puerto Golfito
10 3 5 2 13:9 +4 W L D D D
4 Aserrí
10 3 4 3 11:13 -2 W D L D D
6 Turrialba
10 1 2 7 7:21 -14 L L D D L
1 (1) Municipal Liberia
5 3 1 1 7:3 +4 D W W W L
2 (3) Puntarenas
5 2 2 1 7:7 0 W L W D D
3 (4) Municipal Garabito
5 1 3 1 6:6 0 W D D D L
4 (2) Guanacasteca
5 1 3 1 4:5 -1 L D W D D
5 (5) La U Universitarios
4 1 2 1 7:7 0 D W L D
1 (1) Cofutpa
5 3 0 2 9:8 +1 L L W W W
2 (5) Santa Ana
5 2 2 1 5:4 +1 L D D W W
3 (3) Escazuceña
5 2 2 1 5:6 -1 D W L D W
4 (6) CD Ramonense Poeta de Occidente
5 2 1 2 4:5 -1 L D W W L
5 (2) AD Cariari Pococí
4 1 2 1 2:4 -2 L D W D
6 (4) Carmelita
5 1 1 3 5:7 -2 D L L L W
1 (1) Barrio México
5 5 0 0 8:1 +7 W W W W W
2 (2) Consultants Moravia
5 3 2 0 12:4 +8 W W D D W
3 (3) Puerto Golfito
5 2 3 0 9:4 +5 W D D D W
4 (4) Aserrí
5 2 2 1 5:4 +1 W D D W L
5 (5) Uruguay
5 2 1 2 7:6 +1 W D L L W
6 (6) Turrialba
5 1 1 3 4:10 -6 D L L W L
5 2 3 0 8:4 +4 W D D W D
5 2 1 2 7:8 -1 L L D W W
5 1 2 2 5:7 -2 L W L D D
4 0 4 0 2:2 0 D D D D
5 0 4 1 4:5 -1 L D D D D
5 4 0 1 10:4 +6 W W W L W
5 2 2 1 4:3 +1 W D W L D
5 0 2 3 5:10 -5 D L D L L
4 0 1 3 2:6 -4 L D L L
5 2 1 2 6:6 0 L D L W W
5 1 2 2 5:6 -1 L D D W L
5 1 2 2 4:5 -1 L D D L W
5 1 2 2 6:9 -3 D L D L W
5 1 1 3 5:8 -3 L L D L W
5 0 1 4 3:11 -8 L L D L L
5 Marineros de Puntarenas
6 Santa Rosa
0 0 0 0 0:0 0 No matches
2 (5) Marineros de Puntarenas
6 (6) Santa Rosa
You're on the summary section of Liga de Ascenso 2020/2021 football season. This competition is part of the Costa Rica football structure. Here you can find today's live scores (all matches are updated in real-time), latest results, next soccer games, standings and tables of the season. Browsing the competition menu at the top of this page you can see more detailed information about results, scores, fixtures and standings. You have at your disposal also the Liga de Ascenso (Costa Rica) soccer archive. If you're looking for other soccer leagues (First Division, Second Division, Third Division, Cup or Supercup) you can use our main menu. We have +2000 football competitions here at FastScore.com.


text:
Codies Lounge
The Game Thread!
By Tylerrnty1, April 4, 2014 in Off-topic Discussion
Hughesy 254
Loved System Shock back in the day, so I'll probably get the remaster.
RevolvingPrawn 1
Accurate depiction of PC gaming.
MBKF1 91
RevolvingPrawn said:
League racing is easily the best form of online racing though, I'd more than happily recommend anybody who's interested to just go for it :)
Ah remember the good old days of VRL... can't believe that's all over, it was great fun while it lasted.
sjsharp2010 227
So what number is everyone going to race with in their F1 2016 career?
Colin McRae Rally for Android is only 10p at the moment, May as well buy it.
sjsharp2010 said:
Either 46 or 87. I'd rather have 11 but that damn Perez already has it :p
What team is everyone going for? Reckon I'm gonna start with McLaren.
yeah had the same problem as I wanted 5 but Vettel's got that so I'm going to go with 10 but then I might use different numbers on different careers to mix things up but for my first career on 2016 it'll be 10.
I'm planning on starting with Williams. I want to do a Nigel Mansell/Damon Hill and win with the Williams team. It t was either going to be Williams or McLaren but I'm going Williams because I went with McLaren on my first season on 2015 so decided to go the other way for 2016 and have Bottas as my teammate. I'm choosing Bottas purely because he's the stronger of the 2 drivers and I don't want to really be carrying the team on my own
Actually, mind changed, I'm gonna go with 24, the day of the month I was born. Figured one of the drivers already had it but apparently not! Stick with a number though dude :p Pick one and make it yours heh.
I had been thinking about going Williams too, but I really wanna try bringing a team from lower down back to the front. I'd have chosen Bottas too with Williams, but with McLaren I'm kinda stuck, I like both Button and Alonso and want them both as a teammate. Gonna have to flip a coin.
Mexicola 10
Hughesy said:
11p more than it's worth.
Yeah I like Massa too but I just felt that Bottas is the stronger driver which is why I'm going with him for my first go. It's tough to decide which one to boot out but again maybe in a future career I'll go the other way and see what I can do up against Massa and replace Bottas in the team. I know what you mean though as I was thinking of doing a bottom of the grid to the top type career myself eventually it's just not what I've got planned for my first go. Mostly because I wanted to get to grips with the basics first. I didn't want to start with Mercedes as that would I think just make things too easy I felt But I wanted a fairly decent car that was capable of being competitive which was one of the other reasons why I'm going Williams plus I've always had a bit of a soft spot for them. Given most of my favourite drivers have raced for them at one stage or another.
Started playing Dirt Rally again last night, they've made some big improvements since I last played. Feel like I lost a stone in weight from the workout it gave me :joy: I think the reason F1 16 is going in the direction it's going is because of the success of this game. Codemasters finally understand a sim can sell very very well.
AMSKRR 3
I'm starting with Renault - should be a challenge to win the title with them.
Also, probably going to use 82 but I haven't really made my mind up fully. Can't wait til Massa retires and 19 is free. 97 will probably be quite common so I wont be using that, maybe 66?
yeah I think with Dirt Rally and Grid Autosport behind them I think CM are starting to realise what they can do when they put their minds together Started playing Grid Autosport myself again last night and just finished a street competition on it. Won it just but it was great fun as I really screwed myself up in the first half of the championship Autosport is pretty good fun in that area as well in that it definitely feels at least a little more sim like than the previous Grids
I won Grid Autosport for PC some time ago now (You donated £20 to cancer research, and got entered to a prize draw, figured it was worth entering, even if I don't win it doesn't matter) and I was really surprised by how good it was, the AI are pretty feisty which I always like. CM have done some really solid racing games, which is why it annoys me so much when they release middling F1 titles. Thankfully 2016 is going to be incredible.
AMS97KRR said:
yeah it sounds like they're trying to up their game on the F1 series which is something I think they need to do really especially as they didn't really touch career mode at all between 2012-14 and ditched it for last year because the rest of the game wasn't ready in time to do it. But thankfully now it sounds like their about to unleash something really incredible. I just hope they can really deliver on the promise they're making based on the preview vids the youtubers have been doing it certainly looks like they will so I'm mega hyped up for this years game. So much so it's put me in a racy mood and I'm playing all my racing games. I've mostly been playing the |F1 games and the career modes I have on the go on them but I booted up Grid Autosport last night and today and done some races and was going to do some championships on Project Cars as well. But either way it's put me in the mood and I can't wait to get F1 2016 thankfully however we only need to wait another couple of weeks or so.
Just pre-ordered F1 16 on Steam, I wish it was out this Friday. I haven't been this excited about an F1 game since F1 2010 :D
Platy 6
I'll probably get it when its on sale. Actually looks good but I'm now part of the VR Master Race so I'm a bit disappointed.
Good job you bought the Vive when you did, as the price has gone up a lot due to the £.
xTheDarkLightx 0
I will never get the vive way too much money!
It is, but after briefly using one that someone brought into work it's well worth it imo, wish I didn't try it as I want one even more now. Remember it's new, as it becomes used by more people and cheaper to make, it'll be cheaper for the customer.
Hope so, though by then there will probably be some other unreasonably expensive virtual reality thing lol
I made the mistake of pre ordering it as soon as posible and it cost me 55 pounds, some one yesterday wanted help on where they should pre order it from and when I checked all of them were selling it for 49.99 only six pounds but still :#
I only paid £28 on Steam ;)
You're PCs though I'm FRICKING XBOX! You can't buy a game for under 50 bloody quid :'(
Go To Topic Listing Off-topic Discussion


This is a placeholder page for Alejandro Balboa, which means this person is not currently on this site. We do suggest using the tools below to find Alejandro Balboa.
You are visiting the placeholder page for Alejandro Balboa. This page is here because someone used our placeholder utility to look for Alejandro Balboa. We created this page automatically in hopes Alejandro Balboa would find it. If you are not Alejandro Balboa, but are an alumni of Lopez High School, register on this site for free now.


A fan has created a petition on the change.org website to ask Prospect Park to release the new album of Five Finger Death Punch, ready from December 31, 2016 (click here to see Jeremy and Jason interview at Download Festival). Jason Hook and Jeremy Spencer explained that Jeff Kwatinetz, CEO of Prospect Park, refused to release the new album of the band. So, we support the band and sign this petition. And you? Click here to sign the petition.


When you sign up for telecommunications services — some combination of TV, broadband, and/or phone — you're told you'll pay something like $49 or $99 a month… and yet the price you actually pay can be as much as 40% again on top of that, thanks to a heap of sometimes confusing charges and fees. Which ones do you blame the government for, and which are made up by your cable company? One business at a time, we're using real customers' bills to break it down. We've covered Comcast, TWC, DirecTV, Charter, FiOS, and Uverse in our bill guide series so far. Now, it's Dish's turn.
The below bill was provided to Consumerist by a real-life Dish customer who subscribes to a programming service tier that nominally costs $89.99 per month. The subscriber also pays for some extra premium and movie options, which definitely increase the rate. Setting aside the premium content add-ons, though, $28.57 — about 18% of their overall $157 bill — comes from some kind of additional surcharge or fee.
Dish bills are, well, pretty short. Since the company only provides pay-TV service, and not internet or voice, they're limited in scope. Dish also charges fewer fees overall than most of their competitors — a fact they tout far and wide as a major marketing tactic on their website, where they compare their own fee structure favorably against basically all the same providers (except Uverse) we've looked at so far.
This is the quoted price for the service bundle you subscribe to. In this case, it's the "America's Top 250" service tier, which includes almost every English-language TV channel there is, including all of the premium networks that usually require an additional fee.
Dish does all pricing based around their minimum bundle, which they advertise as "$49.99 a month plus taxes," and the "America's Top 250" tier package is described as a $25 / month upgrade over that. Do the math, and that's $74.99 per month for the package, which includes basically all of the basic, standard, and extended cable channels you can think of, from the major to the niche, including a bunch of sports — but not including the premium channels (HBO, Starz, etc).
This is the price you expect to pay, and the one you sign up for.
Satellite service requires some kind of receiver. This is functionally your cable box, for which the FCC thinks you are paying too much. Dish makes a point of not charging for the first, primary receiver subscribers have, but they still put the $0 line item on the bill so you can feel like you're saving money.
…Dish does, however, charge for additional receivers, and this subscriber has one. The company has a kangaroo-themed naming scheme, and the "baby" receivers on second and subsequent TVs in a customer's home are called Joeys.
Dish makes clear up-front that they charge separately for their fancy-pants "Hopper" (again with the kangaroo theme) DVR service. New customers pay $10, according to Dish's website. However, of the Dish bills we looked at, all but one were paying $12 for their DVR service.
As part of the bundle this customer subscribes to, they get a "discount" on receiving HD service, zeroing the $10 fee out.
However, this is somewhat misleading: HD service is always free, according to Dish's website, on all service tiers.
Who doesn't need their Game of Thrones and Sesame Street fix, right? HBO is your classic premium channel. However Dish is currently offering their package of 9 HBO networks for $15, rather than $19, to customers who sign up for it now.
The Dish movie pack gives you, well, movie channels, and lots of 'em. This particular customer has chosen to add this channel bundle to their subscription package.
Dish, like its satellite competitor DirecTV, has an optional Protection Plan — equipment insurance, basically — that subscribers can opt to pay for.
Basically the fee is a $96 annual bet against whether you'll have expensive repair needs or not. The plan covers replacement equipment, replacement cables due to power surges, and reduces the fee for having a tech come out to provide service to $10.
Dish automatically includes six free months of the protection plan with all of its two-year contract bundles — so most people are going to see their monthly bill suddenly jump by $8 on month seven of their "guaranteed two-year" price plan.
It's the year 2016: you rent movies by pushing a button on your remote control, instead of heading down to the local Blockbuster, because there is no local Blockbuster. This subscriber's family enjoys movies of an evening, and paid for some content this month.
Not pictured: Other one-time charges or one-time credits, like installation fees, repair fees, refunds, negotiated discounts, or similar non-recurring charges.
Tax? Tax. Taxes are inevitable. Rates vary wildly depending where you live but the vast majority of jurisdictions in the U.S. impose some kind of communications and/or sales tax on pay-TV services.
Googling "[state name] communications tax" should be the fastest way to find the pay-TV service tax rates in your state. Rates may also vary based on county or municipality.
Additionally, some states and jurisdictions impose standard sales taxes on pay-TV or telecommunications serivces; some impose them at a different rate than on other goods, and some may not impose them at all. You'll need to google "[state name] sales tax" to start working that one out.
Dish lumps basically all state and local tax you might pay into a single line item, which is not helpful for understanding why the money is coming out, and where it goes. We've looked at eight different detailed Dish bills from seven different states, and the "State and local tax" line on them read anything from $0 to $9, without any state / local breakdown or further explanation.
One of the eight bills did list "tax (telecommunications)" and "tax (sales)" as two different line items, but it was not the only state of the ones we received bills from that imposes telecommunications taxes — separate from sales taxes — on satellite TV.
Dish does maintain a list of state / regional taxes on their website, which is a good start. However, the names given to line-items on customers' bills do not match the names given on the website, nor is the list all-inclusive, as it leaves out several states that do also charge a tax.
Not a Dish Network subscriber? Never fear! Previous installments of this series have included detailed breakdowns of bills from Comcast, Charter, Time Warner Cable, Verizon FiOS, AT&T Uverse, and DirecTV, for all your cable bill comprehension needs.
Dish Offering More Flexible Pick-And-Choose Channel Packages. Is It Worth It?


Announcement letters are usually written in order to provide pieces of information or announcements about anything and everything. However, making an announcement needs a specific platform and when you have to give it in writing then it has to be more formal. Whatsoever be the content, the written materials, must definitely have a proper beginning, middle and an end. Likewise, an announcement letter is also expected to have a proper beginning, middle and an end. This avoids the chances of misunderstandings and misconceptions and irrelevant gossips. Writing such letters requires special care as too much information can make them seem dreary but too less can cause serious confusion in the minds of the people the letter is directed towards.
When you are asked to write an announcement of a play, you must basically need to know all the details about the play that is going to happen. Each simple and minute details plays a very important role in the announcement letter of a play. So before beginning to write the letter, be sure that you have got ample information about the content of the letter. Also, be sure to convey the information as concisely and precisely as possible. The important thing to always remember while drafting such a letter is to consider it from the point of view of the readers. Make sure to double check the letter to make sure it fits the bill.
Tips to write an Announcement of a Play Letter – A sample announcement letter is to help you develop a mere idea of how to write the letter.
Your announcement of the matter should be quick without making it too lengthy.
Since it's an announcement letter, the readers might come across doubts or clarifications which the sender must anticipate and mention them to avoid the reader ask further questions.
If the announcement matter is simple, don't add heavy words just to fill the page.
The letter must be re-checked for further amendments, if necessary.
I, (name of the sender) am writing this letter to inform you that there is play happening in (mention the venue) at (time) on (date). (Describe in your own words).
The name of the play is (name of the play) written by (name of the author) and is based on the theme of (mention the theme) which comes under the category of (mention which category). (describe all about the function).
We, the organizing team are pretty sure that each and every one of you attending the play will be benefited with a really wonderful work of art which you could cherish forever. Try to be there on time and hook your seatbelts because it's going to be a fantabulous play. (Cordially Describe your requirements). If you do have any doubts or queries regarding the same, please do feel free to contact us in (phone number) or (email).


text:
Scientists Discover a New Form of Lightning
Environmental carpe diem
David DeFranza ddefranza
Image credit: Ethan Hein/Flickr
The lightning observed during the eruption of Mt. Redoubt in 2009, researchers have determined, is an entirely new variety. Using radio antennas, scientists noticed that the bolts were shorter, lasting only a few milliseconds, and much more frequent than typical lightning.Love Lightning? Thunderstorms: The Dark and Stormy Drama (Slideshow)
Stephen McNutt, a volcano seismologist at the University of Alaska Fairbanks's Geophysical Institute, became interested in lightning during the 1992 Mt. Spurr eruption. While studying the seismic data from that event, he noticed strange spikes in the records. He explains that:
The seismometers were actually picking up lightning strikes...I knew that I had to reach out to the physicists studying lightning.
He teamed up with Ronald Thomas, a physicist and electrical engineer, and Sonja Behnke, a graduate student in atmospheric science. The group formulated a research plan and started waiting for the next eruption.
The Mount Redoubt Eruption
Image credit: Wikimedia Commons Mt. Redoubt, a 10,197 foot high volcano in Alaska's Aleutian Range, has been active for a millennia. In the twentieth century alone it erupted four times—most notably in 1989 during an event that spread ash nearly 8,000 square miles.
Watch: The Volcanoes of a Raging Planet (Video)
On January 30, 2009, seismologists observed an increase in activity surrounding the volcano and issued a warning that eruption was imminent. McNutt and his team mobilized but it wasn't until March 22 that Mt. Redoubt finally erupted. Though the impact fell short of history's greatest eruptions, it still managed to send ash as high as 65,000 feet into the air.
Certainly, the event was significant enough to provide McNutt and his team with data.
Measuring Volcanic Lightning
To measure the lightning, researchers deployed four Lightning Mapping Arrays prior to the eruption. Behnke explained that the arrays are "basically an old TV antenna set to pick up channel 3— the same frequency that lightning radiates from." They set the arrays 50 miles away from the volcano, on the other side of Cook Inlet. Thomas explained that they couldn't "put the LMAs on the volcano because the volcano is basically in a wilderness area and the stations need power and internet to function."
Watch: Will Global Warming Change the Weather? (Video)
Even from 50 miles away the arrays were able to capture an astonishing amount of data. During the eruption, Thomas commented:
We're getting all the data we hoped to get and a lot more...absolutely, the quality and quantity of the data will allow us to better understand the electrical charge structure inside a volcanic plume.
Mt. Redoubt's major eruptions lasted more than a week. After that, though the volcano continues to be active even today, it was time to return to the lab to analyze the data.
Understanding Dry Lightning
Image credit: Wikimedia Commons
Typically, lightning occurs when falling ice or rain polarizes particles in clouds. Positively and negatively charged particles separate and collect in groups of similar charge. A lightning bolt occurs when these charges are equalized.
Dry lightning is caused by the save convective forces created by a thunderstorm, without the need of precipitation and cumulonimbus clouds. Usually, dry lightning is observed during wildfires but it can occur anytime cold air moves over super-heated ground, like that created by a volcano.
Volcanic lightning, then, is a form of dry lightning. But what makes the lightning observed by McNutt and his team unique?
Defining a New Type of Lightning
The research team believes the lightning that occurred during the Mt. Redoubt eruption can be classified as a new type because of the frequency of the bolts and their duration. Thomas commented that "we saw lots of lightning—20 to 30 minutes of lighting...even more lightning than we would typically see during a major thunderstorm."
McNutt explained:
At the moment the eruption started, there were these sparks of lightning coming from the vent of Redoubt that only lasted 1 to 2 milliseconds.
He then added that "this was a different kind of lighting that we have never seen before."
What this research means for the future of volcanology and meteorology is not yet clear but there is one thing that everyone, scientists and residents alike, agree on: The Mt. Redoubt eruption was "the most spectacular lightning display that they have ever seen."
Love Lightning? Thunderstorms: The Dark and Stormy Drama (Slideshow)
Read more about volcanoes:
Krakatoa it Ain't: Mt Redoubt Enviro Effect Likely Small
Mayon Volcano May Cause Climate Cooling
Could Volcanic Eruptions Slow Climate Change?
Alaskan Volcanoes to be Surveyed, Tapped for Geothermal Power
Troops Use Aircraft to Protect Chimps from Incoming Lava
Read more about lightning:
Using the "Flash" from Lightning To Predict Deadly Floods
What to Do If Your Tree is Struck By Lightning
How to Stay Safe During a Thunderstorm
More information from How Stuff Works:
How Volcanoes Work
How Lightning Works
The lightning observed during the eruption of Mt. Redoubt in 2009, researchers have determined, is an entirely new variety. Using radio antennas, scientists noticed that the bolts were shorter, lasting only a few
Have you changed all of your light bulbs to LEDs? (Survey)
Trump administration will try to exempt specialty bulbs from energy...
Mesmerizing kinetic light installation interprets phases of the moo...
After the big Northridge earthquake, a mysterious cloud appeared ab...
How to grow and harvest 'cut and come again' lettuce, for perpetual salad greens


text:
Q: Place button over Image View bottom Line I'm using FrameLayout and want to place the button exactly like this:

How can I do this in XML? The button needs to be over the bottom of the image view always.
Here's my xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

        <ImageView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:adjustViewBounds="true"
            android:scaleType="fitCenter"/>

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_alignParentBottom="true"
            android:layout_centerInParent="true" />

</RelativeLayout>

A: I believe this could be easier done in RelativeLayout as such
<RelativeLayout ...>
    <ImageView (image) ...>
    <Button (button)
       android:layout_alignParentBottom="true"
       android:layout_centerInParent="true" />
</RelativeLayout>

Adding a small amount of padding to the image should also achieve the effect of it overlapping the bottom.
With this you should easily be able to put the button where you want.
Here's an example of the code being put into action and working on a test app I made up:
<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="wrap_content"
android:layout_height="200dp">
<ImageView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:adjustViewBounds="true"
    android:scaleType="fitCenter"
    android:src="@drawable/login_logo"
    android:paddingEnd="0dp"
    android:paddingStart="0dp"
    android:paddingBottom="15dp" />
<Button
    android:layout_width="100dp"
    android:layout_height="50dp"
    android:layout_centerHorizontal="true"
    android:layout_alignParentBottom="true"
    android:layout_centerInParent="true" />
</RelativeLayout>

Here's an image displaying it in action, sorry for the less than ideal image I was using as an example.

A: There is no way to do this naturally in android (pre Lollipop). My suggestion is to trick you user into thinking you are staggering one view over the other.
<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/full_header"
    android:layout_width="match_parent"
    android:layout_height="148"
    android:clipChildren="false">
    <ImageView
        android:id="@+id/background_image"
        android:layout_width="wrap_content"
        android:layout_height="120dp"
        android:contentDescription="@string/background_image_contentdescription"
        android:adjustViewBounds="true"
        android:layout_alignParentTop="true"/>
    <Button
        android:layout_width="match_parent"
        android:layout_height="56dp"
        android:layout_alignParentBottom="true">
    </Button>

</RelativeLayout>

Then in code when i am setting up this view.
//The large view is an Image with a fixed height of 120dp
int bgImageHeight = FSUtils.dpToPixels(120, getResources().getDisplayMetrics());
//The small view is a Relative Layout with a fixed height of 56 dp.
int dataLeafHeight = FSUtils.dpToPixels(56, getResources().getDisplayMetrics());
//The full header contains the two and its minimum height is set
// to the height of the large image + half the height of the small view
full_header.setMinimumHeight(bgImageHeight + dataLeafHeight/2);

Then you use align parent bottom and align parent top to pull the views to the top and bottom making the smaller view stagger the boundary of the big background view.
I believe there is a way to do this in the new OS LolliPop but i have not experimented with it yet. Maybe someone else can chime in on this.

A:
You can achieve this by using a constriantLayout as your parent layout, it makes it easy that you can simply drag and drop items at any position in the parent layout.

A: You can use Guideline in ConstraintLayout its easy to achieve.
 <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#fff">

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="match_parent"
        android:layout_height="300dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="@+id/guideline" />

    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/guideline"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        app:layout_constraintGuide_percent="0.37619698" />

</androidx.constraintlayout.widget.ConstraintLayout>


As the British government attempts to manipulate lawmakers by tying in vital carers' allowances with frozen pensions, expats and lawmakers' fight to get full pensions is heating up.
The frozen pension scandal isn't just confined to countries where there's no reciprocal agreement between the two governments, as it's totally illogical as well as unfair. Nor is there any indication that, post-Brexit, even more countries won't be added to the frozen pensions list. As a result, it's important for British would-be expat retirees fearing the effects on the British economy of the EU/UK divorce to consider the possible effect of a pensions freeze on their new lives overseas. Whether frozen pensions will still be the norm in the future is anyone's guess, thus making planning for a new life overseas at an older age risky at best and impractical at worst.
Despite increasing support from lawmakers for repealing the frozen pension law, the government has recently introduced a statutory instrument (SI) linking the provision of much-needed increases in the carers' allowance to the freezing of overseas-paid pensions, thus stymieing those in favour of ending pension freezes. Should they vote against the instrument on the grounds of ending frozen pensions this would also block the important carers' allowance increase.
This governmental trick has angered the increasing number of MPs in support of ending frozen pensions, with one former minister challenging the SI in an early day motion as a cynical ploy to divert attention from the frozen pensions issue. Sir Peter Bottomley considers the government's action is against democracy and grossly unfair to Britons living overseas who've paid in for their pensions all their working lives. He's calling for a separate vote on the issue and now has strong support in the House.
Last year, 94-year old Anne Puckridge flew back to the UK from Canada in order to take the fight straight to 10 Downing Street. She's been living with her daughter since her retirement in 2001 and, had she stayed in Britain, she'd now be receiving £125.95 a week. As her pension has been frozen, she gets just £ 72.50, the rate during the year she left the UK. She calculates the freeze has lost her a total of £23,000 over her years in Canada.
British retirees planning to relocate to Europe due to Brexit may well find their pensions are frozen once the UK is no longer in the EU club, adding their misery to that of the half a million who're affected right now and possibly forcing them to abandon their retirement dream and return to the UK.