text:
Bargaining in Mergers and Termination Fees
We model takeovers as a bargaining process and explain termination fees for, both, the target and the acquirer, subject to parties' bargaining power and outside options. In equilibrium, termination fees are offered by firms with outside options in exchange for a greater share of merger synergies. Termination fees decrease in firms' bargaining power, and increase in firms' outside options. We find that a merger with the second highest bidder, including a termination fee, can lead to equally high premiums as a merger with the highest bidder, without a termination fee. This novel result directly contrasts the agency cost perspective, which argues that termination provisions may be used by managers to lock into acquirers that do not generate the highest shareholder value. Further, even in a merger with the highest bidder and in the absence of bidding related costs, a termination fee is not necessarily a deal protection device, but can be used to improve shareholder value. Our bargaining model offers an alternative to auction related explanations of termination fees, like cost compensation or seller commitment.
If you experience problems downloading a file, check if you have the proper application to view it first. In case of further problems read the IDEAS help page. Note that these files are not on the IDEAS site. Please be patient as the files may be large.
As the access to this document is restricted, you may want to look for a different version under "Related research" (further below) or search for a different version of it.
|Date of creation:
|Mar 2007
|Contact details of provider:
| Postal: Centre for Economic Policy Research, 77 Bastwick Street, London EC1V 3PZ.
Phone: 44 - 20 - 7183 8801
Fax: 44 - 20 - 7183 8820
|Order Information:
| Email:
References listed on IDEAS
Please report citation or reference errors to , or , if you are the registered author of the cited work, log in to your RePEc Author Service profile, click on "citations" and make appropriate adjustments.:
- Roger B. Myerson, 1978. "Optimal Auction Design," Discussion Papers 362, Northwestern University, Center for Mathematical Studies in Economics and Management Science.
- Luis Alvarez & Rune Stenbacka, 2006. "Takeover Timing, Implementation Uncertainty, and Embedded Divestment Options," Review of Finance, European Finance Association, vol. 10(3), pages 417-441, September.
- Officer, Micah S., 2003. "Termination fees in mergers and acquisitions," Journal of Financial Economics, Elsevier, vol. 69(3), pages 431-467, September.
- Cramton, Peter & Schwartz, Alan, 1991.
"Using Auction Theory to Inform Takeover Regulation,"
Journal of Law, Economics and Organization,
Oxford University Press, vol. 7(1), pages 27-53, Spring.
- Peter Cramton & Alan Schwartz, 1991. "Using Auction Theory to Inform Takeover Regulation," Papers of Peter Cramton 91jleo, University of Maryland, Department of Economics - Peter Cramton, revised 09 Jun 1998.
- Comment, Robert & Jarrell, Gregg A., 1987. "Two-tier and negotiated tender offers: The imprisonment of the free-riding shareholder," Journal of Financial Economics, Elsevier, vol. 19(2), pages 283-310, December.
- Berkovitch, Elazar & Khanna, Naveen, 1990. " How Target Shareholders Benefit from Value-Reducing Defensive Strategies in Takeovers," Journal of Finance, American Finance Association, vol. 45(1), pages 137-156, March.
- Klemperer, Paul, 1998. "Auctions with almost common values: The 'Wallet Game' and its applications," European Economic Review, Elsevier, vol. 42(3-5), pages 757-769, May.
- Paul Povel & Rajdeep Singh, 2006. "Takeover Contests with Asymmetric Bidders," Review of Financial Studies, Society for Financial Studies, vol. 19(4), pages 1399-1431.
- Burch, Timothy R., 2001. "Locking out rival bidders: The use of lockup options in corporate mergers," Journal of Financial Economics, Elsevier, vol. 60(1), pages 103-141, April.
- Povel, Paul & Singh, Rajdeep, 2004. "Using bidder asymmetry to increase seller revenue," Economics Letters, Elsevier, vol. 84(1), pages 17-20, July.
- Bates, Thomas W. & Lemmon, Michael L., 2003. "Breaking up is hard to do? An analysis of termination fee provisions and merger outcomes," Journal of Financial Economics, Elsevier, vol. 69(3), pages 469-504, September.
- McAfee, R Preston & McMillan, John, 1987. "Auctions and Bidding," Journal of Economic Literature, American Economic Association, vol. 25(2), pages 699-738, June.
- Audra L. Boone & J. Harold Mulherin, 2007. "How Are Firms Sold?," Journal of Finance, American Finance Association, vol. 62(2), pages 847-875, 04. Full references (including those not matched with items on IDEAS)
This item is not listed on Wikipedia, on a reading list or among the top items on IDEAS.
When requesting a correction, please mention this item's handle: RePEc:cpr:ceprdp:6210. See general information about how to correct material in RePEc.
For technical questions regarding this item, or to correct its authors, title, abstract, bibliographic or download information, contact: ()
If you have authored this item and are not yet registered with RePEc, we encourage you to do it here. This allows to link your profile to this item. It also allows you to accept potential citations to this item that we are uncertain about.
If references are entirely missing, you can add them using this form.
If the full references list an item that is present in RePEc, but the system did not link to it, you can help with this form.
If you know of missing items citing this one, you can help us creating those links by adding the relevant references in the same way as above, for each refering item. If you are a registered author of this item, you may also want to check the "citations" tab in your profile, as there may be some citations waiting for confirmation.
Please note that corrections may take a couple of weeks to filter through the various RePEc services.


text:
Nope, no lead, just regular dominoes. They add just enough weight to keep things flat and are perfect 90° jiggernuegens . Yup Steve, handling damage happens all too easy. I hung the tailfeathers on my Spirit in the car seat and F'd up rudder just trying to go fly one Sunday...rassin frassin...
Another OC building tip of the day
Before I decided about a year ago to commit and take the plunge back into this hobby (RC Sailplanes), I was getting my toes wet with a couple of all balsa 16, 18 inch wing span HLGs. When sanding to airfoil shape, a lot of balsa dust was created. I saved it. When I had a gap to fill today I stuffed it with my bag-o-balsa dust, medium packed, and then flowed thin CA into the filled gap. Soaked all the way to the bottom in most places and it was easy to turn over to fill the bottom. Files well with a needle file to shape.
My flying bud Roger, and I, are making progress on our latest TOP SECRET interstate mobile micro workshop for mini gliders. He found the HS 55 in Phoenix, AZ a couple weeks ago, and the building shelf (10 x 36) at Home Depot in Home Depot (Omaha, Nebraska I think) yesterday. I found airfoils and pod design links and email them to him today. Pics in a week or so.
Love the dominoes, great idea, I'm gonna use it!
Time for a beer.....Have fun all.....Be Seeing You
Well, i don't think all my balsa dust wood be enough to do the filling job unfortunately, but I've got heaps of filler to spare .
I've always been interedsted in space saving solutions, it must have come from living and travelling on boats, so I'm interested in your pal Rog's prime mover workshop, GD.
You blokes have had a head start on me with enjoying an ale or two, but its just past midday here so forgive me while a dissapear and go crack one or two over a nice hot lunch.
Cover scheme idea for wing below, not sure if on one or both wings, it'd be white and transparent red film. Other pic shows the slight taper in the outer wing LE towards the tip.
Oooh, here comes my beer.
WEll the weekend building bug seems to have bitten a lot of us. I spent mine working on Liquiditys' GL and Omni 1.8. I'll be getting the rest of the electronics from him on Wed. and should be able to have them ready to maiden soon. That Omni is a sweet little ep job and I just may have to consider getting something like it in a larger size for myself.
I've got one more quick build laid on for another guy when I finish up Liquiditys jobs and then I'll be starting another build for myself. I'm still trying to decide one which one to build. Jester (build thread already done on it) or the Klingberg 100 wing. The Klingberg is a foam core job and I'm thinking of taking it down to Seanpcolas place and getting him to help me bag it. I know that the balsa sheeting would cost a lot less but this thing is begging for kevlar ala bag. So what do you guys think... Jester or the wing?
I started to save the dust from my fuse shaping because it was a very even consistency, I will in the future.
That's going to look VERY sharp Steve, my vote is both sides. Should be a easy see at altitude also .
I'm with Wylie, and with your mods, it'll be a "Jeffster" .
I still be here
Man, my buns be draggin' ! The lawnmowing season is upon me and so many of my customers want their equipment yesterday.
I'm taking a break.
Haven't done a thing to my Lil Bird yet. Too dang busy.
Took time out last Sunday to go flying with David and I hurt my BB. The wind was up and down and we were practicing our precision landings. I had brought the Bird around trying to nail the circle, had it slowed down nicely and ready for touchdown. A dang gust caught me and the Bird ballooned up and stalled. Came in on the right wing and it cartwheeled, knocking off the nose block and cracking the polyhedral area. Very repairable, so it will be back in the air soon as I have to continue practicing for our upcoming contest at the end of the month. The JDSP is still flying beautifully....so much so that I may just use it for the RES and open events.
The color plan makes sense. Red and white are hard to beat....that is unless you have John Deere colors in your blood.
From what I hear about your storms down there I don't see how in the devil you can even get to that pool. Your sod must have washed away.
I still drop by to read the thread here, so don't count me out. It's just that I have so damned much grease and dirt on my hands from the lawn equipment that it takes me most of the evening to get it off. Not like on the farm when we had plenty of coaloil (kerosene to you young blokes) around for the tractor and lamps. Real easy wash up that way.
Yawn.......nite all.
No excuses Gerald... I'm coming to Amarillo tomorrow for the rest of the week...
Hey thanks for popping in Gerald, i was about to echo Don's question of how you are doing.
Sorry to hear the BB small prang, but great to hear the JDSP is going strong. I flew Patches down the front of the house on the mangrove flats this morning and had a great old time with it, you can't beat wingspan and the O3's ability to just keep on penetrating from low and downwind. It makes me wishfully wonder how a more slippery Journey will fly in comparison.
Sounds like you are in demand over there, but work is good. Take care,
|Thread Tools
|Similar Threads
|Thread Starter
|Last Post
|HELP ME!!!< I think I'm getting addicted to cutting foam!!!
|Foamies (Kits)
|Feb 21, 2011 01:58 PM
|I'm Getting my FiXX
|Foamies (Kits)
|Mar 18, 2002 11:40 PM
|looks like i'm getting a piccolo, any advice?
|Electric Heli Talk
|May 10, 2001 09:34 AM
|I'm getting worried
|Electric Plane Talk
|Apr 21, 2001 09:11 AM

subset: commoncrawl


text:
"I'm a person just like you, but I've got better things to do than sit around and fuck my head or hang out with the living dead." –Minor Threat
If you're so against drugs yourself, how is it that you always end up dating addicts? This is a question my friend and I asked ourselves last night. She and I are straight-edge but the guys we've attracted in the past have usually been addicted to drugs. If you find yourself in a similar predicament, trapped in a pattern of dating intelligent-stimulating-but-destructive people, explore the reasons below. Maybe one will apply or perhaps several will apply, but nonetheless, the point is to get some insight into yourself so you can broaden the selection of people you date. Here are some reasons you may be addicted to dating addicts:
1. You're used to this threshold of chaos and drama, and anything less than this isn't stimulating enough for you. "Normal" relationships and people just don't hold your attention the way the drama of dating a drug addict does. Which brings me to my next point.
2. You lack emotional maturity. As Rumi once said, "Water seeks its own level." You equate love with pain and excitement with chaos. Either way, you don't quite know what you want out of life yet…which is why you're content settling for addicts.
3. You don't want real intimacy. If you did, you wouldn't date an addict, because at least half the time, you're treated like you aren't there. Any efforts of yours to help or alleviate what they're going through are often ignored and your needs are swept under the rug. It's like you don't exist, as you try feeding into this black hole of a situation. A person who wants real intimacy wouldn't stand for this. They would demand more out of their relationships, love, and life.
4. Real intimacy comes with real accountability. Perhaps you can't handle real intimacy because you don't want the responsibility it requires to maintain.
5. You're desensitized to drug addicts. One of the first addicts I dated back when I was twenty years old was a heroin addict. All addicts after that kind of paled in comparison. My brain rationalized their drug use as something that was "more tame", which I told myself I was equipped to handle.
6. You haven't met a sober artist you have chemistry with- yet. Speaking from personal experience, there are just a limited amount of sober artists out there. The biggest reason I've put up with the crap other addicts I've dated put me through is because they were interesting, well-read, creative, artists. If you hang out in those circles you will see how difficult it is to find a "stable" artist. You probably won't. But you can try finding a sober one, or at least an artist dedicated to their own recovery.
7. You are better at helping others than helping yourself. You're comfortable with the role of being a "helper", "healer", or "fixer"…mainly because it takes the focus of yourself and all the hard work you need to do for your own journey.
There are probably several others explanations as to why you are constantly surrounded by drug addicts despite not being one yourself. I'm curious to hear your perspective. If you wish to submit an article elaborating on either one of these points or offering an explanation on a different point of view, submit your article to firstname.lastname@example.com


text:
Premier League: Stoke City defender Marc Muniesa hails Mark Hughes' impact
Marc Muniesa has hailed Mark Hughes for changing the playing style of Stoke and guiding them to a ninth-place finish.
By Lucas Brown
Last Updated: 16/05/14 1:31pm
The 22-year-old, who joined on a free transfer from Barcelona last summer, found first-team opportunities limited at the start of the campaign, but eventually became more of a regular fixture in defence and started the club's final four games.
It was also Hughes' debut season at the Britannia Stadium after six months out of football and he led Stoke to their highest Premier League finish in ninth.
His predecessor, Tony Pulis, was often the subject of criticism as he was accused of playing long-ball tactics despite managing to establish Stoke in the top-flight.
Muniesa was full of praise for Hughes and says that the style of football he has implemented is not too dissimilar to that from his time at the Nou Camp.
"It is Stoke's highest finish and I have had a great experience with many great memories of my part in games," he told Catalan radio station RAC 1.
"The way of playing is easy. We have had five years of playing in the same way with the long ball, but under Hughes we have tried to change that style and be more like Barca.
"The Premier League can be physical though and occasionally we have ended up returning the to the long-ball system."
Meanwhile, Muniesa also praised Barcelona captain and former team-mate Carles Puyol, who is set to play his final game before retiring in the La Liga title decider against Atletico Madrid.
"To me he is an idol," said Muniesa.
"He is one of the best defenders Barca has ever had and the captain of the best Barca team in history.
"Also, he is an exceptional person who has always been fantastic with me and I always will be grateful for that."


text:
ACParadise Network: American Cosplay Paradise American Cosplay Experience American Cosplay Snapshots
Cosplayer hailo > Costume of Dominic (Eureka seveN: Good night, Sleep tight, Young lovers)
- Most Recent Photo
- 06-28-2010
- Series
- Eureka seveN: Good night, Sleep tight, Young lovers
- Character
- Dominic
- Year Completed:
- Construction Difficulty:
- Very Easy
- Costume worn at:
- New York Anime Festival 2009
About this Costume
- Construction Details:
Blazers are fun.
- Personal Thoughts:
- LOL I have never watched this movie, this costume aside I'm pretending it doesn't exist a little. In all seriousness I only made it to go with our little Eureka Seven group and I just like making jackets and dood costumes.
Add a Comment


text:
Login To Your Account
Create An Account
"The True Source of All Power and Strength is LOVE"
Our Super POWER Stone necklaces were inspired by the amazing women of our country (and beyond) who are standing up, speaking out and taking action. We want to help you to do the same so we've selected the most dynamic gemstones that we can find to support you (or a friend) in our current reality. And we'll be donating 30% of your purchase price to The ACLU.
A new, limited edition necklace, featuring a different super power, informed by the healing properties of a specific, powerful gemstone will be introduced each month.
This Limited Edition Chevron Amethyst is infused with LOVE and opens the third eye, enhancing intuition. It amplifies courage and inner strength. It dissipates negative energy and removes any resistance to change.
This particular Chevron Amethyst gemstone necklace is available in very limited quantities (30 only).
This stone is not eligible for the 20% first time discount code.
Each Super Power Stone necklace is handcrafted by stay-at-home moms (who earn a thriving wage) on a nylon "Miracle cord" with sterling silver hardware 10 by 10mm rough cut faceted Chevron Amethyst that has been intentionally chosen and imbued with light and love.
Our "Miracle cord" is Super Strong…Don't let the sweet and dainty look fool you, it can hold up to 11 lbs of Gemstones! The incredibly strong nylon cord is also almost invisible, creating the illusion that the stone is "floating" around your neck.
*Comes with envelope. Available in 16, 17 or 18 inch lengths.
Like you, we want to make the world the best place that it can be. As a mother-owned and operated business, we feel a responsibility to do the right thing. We pride ourselves on the best customer service you'll ever experience. We work with local vendors whenever possible from graphic design, and printing, to gemstone suppliers. We value our environment and print on paper that is FSC certified and use only eco-friendly packaging. Each year we share a percentage of our proceeds with non-profit organizations who empower women through service and kindness.
Success! Feel free to
continue shopping
or head to your


text: I know I should just try this myself but can anyone explain the difference in effect achieved between a large light source (softbox or umbrella) close to, verus far from the subject, say a head and shoulders shot. Theoretically I know this: Light fall off would be much more apparent with the light closer. With the light farther away, the background and the subject would be more equally illuminated (less pronounced light falloff). Closer light means a larger light source, farther light means smaller, harsher light. Does anyone have a rule of thumb, something which works for them to determine how close to place the lightsource, other than, I need it close to get f11? Frank


text:
- About me
- Not so frequently asked questions and stuff
- Files
- Articles en français
Welcome to zewaren.net. This site presents myself and mostly archives the solutions to some problems I once had.
Let's install Kaiwa on FreeBSD.
Install nodejs:
# make -C /usr/ports/www/node install clean
Install npm:
# make -C /usr/ports/www/npm install clean
Create a directory to host the code and go there:
# mkdir /usr/local/www/kaiwa # cd /usr/local/www/kaiwa
Clone the repository:
# git clone https://github.com/digicoop/kaiwa.git .
If you don't have git, you can download the zip file and extract it.
Install the dependencies:
# npm install
My Jabber/XMPP server is ejabberd.
Here's the relevant part: we must ensure there's a path wired to handler
ejabberd_http_ws in
## ## To handle XML-RPC requests that provide admin credentials: ## ## - ## port: 4560 ## module: ejabberd_xmlrpc - port: 5280 module: ejabberd_http ## request_handlers: ## "/pub/archive": mod_http_fileserver request_handlers: "/websocket": ejabberd_http_ws web_admin: true http_poll: true http_bind: true ## register: true captcha: true
Make sure port 5280 is open in your firewall.
Copy the example config file:
# cp dev_config.example.json dev_config.json
Here's what I put in there:
{ "isDev": true, "http": { "host": "localhost", "port": 8000 }, "session": { "secret": "wSPwBucqnCY4JHEENMY6NM4UsfycNz" }, "server": { "name": "Example", "domain": "example.com", "wss": "ws://example.com:5280/websocket/", "muc": "", "startup": "groupchat/example%40chat.example.com", "admin": "admin" } }
Create a user to run the service:
# pw useradd kaiwa
Allow the user to feel at home in the code directory:
# chown -R kaiwa:kaiwa /usr/local/www/kaiwa
You can check if everything is working by running the service manually:
# sudo -u kaiwa node server
If everything is fine, install forever to make sure the service is always running:
# npm install forever -g
Create the logs, give them to the right user and configure newsyslog to rotate them:
# touch /var/log/kaiwa.log # touch /var/log/kaiwa-error.log # touch /var/log/kaiwa-forever.log # chown kaiwa:kaiwa /var/log/kaiwa* echo "/var/log/kaiwa.log kaiwa:kaiwa 640 3 100 * JC /var/run/kaiwa.pid" >> /etc/newsyslog.con echo "/var/log/kaiwa-error.log kaiwa:kaiwa 640 3 100 * JC /var/run/kaiwa.pid" >> /etc/newsyslog.con echo "/var/log/kaiwa-forever.log kaiwa:kaiwa 640 3 100 * JC /var/run/kaiwa.pid" >> /etc/newsyslog.con
For thing for the pid file location:
# mkdir /var/run/kaiwa # chown kaiwa:kaiwa /var/run/kaiwa
Create a rc script in
/usr/local/etc/rc.d/kaiwa and make sure it's executable.
#!/bin/sh # In addition to kaiwa_enable, the following rc variables should be defined: # kaiwa_msg The name of your program, printed at start. Defaults to "kaiwa". # kaiwa_dir The directory where your node files live. Must be defined. # kaiwa_logdir The directory for logfiles. Defaults to ${kaiwa_dir}/logs. # kaiwa_user Sudoed before running. Defaults to "kaiwa". # kaiwa_app Application main script. Defaults to "server.js" (relative # to kaiwa_user's home # kaiwa_forever forever binary file path. Defaults to "/usr/local/bin/forever". # kaiwa_local_forever use local forever binary # (ie. kaiwa_user's home/kaiwa_modules/.bin/forever) # kaiwa_forever_log forever log file. Defaults to /var/log/forever.log. # PROVIDE: kaiwa # REQUIRE: LOGIN # KEYWORD: shutdown . /etc/rc.subr name="kaiwa" rcvar="${name}_enable" start_precmd="${name}_prestart" start_cmd="${name}_start" stop_cmd="${name}_stop" # kaiwa executable command="/usr/local/bin/forever" pidfile="/var/run/${name}/${name}.pid" # forever needs a path for each command PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/root/bin # get rc vars load_rc_config $name : ${kaiwa_enable:="no"} : ${kaiwa_msg:="kaiwa"} : ${kaiwa_logdir:="/var/log"} : ${kaiwa_user:="kaiwa"} : ${kaiwa_app:="server.js"} : ${kaiwa_forever:="/usr/local/bin/forever"} : ${kaiwa_local_forever:="no"} : ${kaiwa_forever_log:="/var/log/kaiwa-forever.log"} case ${kaiwa_local_forever} in [Yy][Ee][Ss]) kaiwa_forever="/usr/local/www/kaiwa/node_modules/.bin/forever" ;; *) ;; esac # make sure we're pointing to the right place required_dirs="${kaiwa_dir}" required_files="${kaiwa_dir}/${kaiwa_app}" # any other checks go here kaiwa_prestart() { echo "$kaiwa_msg starting" } kaiwa_start() { ${kaiwa_forever} start -a -l ${kaiwa_forever_log} -o ${kaiwa_logdir}/kaiwa.log \ -e ${kaiwa_logdir}/kaiwa-error.log --minUpTime 3000 --pidFile ${pidfile} \ --workingDir ${kaiwa_dir} ${kaiwa_dir}/${kaiwa_app} } kaiwa_stop() { # kill kaiwa nicely -- node should catch this signal gracefully ${kaiwa_forever} stop --killSignal SIGTERM `cat ${pidfile}` } run_rc_command "$1"
Enable the daemon in
kaiwa_enable="YES" kaiwa_dir="/usr/local/www/kaiwa"
Start the service:
# service kaiwa start
Check that the daemon is listening:
# sockstat -4l | grep kaiwa kaiwa node 54296 11 tcp4 10.2.0.141:8000 *:*
In this series of blog posts, we're going to create a Android build server for continuous integration on FreeBSD.
We want people from our project to be able to build APKs of a Android app and get them by email once they're built. People should be able to configure their app with some Jenkins parameters.
This post does not explain the basics of Jenkins. You should read the documentation if it's your first time using it.
You will need the following plugins:
In this scenario, I'm going to assume our FreeBSD build server is not on the same host as the Jenkins.
In consequence, we need to link the two systems by installing a Jenkins slave-node on the build system.
On your Android build system, create a new user:
# pw group add -n jenkins-slave # pw user add -n jenkins-slave -g jenkins-slave
Create a SSH key pair:
# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/jenkins-slave/.ssh/id_rsa): jenkins-slave-id_rsa Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in jenkins-slave-id_rsa. Your public key has been saved in jenkins-slave-id_rsa.pub.
Add the public key to your SSH's
authorized_keys. That will be how Jenkins connect to the slave.
# mkdir ~/.ssh/ # cat jenkins-slave-id_rsa.pub >> ~/.ssh/authorized_keys
Go to "Manage Jenkins" -> "Manage credentials", and add a new "SSH Username with private key".
Put the private key you generated earlier there and configure the rest.
Go to "Manage Jenkins" -> "Manage Nodes" and create a new node.
Configure the node with the right host, port and home directory. Set the location of the java executable, or Jenkins will only try to find it in
/bin or
/usr/bin and it won't work.
If everything goes well, the master node should connect to the server, install its JAR and start the slave node.
# ls jenkins-slave-pepper-id_rsa jenkins-slave-pepper-id_rsa.pub slave.jar workspace # ps -U jenkins-slave PID TT STAT TIME COMMAND 66474 - IJ 0:08.67 sshd: jenkins-slave@notty (sshd) 66478 - IsJ 11:51.54 /usr/local/openjdk8/bin/java -jar slave.jar
Create a new job, give it a nice name, and start the configuration.
Click on "This build is parameterized", and add as many parameters as you want. You will be able to use these parameters as Jenkins variable everywhere later in the build.
Here I have two parameters:
Configure Jenkins to fetch the source code of the app where it's located.
Here I'll fetch it from git.
Add the required environment variables to the build.
Add a gradle build script, and invoke the tasks to build your app. Here you can use the parameters you set up at the beginning of the config.
You can build without the gradle plugin if you want. It only displays the build nicer but is strictly non essential.
Add a post build step: "Editable Email Notification".
Put the recipient chosen by the user from the parameters into the list of recipients, customize the sender, reply-to, subject, content, etc.
Add the APK files as attachments.
Don't forget to configure the triggers to send the email if the build succeeds. By default, emails are only sent on failure.
Start a build. If everything goes well, you should receive the resulting APK by email a few seconds after the build is done.
In this series of blog posts, we're going to create a Android build server for continuous integration on FreeBSD.
Most of the information of that step comes from the original documentation.
Create a nice user for the runner:
# pw group add -n gitlab-runner # pw user add -n gitlab-runner -g gitlab-runner -s /usr/local/bin/bash # mkdir /home/gitlab-runner # chown gitlab-runner:gitlab-runner /home/gitlab-runner
Download the runner executable (or build it yourself (see the end of the post)), and mark it as such:
# fetch -o /usr/local/bin/gitlab-ci-multi-runner https://gitlab-ci-multi-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-ci-multi-runner-freebsd-amd64 # chmod +x /usr/local/bin/gitlab-ci-multi-runner
Create and chmod the log file:
# touch /var/log/gitlab_runner.log && sudo chown gitlab-runner:gitlab-runner /var/log/gitlab_runner.log
Create the rc-script (
#!/bin/sh # PROVIDE: gitlab_runner # REQUIRE: DAEMON NETWORKING # BEFORE: # KEYWORD: . /etc/rc.subr name="gitlab_runner" rcvar="gitlab_runner_enable" load_rc_config $name user="gitlab-runner" user_home="/home/gitlab-runner" command="/usr/local/bin/gitlab-ci-multi-runner run" pidfile="/var/run/${name}.pid" start_cmd="gitlab_runner_start" stop_cmd="gitlab_runner_stop" status_cmd="gitlab_runner_status" gitlab_runner_start() { export USER=${user} export HOME=${user_home} if checkyesno ${rcvar}; then cd ${user_home} /usr/sbin/daemon -u ${user} -p ${pidfile} ${command} > /var/log/gitlab_runner.log 2>&1 fi } gitlab_runner_stop() { if [ -f ${pidfile} ]; then kill `cat ${pidfile}` fi } gitlab_runner_status() { if [ ! -f ${pidfile} ] || kill -0 `cat ${pidfile}`; then echo "Service ${name} is not running." else echo "${name} appears to be running." fi } run_rc_command $1
Set the rc script as being executable:
chmod +x /usr/local/etc/rc.d/gitlab_runner
Register the runner with Gitlab-CI:
# sudo -u gitlab-runner -H /usr/local/bin/gitlab-ci-multi-runner register Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/ci): https://gitlab.example.com/ci Please enter the gitlab-ci token for this runner: sqzGW7_PgmarZ3FsSsUa Please enter the gitlab-ci description for this runner: [androidbuild]: Example Android build machine Please enter the gitlab-ci tags for this runner (comma separated): android Registering runner... succeeded runner=sqzGW7_T Please enter the executor: docker-ssh+machine, docker, docker-ssh, parallels, shell, ssh, virtualbox, docker+machine: shell Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
Enable the runner service and start it:
# sysrc -f /etc/rc.conf "gitlab_runner_enable=YES" # service gitlab_runner start
Create a file named
.gitlab-ci.yml and configure it to your needs.
before_script: - export LD_LIBRARY_PATH="/home/androidbuild/android-sdk-linux/build-tools/23.0.2/lib/" - export ANDROID_HOME="/home/androidbuild/android-sdk-linux/" prod: only: - master script: - ./gradlew assembleRelease artifacts: paths: - Example/build/outputs/ expire_in: 1 week
This example file will trigger a build when branch master is updaded, and it will save the artifacts for one week.
If there's something I don't like, it's downloading executables from the internet when I can build them myself.
Let's build that Gitlab runner ourselves.
Install golang:
# make -C /usr/ports/lang/go install clean
Create a working go directory structure:
% mkdir -p ~/gowork/src/gitlab.com/gitlab-org/ % cd ~/gowork/src/gitlab.com/gitlab-org/ % setenv GOPATH ~/gowork % setenv PATH "${PATH}:${GOPATH}/bin"
Get the code from Gitlab (checkout the version you want to build):
% git clone https://gitlab.com/gitlab-org/gitlab-ci-multi-runner.git % cd gitlab-ci-multi-runner/ % git checkout tags/v1.5.2
% gmake deps docker % gmake build_simple % file "out/binaries/gitlab-ci-multi-runner" out/binaries/gitlab-ci-multi-runner: ELF 64-bit LSB executable, x86-64, version 1 (FreeBSD), statically linked, not stripped
Install (as root):
# install -m 755 out/binaries/gitlab-ci-multi-runner /usr/local/bin/gitlab-ci-multi-runner
In this series of blog posts, we're going to create a Android build server for continuous integration on FreeBSD.
I'll be using a normal
# uname -a FreeBSD androidbuild 10.2-RELEASE-p11 FreeBSD 10.2-RELEASE-p11 #0: Wed Jan 27 15:56:01 CET 2016 root@androidbuild:/usr/obj/usr/src/sys/GENERIC amd64
Parts of this posts are duplicate from my old post on how to build APKs on FreeBSD.
We're going to install many packages, including a lot of GNU-style one. So if you care about having your systems cleans, I suggest your do all this in a jail.
Install gradle:
# make -C /usr/ports/devel/gradle/ install clean
Go drink the longest coffee you can brew. That stuff installs a lot of dependencies.
Install bash and link it to
# make -C /usr/ports/shells/bash install clean # ln -s /usr/local/bin/bash /bin/bash
Install git:
# make -C /usr/ports/devel/git install clean
Install python:
# make -C /usr/ports/lang/python install clean
Create a nice user to execute the builds:
# pw useradd androidbuild # mkdir /home/androidbuild # chown androidbuild:androidbuild /home/androidbuild
Load FreeBSD's Linux emulation system and install a base CentOS 6 system:
# kldload linux # cd /usr/ports/emulators/linux_base-c6 && make install distclean
The latest version of the build tools (24.0.0) use 64bit binaries and libraries. If you want to be able to build your apks with them, you'll also need the 64bit Linux emulation. In that case, you must be running a FreeBSD version >= 10.3. In that case, you should do instead:
# kldload linux # kldload linux64 echo "OVERRIDE_LINUX_BASE_PORT=c6_64" >> /etc/make.conf echo "OVERRIDE_LINUX_NONBASE_PORTS=c6_64" >> /etc/make.conf # cd /usr/ports/emulators/linux_base-c6 && make install distclean
If you alread had the 32 bit CentOS base, uninstall the port, remove the
/compat/linux files and reinstall the port again after setting the two entries in make.conf.
Fetch and extract the latest version of the Linux SDK:
% fetch 'https://dl.google.com/android/android-sdk_r24.4.1-linux.tgz' % tar xzf android-sdk_r24.4.1-linux.tgz % setenv ANDROID_HOME /home/androidbuild/android-sdk-linux/
As it is now, the SDK will download build tools for Windows, since it obviously won't recognize our FreeBSD.
Since we're going to use the Linux emulation, we need to path the system so that it downloads Linux binaries:
Download the source of the SDK base:
% git clone https://android.googlesource.com/platform/tools/base
Apply the following patch:
diff -r -u a/common/src/main/java/com/android/SdkConstants.java b/common/src/main/java/com/android/SdkConstants.java --- a/common/src/main/java/com/android/SdkConstants.java 2016-09-06 07:56:56.325948102 +0000 +++ b/common/src/main/java/com/android/SdkConstants.java 2016-09-06 07:58:10.721944140 +0000 @@ -635,6 +635,8 @@ return PLATFORM_WINDOWS; } else if (os.startsWith("Linux")) { //$NON-NLS-1$ return PLATFORM_LINUX; + } else if (os.startsWith("FreeBSD")) { //$NON-NLS-1$ + return PLATFORM_LINUX; } return PLATFORM_UNKNOWN; diff -r -u a/sdklib/src/main/java/com/android/sdklib/internal/repository/archives/ArchFilter.java b/sdklib/src/main/java/com/android/sdklib/internal/repository/archives/ArchFilter.java --- a/sdklib/src/main/java/com/android/sdklib/internal/repository/archives/ArchFilter.java 2016-09-06 07:56:56.828948347 +0000 +++ b/sdklib/src/main/java/com/android/sdklib/internal/repository/archives/ArchFilter.java 2016-09-06 07:58:35.160941890 +0000 @@ -216,6 +216,8 @@ hostOS = HostOs.WINDOWS; } else if (os.startsWith("Linux")) { //$NON-NLS-1$ hostOS = HostOs.LINUX; + } else if (os.startsWith("FreeBSD")) { //$NON-NLS-1$ + hostOS = HostOs.LINUX; } BitSize jvmBits;
Rebuild the patched files.
% javac common/src/main/java/com/android/SdkConstants.java % javac sdklib/src/main/java/com/android/sdklib/internal/repository/archives/ArchFilter.java -cp "sdklib/src/main/java:common/src/main/java:annotations/src/main/java"
Replace the files inside the jar.
% cd sdklib/src/main/java/ && jar uf ${ANDROID_HOME}/tools/lib/sdklib.jar com/android/sdklib/internal/repository/archives/ArchFilter.class % cd common/src/main/java && jar uf ${ANDROID_HOME}/tools/lib/common.jar com/android/SdkConstants.class
See this patch on the Android website: https://android-review.googlesource.com/#/c/100271/
Go to the tool directory:
% cd ${ANDROID_HOME}/tools/
In the example, we're going to build an APK thats uses API version 23.
Let's download the right packages:
% ./android list sdk -u -a [...] 7- Android SDK Build-tools, revision 23.0.3 31- SDK Platform Android 6.0, API 23, revision 3 119- Google APIs, Android API 23, revision 1 % ./android update sdk -u -a -t tools,platform-tools,7,31,119
Let's find the Linux binaries in the build tools, and brand them as such:
% find build-tools/23.0.3/ -maxdepth 1 -type f -print0 | xargs -0 -n 10 file | grep "ELF" build-tools/23.0.3/mipsel-linux-android-ld: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.8, stripped build-tools/23.0.3/arm-linux-androideabi-ld: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.8, stripped build-tools/23.0.3/llvm-rs-cc: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.24, BuildID[sha1]=8a4ffbc0e197147c4e968722e995605e1d06ea88, not stripped build-tools/23.0.3/i686-linux-android-ld: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.8, stripped build-tools/23.0.3/bcc_compat: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.24, BuildID[sha1]=d565d03b7bafd03d335bdd246832bb31c7cca527, not stripped build-tools/23.0.3/aapt: ELF 32-bit LSB shared object, Intel 80386, version 1 (GNU/Linux), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.24, BuildID[sha1]=cfb63b4ad11d0c2d59f10329f0116706e99bf72e, not stripped build-tools/23.0.3/aidl: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.24, BuildID[sha1]=3cbd3d742040d61877a3c6544778bf4701b2f62d, not stripped build-tools/23.0.3/aarch64-linux-android-ld: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.8, stripped build-tools/23.0.3/split-select: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.24, BuildID[sha1]=b3bfb153d0ffaef6ed84c316ff682381ba8d75b2, not stripped build-tools/23.0.3/dexdump: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.24, BuildID[sha1]=a678a8163a2483107d285ffdc94fdde0d4fb2178, not stripped build-tools/23.0.3/zipalign: ELF 32-bit LSB shared object, Intel 80386, version 1 (GNU/Linux), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.24, BuildID[sha1]=7d64216663df9fd3b4048952d095fbd07cb4284f, not stripped % find build-tools/24.0.3/ -maxdepth 1 -type f -print0 | xargs -0 -n 10 file | grep "ELF" | awk 'BEGIN { FS = ":" } ; {print $1}' | xargs brandelf -t Linux % find build-tools/24.0.3/ -maxdepth 1 -type f -print0 | xargs -0 -n 10 file | grep "ELF" | awk 'BEGIN { FS = ":" } ; {print $1}' | xargs chmod +x
The SDK is now configured and we should be able to build our apps there.
Fetch the sources of your app:
% git clone 'https://git.example.org/android-app' % cd android-app
Be sure to have set environment variable
ANDROID_HOME to the SDK location.
Start gradle and see if it complains.
% gradle tasks ------------------------------------------------------------ All tasks runnable from root project ------------------------------------------------------------ Android tasks ------------- androidDependencies - Displays the Android dependencies of the project. signingReport - Displays the signing info for each variant. sourceSets - Prints out all the source sets defined in this project. [...] To see all tasks and more detail, run gradle tasks --all To see more detail about a task, run gradle help --task <task> BUILD SUCCESSFUL Total time: 14.839 secs
Gradle is happy, let's try a build:
% gradle assembleRelease [...] BUILD SUCCESSFUL Total time: 2 mins 24.784 secs
Let's look at the build output:
% ls Truc/build/outputs/apk/ truc-app-release-unaligned.apk truc-app-release.apk
You built some IoT device running a Python compliant OS. You want to be able to plug it anywhere, and be able to find it in the network view of Windows (or the equivalent thing of other systems).
I've created some code that implements a SSDP server and a HTTP server, in order to notify the network that a device is here.
The base of this code was the SSDP module of coherence.
I took it, converted it to Python 3, and kept only the interesting parts for this project: the parts that responds to `MSEARCH` queries.
The code is attached to this post, and is available as a mirror on Github.
First, a SSDP client will try to search devices on the network by issuing a
MSEARCH * query:
M-SEARCH * HTTP/1.1 HOST:188.8.131.52:1900 ST:upnp:rootdevice MX:2 MAN:"ssdp:discover"
lib/ssdp.py will handle it and reply with a
HTTP/1.1 200 OK SERVER: ZeWaren example SSDP Server LOCATION: http://192.168.4.207:8088/jambon-3000.xml USN: uuid:e427ce1a-3e80-43d0-ad6f-89ec42e46363::upnp:rootdevice CACHE-CONTROL: max-age=1800 EXT: last-seen: 1477147409.432466 ST: upnp:rootdevice DATE: Sat, 22 Oct 2016 14:44:26 GMT
The client will then fetch the device description:
GET /jambon-3000.xml HTTP/1.1 Cache-Control: no-cache Connection: Keep-Alive Pragma: no-cache Accept: text/xml, application/xml User-Agent: FDSSDP Host: 192.168.4.207:8088
lib/upnp_http_server.py will build and serve that file:
HTTP/1.0 200 OK Server: BaseHTTP/0.6 Python/3.4.3 Date: Sat, 22 Oct 2016 14:44:26 GMT Content-type: application/xml <root> <specVersion> <major>1</major> <minor>0</minor> </specVersion> <device> <deviceType>urn:schemas-upnp-org:device:Basic:1</deviceType> <friendlyName>Jambon 3000</friendlyName> <manufacturer>Boucherie numrique SAS</manufacturer> <manufacturerURL>http://www.boucherie.example.com/</manufacturerURL> <modelDescription>Jambon Appliance 3000</modelDescription> <modelName>Jambon</modelName> <modelNumber>3000</modelNumber> <modelURL>http://www.boucherie.example.com/en/prducts/jambon-3000/</modelURL> <serialNumber>JBN425133</serialNumber> <UDN>uuid:e427ce1a-3e80-43d0-ad6f-89ec42e46363</UDN> <serviceList> <service> <URLBase>http://xxx.yyy.zzz.aaaa:5000</URLBase> <serviceType>urn:boucherie.example.com:service:Jambon:1</serviceType> <serviceId>urn:boucherie.example.com:serviceId:Jambon</serviceId> <controlURL>/jambon</controlURL> <eventSubURL/> <SCPDURL>/boucherie_wsd.xml</SCPDURL> </service> </serviceList> <presentationURL>http://192.168.4.207:5000/</presentationURL> </device> </root>
The client now knows (nearly) everything about the device.
The BeagleBone Black's SoC (AM335x) includes a watchdog timer, that will reset the whole board is it isn't pingged regularly.
Let's see if we can stop that thing running the latest Debian GNU/Linux to date.
# uname -a Linux beaglebone 4.4.9-ti-r25 #1 SMP Thu May 5 23:08:13 UTC 2016 armv7l GNU/Linux root@beaglebone:~# cat /etc/debian_version 8.4
Ever since this commit, the OMAP watchdog driver has the magic close feature enabled. This means that closing the timer's device won't stop the timer from ticking. The only way to stop it is to send to it the magic character
'V' (a capital 'v').
# wdctl /dev/watchdog wdctl: write failed: Invalid argument Device: /dev/watchdog Identity: OMAP Watchdog [version 0] Timeout: 120 seconds Timeleft: 119 seconds FLAG DESCRIPTION STATUS BOOT-STATUS KEEPALIVEPING Keep alive ping reply 0 0 MAGICCLOSE Supports magic close char 0 0 SETTIMEOUT Set timeout (in seconds) 0 0
This feature is particularly useful if you want the watchdog timer to only be active when a specific application is running, and if you then want it to be stopped when the application is stopped normally.
Unfortunately, the kernel can be configure with a mode called "no way out", which means that even tough the magic close feature of the driver is enabled, it won't be honored at all, and you are doomed to ping your timer until the end of time once you opened the device.
# cat /proc/config.gz | gunzip | grep CONFIG_WATCHDOG_NOWAYOUT CONFIG_WATCHDOG_NOWAYOUT=y
On a kernel version 3.8, the feature was not enabled:
$ cat /proc/config.gz | gunzip | grep CONFIG_WATCHDOG_NOWAYOUT # CONFIG_WATCHDOG_NOWAYOUT is not set
So, how do we stop that thing?
Well, you can see in the code of the driver that the default value of the kernel can be overridden by a module param:
static bool nowayout = WATCHDOG_NOWAYOUT; module_param(nowayout, bool, 0); MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started " "(default=" __MODULE_STRING(WATCHDOG_NOWAYOUT) ")");
Edit the boot configuration in
/boot/uEnv.txt and add set that parameter to 0 in the cmdline:
cmdline=coherent_pool=1M quiet cape_universal=enable omap_wdt.nowayout=0
Reboot the board, and check that the loaded command line was changed correctly:
# cat /proc/cmdline console=tty0 console=ttyO0,115200n8 root=/dev/mmcblk0p1 rootfstype=ext4 rootwait coherent_pool=1M quiet cape_universal=enable omap_wdt.nowayout=0
That's it. Now if you send a 'V' to the watchdog right before closing it, it will be stopped.
We want to be able to use GDB to debug python code efficiently.
Let's say we have the following code:
from threading import Event import random from time import sleep def blocking_function_one(): while True: sleep(1) def blocking_function_two(): e = Event() e.wait() if random.random() > 0.5: blocking_function_one() else: blocking_function_two()
That code will block, and since it doesn't output anything, we have no way of knowing if we went into
blocking_function_one or
blocking_function_two. Or do we?
For reference, I'm running a 10.2-RELEASE:
# uname -a FreeBSD bsdlab 10.2-RELEASE FreeBSD 10.2-RELEASE #0 r286666: Wed Aug 12 15:26:37 UTC 2015 firstname.lastname@example.com:/usr/obj/usr/src/sys/GENERIC amd64
We're going to work in a separate directory, in order not to alter our installation. If we need this in production, we want to be able to let the system as clean as possible when we leave.
# mkdir /usr/local/python-debug
Build python 3.4 from the port collection and set it to be installed in the directory we just created:
# cd /usr/ports/lang/python34 # make install PREFIX=/usr/local/python-debug OPTIONS_FILE_SET+=DEBUG BATCH=1
Normally we would have used
NO_PKG_REGISTER=1 to install the package without registering it on the system. Unfortunately, this option is not working anymore (see bug https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=182347).
So, let's copy the files ourselves:
# cp -r work/stage/usr/local/python-debug/* /usr/local/python-debug/
Let's try to run that new python installation:
# setenv LD_LIBRARY_PATH /usr/local/python-debug/lib # /usr/local/python-debug/bin/python3.4dm Python 3.4.5 (default, Sep 4 2016, 00:42:59) [GCC 4.2.1 Compatible FreeBSD Clang 3.4.1 (tags/RELEASE_34/dot1-final 208032)] on freebsd10 Type "help", "copyright", "credits" or "license" for more information. >>>
The "d" in "dm" means "debug".
Building python also produced an important file that we need to save for later before cleaning the work tree:
# cp work/Python-3.4.5/python-gdb.py ~/
Build GDB from the port collection:
# ln -s python3.4 /usr/local/python-debug/bin/python # cd /usr/ports/devel/gdb # make PREFIX=/usr/local/python-debug \ OPTIONS_FILE_SET+=PYTHON \ PYTHON_CMD=/usr/local/python-debug/bin \ BATCH=1 \ CFLAGS+="-I/usr/local/python-debug/include -L/usr/local/python-debug/lib" \ CXXFLAGS+="-I/usr/local/python-debug/include -L/usr/local/python-debug/lib"
Also copy that installation manually to our special directory:
# cp -r work/stage/usr/local/python-debug/* /usr/local/python-debug/
Let's check that it's working and has the python extensions:
# /usr/local/python-debug/bin/gdb GNU gdb (GDB) 7.11.1 [GDB v7.11.1 for FreeBSD] [...] (gdb) python >import gdb >end (gdb)
Now we have:
Copy the GDB script somewhere where Python can load it:
# mkdir ~/.python_lib # mv ~/python-gdb.py ~/.python_lib/python34_gdb.py
Let's run our stupid blocking script:
# setenv PATH "/usr/local/python-debug/bin/:${PATH}" # python where-am-i-blocking.py [blocked]
In another shell, find the PID of the script, and attach GDB there.
# ps auxw | grep python root 24226 0.0 0.7 48664 15492 3 I+ 3:00AM 0:00.13 python where-am-i-blocking.py (python3.4) root 24235 0.0 0.1 18824 2004 4 S+ 3:00AM 0:00.00 grep python # setenv PATH "/usr/local/python-debug/bin/:${PATH}" # gdb python 24226 GNU gdb (GDB) 7.11.1 [GDB v7.11.1 for FreeBSD] [...] [Switching to LWP 100160 of process 24226] 0x00000008018e3f18 in _umtx_op () from /lib/libc.so.7 (gdb)
Load the GDB python script:
(gdb) python >import sys >sys.path.append('/root/.python_lib') >import python34_gdb >end
The python macros are now loaded:
(gdb) py py-bt py-down py-locals py-up python-interactive py-bt-full py-list py-print python
Let's see where we are:
(gdb) py-bt Traceback (most recent call first): <built-in method acquire of _thread.lock object at remote 0x80075c2a8> File "/usr/local/python-debug/lib/python3.4/threading.py", line 290, in wait waiter.acquire() File "/usr/local/python-debug/lib/python3.4/threading.py", line 546, in wait signaled = self._cond.wait(timeout) File "where-am-i-blocking.py", line 11, in blocking_function_two e.wait() File "where-am-i-blocking.py", line 16, in <module> blocking_function_two()
We're in
Let's check the wait's frame local variables:
(gdb) bt #0 0x00000008018e3f18 in _umtx_op () from /lib/libc.so.7 #1 0x00000008018d3604 in sem_timedwait () from /lib/libc.so.7 #2 0x0000000800eb0421 in PyThread_acquire_lock_timed (lock=0x802417590, microseconds=-1, intr_flag=1) at Python/thread_pthread.h:352 #3 0x0000000800eba84f in acquire_timed (lock=0x802417590, microseconds=-1) at ./Modules/_threadmodule.c:71 #4 0x0000000800ebab82 in lock_PyThread_acquire_lock (self=0x80075c2a8, args=(), kwds=0x0) at ./Modules/_threadmodule.c:139 #5 0x0000000800cfa963 in PyCFunction_Call (func=<built-in method acquire of _thread.lock object at remote 0x80075c2a8>, arg=(), kw=0x0) at Objects/methodobject.c:99 #6 0x0000000800e31716 in call_function (pp_stack=0x7fffffff5a00, oparg=0) at Python/ceval.c:4237 #7 0x0000000800e29fc0 in PyEval_EvalFrameEx ( f=Frame 0x80245d738, for file /usr/local/python-debug/lib/python3.4/threading.py, line 290, in wait (self=<Condition(_lock=<_thread.l ock at remote 0x80075c510>, _waiters=<collections.deque at remote 0x800b0e9d8>, release=<built-in method release of _thread.lock object a t remote 0x80075c510>, acquire=<built-in method acquire of _thread.lock object at remote 0x80075c510>) at remote 0x800a6fc88>, timeout=No ne, waiter=<_thread.lock at remote 0x80075c2a8>, saved_state=None, gotit=False), throwflag=0) at Python/ceval.c:2838 [...] #25 0x0000000800eb4e86 in run_file (fp=0x801c1e140, filename=0x802418090 L"where-am-i-blocking.py", p_cf=0x7fffffffe978) at Modules/main.c:319 #26 0x0000000800eb3ab7 in Py_Main (argc=2, argv=0x802416090) at Modules/main.c:751 #27 0x0000000000400cae in main (argc=2, argv=0x7fffffffeaa8) at ./Modules/python.c:69 (gdb) frame 7 #7 0x0000000800e29fc0 in PyEval_EvalFrameEx ( f=Frame 0x80245d738, for file /usr/local/python-debug/lib/python3.4/threading.py, line 290, in wait (self=<Condition(_lock=<_thread.lock at remote 0x80075c510>, _waiters=<collections.deque at remote 0x800b0e9d8>, release=<built-in method release of _thread.lock object at remote 0x80075c510>, acquire=<built-in method acquire of _thread.lock object at remote 0x80075c510>) at remote 0x800a6fc88>, timeout=None, waiter=<_thread.lock at remote 0x80075c2a8>, saved_state=None, gotit=False), throwflag=0) at Python/ceval.c:2838 2838 res = call_function(&sp, oparg); (gdb) py-locals self = <Condition(_lock=<_thread.lock at remote 0x80075c510>, _waiters=<collections.deque at remote 0x800b0e9d8>, release=<built-in method release of _thread.lock object at remote 0x80075c510>, acquire=<built-in method acquire of _thread.lock object at remote 0x80075c510>) at remote 0x800a6fc88> timeout = None waiter = <_thread.lock at remote 0x80075c2a8> saved_state = None gotit = False
If you don't want to or can't attach to the running process, you can do the same thing with a core dump:
# gcore 24226 # gdb python core.24226
If you don't want to add the lib directory to the path of python everytime you use GDB, add it to your profile's GDB init script:
cat > ~/.gdbinit <<EOF python import sys sys.path.append('/root/.python_lib') end EOF
You'll only need to import the module (
python import python34_gdb) and you'll be good to go.
I've done the exact same thing on a Beagle Bone Black system running Debian.
Unfortunately GDB was complaining that the stack was corrupt.
# gdb /usr/local/opt/python-3.4.4/bin/python3.4dm core.18513 GNU gdb (GDB) 7.11 [...] Reading symbols from /usr/local/opt/python-3.4.4/bin/python3.4dm...done. [New LWP 18513] [New LWP 18531] [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/arm-linux-gnueabihf/libthread_db.so.1". Core was generated by `python3.4dm'. #0 0xb6f7d7e0 in recv () from /lib/arm-linux-gnueabihf/libpthread.so.0 [Current thread is 1 (Thread 0xb6fac000 (LWP 18513))] (gdb) bt #0 0xb6f7d7e0 in recv () from /lib/arm-linux-gnueabihf/libpthread.so.0 #1 0xb6f7d7d4 in recv () from /lib/arm-linux-gnueabihf/libpthread.so.0 #2 0xb64ae6f8 in ?? () Backtrace stopped: previous frame identical to this frame (corrupt stack?) (gdb)
A search on the internet indicated that it was because I was missing package
libc6-dbg, but that package was installed.
# apt-get install libc6-dbg Reading package lists... Done Building dependency tree Reading state information... Done libc6-dbg is already the newest version. 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
The problem was that using my custom installation directory had GDB look for these files in the wrong place.
(gdb) show debug-file-directory The directory where separate debug symbols are searched for is "/usr/local/opt/python-3.4.4/lib/debug".
Setting that variable in the init file solves the problem:
cat >> ~/.gdbinit <<EOF set debug-file-directory /usr/lib/debug EOF
[Current thread is 1 (Thread 0xb6fac000 (LWP 18513))] (gdb) bt #0 0xb6f7d7e0 in recv () at ../sysdeps/unix/syscall-template.S:82 #1 0xb68fe18e in sock_recv_guts (s=0xb64ae6f8, cbuf=0x50e2e8 '\313' <repeats 199 times>, <incomplete sequence \313>..., len=65536, flags=0) at /tmp/Python-3.4.4/Modules/socketmodule.c:2600 [...] #38 0x00025752 in PyRun_AnyFileExFlags (fp=0x32bcc8, filename=0xb6be5310 "main.py", closeit=1, flags=0xbed1db20) at Python/pythonrun.c:1287 #39 0x0003b1ee in run_file (fp=0x32bcc8, filename=0x2c99f0 L"main.py", p_cf=0xbed1db20) at Modules/main.c:319 #40 0x0003beb8 in Py_Main (argc=2, argv=0x2c9010) at Modules/main.c:751 #41 0x000208d8 in main (argc=2, argv=0xbed1dd14) at ./Modules/python.c:69
# uname -a FreeBSD freebsderlang 10.3-RELEASE FreeBSD 10.3-RELEASE #0 r297264: Fri Mar 25 02:10:02 UTC 2016 firstname.lastname@example.com:/usr/obj/usr/src/sys/GENERIC amd64
Install Python:
# make -C /usr/ports/lang/python34/ install clean
Install virtualenv:
# setenv PYTHON_VERSION python3.4 # make -C /usr/ports/devel/py-virtualenv install clean
Create a virtual env:
# virtualenv-3.4 venv Using base prefix '/usr/local' New python executable in /root/somewhere/venv/bin/python3.4 Also creating executable in /root/somewhere/venv/bin/python Installing setuptools, pip, wheel...done.
Dive into it:
# source venv/bin/activate.csh
Download the latest version of PyInstaller, check that it was correctly downloaded, and extract it:
[venv] # fetch 'https://github.com/pyinstaller/pyinstaller/releases/download/v3.2/PyInstaller-3.2.tar.gz' --no-verify-peer [venv] # sha256 PyInstaller-3.2.tar.gz SHA256 (PyInstaller-3.2.tar.gz) = 7598d4c9f5712ba78beb46a857a493b1b93a584ca59944b8e7b6be00bb89cabc [venv] # tar xzf PyInstaller-3.2.tar.gz
Go into the bootloader directory and build all:
[venv] # cd PyInstaller-3.2/bootloader/ [venv] # python waf all
Go to the release and build and install as usual:
[venv] # cd .. [venv] # python setup.py install
[venv] # cat > some_python_script.py << EOF print("Je suis une saucisse") EOF
[venv] # pyinstaller --onefile some_python_script.py
[venv] # dist/some_python_script Je suis une saucisse
It is well known that if you want your Flask apps to support internationalization, you should use The Flask Mega-Tutorial recommends creating a single javascript file per language. While this method is working, I would prefer using a standard
gettext style method.
Meet jsgettext. It is basically a boiled down version of the usual gettext tool that is used everywhere in nearly every programming language. It supports the standard gettext functions, including the one using contexts or plural forms.
Unfortunately, I found that the documentation of its usage was quite limited. This is why I uploaded here a sample app that gets its text translated in 3 different parts:
Each part include examples of translations including placeholders and/or plural forms.
You can find the code attached to this post, but for convenience I've also uploaded it on GitHub:
Let's create a simple git server on FreeBSD.
It should:
Let's install gitolite. It handles SSH connections and have the ACL functionality we're after.
First, here's a good read about how gitolite works: http://gitolite.com/gitolite/how.html#%281%29
Install gitolite:
# make -C /usr/ports/devel/gitolite/ install clean
Copy your public key on the server, naming it
[username].pub. That username will be considered the admin user.
Create a UNIX user that will own the files:
# pw useradd gitolite # mkdir /home/gitolite # chown gitolite:gitolite /home/gitolite # cd /home/gitolite
Login as the UNIX user and initialize the system:
# sudo -s -u gitolite % id uid=1003(gitolite) gid=1003(gitolite) groups=1003(gitolite) % /usr/local/bin/gitolite setup -pk admin.pub
Notice that the admin user can login using SSH, and that it will only execute gitolite's shell:
% cat .ssh/authorized_keys command="/usr/local/libexec/gitolite/gitolite-shell admin",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa [some key]== email@example.com
That's all you need to do on the server.
Clone the admin repository.
# git clone email@example.com:gitolite-admin
Create two new keys (and thus users) and add them to the repository:
# ssh-keygen -t rsa -f erika # ssh-keygen -t rsa -f jean # cp erika.pub gitolite-admin/keydir # cp jean.pub gitolite-admin/keydir # git add keydir/jean.pub # git add keydir/erika.pub # git commit -m "Add users Jean and Erika." # git push origin master
Create new repositories by setting their ACLs in the config file:
# cat conf/gitolite.conf: repo gitolite-admin RW+ = admin repo testing RW+ = @all repo erika_only RW+ = erika repo erika_and_jean RW+ = erika jean # git add conf/gitolite.conf # git commit -m "Add two new repos" # git push origin master
Try to clone repository
erika_only with user
# setenv GIT_SSH_COMMAND 'ssh -i jean' # git clone email@example.com:erika_only Cloning into 'erika_only'... FATAL: R any erika_only jean DENIED by fallthru (or you mis-spelled the reponame) fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.
Our access was denied. ACLs are working.
Try to clone a ACL allowed repository:
# git clone firstname.lastname@example.com:erika_and_jean # cd # echo "Test" > test.txt # git add test.txt # git commit -m "Test commit" # git push origin master Counting objects: 3, done. Writing objects: 100% (3/3), 218 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) To firstname.lastname@example.com:erika_and_jean * [new branch] master -> master
I assume you already know how to install and do the basic configuration of nginx.
Install fcgiwrap:
# make -C /usr/ports/www/fcgiwrap install clean
Configure fcgiwrap to use the right UNIX user:
fcgiwrap_enable="YES" fcgiwrap_user="gitolite" fcgiwrap_profiles="gitolite" fcgiwrap_gitolite_socket="tcp:198.51.100.42:7081"
Create a password file:
# cat /usr/local/etc/nginx/git_users.htpasswd jean:$apr1$fkADkYbl$Doen7IMxNwmD/r6X1LdM.1 erika:$apr1$fOOlnSig$4PONnRHK3PMu8j1HnxECc0
openssl passwd -apr1 to generate passwords.
Configure nginx:
server { [usual config here] auth_basic "RESTRICTED ACCESS"; auth_basic_user_file /usr/local/etc/nginx/git_users.htpasswd; client_max_body_size 256m; location ~ /git(/.*) { root /home/gitolite/; fastcgi_split_path_info ^(/git)(.*)$; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param SCRIPT_FILENAME /usr/local/libexec/gitolite/gitolite-shell; fastcgi_param QUERY_STRING $query_string; fastcgi_param REMOTE_USER $remote_user; fastcgi_param GIT_PROJECT_ROOT /home/gitolite/repositories; fastcgi_param GIT_HTTP_BACKEND /usr/local/libexec/git-core/git-http-backend; fastcgi_param GITOLITE_HTTP_HOME /home/gitolite; fastcgi_param GIT_HTTP_EXPORT_ALL ""; # This include must be AFTER the above declaration. Otherwise, SCRIPT_FILENAME will be set incorrectly and the shell will 403. include fastcgi_params; fastcgi_pass 198.51.100.42:7081; } }
Here we call
gitolite-shell instead of
git-http-backend directly to have gitolite check the users' permissions.
Let's clone a repository, add a commit and push it:
# git clone 'http://jean:firstname.lastname@example.com:8080/git/erika_and_jean.git' erika_and_jean Cloning into 'erika_and_jean'... remote: Counting objects: 3, done. remote: Total 3 (delta 0), reused 0 (delta 0) Unpacking objects: 100% (3/3), done. Checking connectivity... done. # cd erika_and_jean/ root@test:~/gitolite2/erika_and_jean # vim test.txt root@test:~/gitolite2/erika_and_jean # git add test.txt root@test:~/gitolite2/erika_and_jean # git commit -m "Pushed from HTTP" [master 7604185] Pushed from HTTP 1 file changed, 1 insertion(+) # git push origin master Counting objects: 3, done. Writing objects: 100% (3/3), 258 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) To http://jean:firstname.lastname@example.com:8080/git/erika_and_jean.git fa03b7d..7604185 master -> master
Let's try to clone a repository we're not allowed to see:
# git clone 'http://jean:firstname.lastname@example.com:8080/git/erika.git' erika Cloning into 'erika'... fatal: remote error: FATAL: R any erika jean DENIED by fallthru (or you mis-spelled the reponame)
ACLs are working. Success.
Make sure
git is compiled with option
Copy the gitweb files where nginx will look for them:
# cp -r /usr/local/share/examples/git/gitweb /usr/local/www/gitweb
Configure nginx:
location / { root /usr/local/www/gitweb; index gitweb.cgi; location ~ ^/(.*\.cgi)$ { include fastcgi_params; fastcgi_pass 198.51.100.42:7081; fastcgi_index gitweb.cgi; fastcgi_param SCRIPT_FILENAME /usr/local/www/gitweb/gitweb.cgi; fastcgi_param DOCUMENT_ROOT /usr/local/www/gitweb; fastcgi_param GITWEB_CONFIG /usr/local/etc/gitweb.conf; fastcgi_param REMOTE_USER $remote_user; } }
No magic here. The Gitolite/GitWeb interaction is irrelevant to the webserver.
Use the gitolite command to find the values of the
GL_ variables:
gitolite query-rc -a
Configure gitweb in
BEGIN { $ENV{HOME} = "/home/gitolite"; $ENV{GL_BINDIR} = "/usr/local/libexec/gitolite"; $ENV{GL_LIBDIR} = "/usr/local/libexec/gitolite/lib"; } use lib $ENV{GL_LIBDIR}; use Gitolite::Easy; $projectroot = $ENV{GL_REPO_BASE}; our $site_name = "Example.net Git viewer"; $ENV{GL_USER} = $cgi->remote_user || "gitweb"; $export_auth_hook = sub { my $repo = shift; # gitweb passes us the full repo path; we need to strip the beginning and # the end, to get the repo name as it is specified in gitolite conf return unless $repo =~ s/^\Q$projectroot\E\/?(.+)\.git$/$1/; # call Easy.pm's 'can_read' function return can_read($repo); };
When connected as erika:
When connected as jean:
ACLs are working. Success.
Our users can now see, read and sometimes write into the repositories of our git server.
You can create guest accounts that will only be able to see specific repositories, and they won't even know the other ones are here.
No need to maintain a gitlab instance if your needs are simple.


text:
Alternative Titles: common glowworm, Lampyris noctiluca
Learn about this topic in these articles:
...live on the ground and feed on snails and slugs by injecting a fluid into their prey and then withdrawing the partly digested matter through hollow mouthparts. The common glowworm ( Lampyris noctiluca) is a member of this family.
...prolonged glows rather than in brief flashes as do most fireflies. Principal types of glowworms are: (1) wingless adult females of certain beetles of the family Lampyridae, particularly the common European glowworm, Lampyris noctiluca, (2) larvae of lampyrid fireflies (common in the Americas) and of elaterid fireflies (tropical), (3) larvae and adult females of certain beetles of the...
...outer layer of the luminous organ. Luminous beetles include the Lampyridae (fireflies), Phengodidae, Drilidae, and certain Elateridae (click beetles). A familiar example of a firefly is the common European glowworm ( Lampyris noctiluca), whose wingless female emits a bright light near the hind end of the body; the winged male emits a much feebler light. Both sexes of the elaterid genera...


text:
It was a classic case of the learning-on-the-job youngsters pitted against the sage veterans. In an exciting game full of runs by both squads, it was the heady play of the Boston Celtics' aging stars that propelled their team to a 110-107 overtime win over the youthtful Utah Jazz on Monday.
Thanks to a solid 27-20 second-quarter effort, the Jazz enjoyed a 53-48 halftime lead. Once again, as was the case versus the Los Angeles Clippers, it was the third quarter that proved to be Utah's downfall. Boston outscored Utah 32-19 in a dominant performance. The Jazz admirably battled back, but expended a lot of energy in doing so. As a result, they became a bit more reliant on jump shots, jump shots that were not falling down the stretch.
Cagey Vets: In the offseason, the Big Three became the Big Two, as Boston sharpshooter Ray Allen took his talents to South Beach. While they are not consistently dominant anymore, both Paul Pierce and Kevin Garnett showed they still have something in the tank.
While the Celtics received solid nights by Avery Bradley, Courtney Lee, Brandon Bass, and Jason Terry, it was the pair of future Hall of Famers who were clutch Monday night. The first three quarters were fairly pedestrian for Pierce, but he put his team on his shoulders in the fourth quarter and overtime period. He hit tough jumper after tough jumper and held his own on defense. He finished his evening with 26 points, eight assists and seven rebounds.
Garnett's stat line was nothing to write home about, but beyond the 13 points and 10 rebounds were some high-IQ plays. Prime evidence was the his decision to foul Paul Millsap with 4.2 seconds left and Utah trailing by three. It prevented a potential game-tying 3-pointer, while seemingly taking the wind out of the Jazz's sails.
Odds and Ends:6 comments on this story
• The Utah Jazz starting backcourt has a grand total of eight points in the past two games. Earl Watson supplanted Jamaal Tinsley in the starting lineup Monday, with the latter not seeing any playing time.
• Despite missing their lead guards in Rajon Rondo and Mo Williams, both teams are firmly in the playoff races in their respective conferences.
• Gordon Hayward single-handedly outscored the Boston bench 26-24.
• After scoring just 13 points in the previous four outings (with 11 of those coming in one game), Marvin Williams had a nice bounce-back game with 15 points in 26 minutes.
David Smith provides instant analysis for Deseret News' Utah Jazz coverage. He works for LDS Philanthropies and also blogs for the Utah Jazz 360 website. He can be reached at email@example.com or on Twitter at davidjsmith1232.


text:
ICSD News
May 2017
ICSD web version 3.6.0 released
May 2017
ICSD now contains 188,631 crystal structures
November 2016
ICSD now contains 184,748 crystal structures
Featured article
Analysis of spinel compounds in ICSD
ICSD enables scientists to search for text in titles in combination with chemical compound information, e.g., compound classes which cannot be described through specific compound information such as the molecular formula. An interesting example for such a compound class is provided by the spinel compounds.
This website uses cookies. Piwik is employed to analyze site usage.
If you wish to learn more about cookies or to opt out of usage analysis, please click on our privacy policy. Close
ICSD web version 3.5.0 released
02. November 2016
The ICSD web version 3.5.0 is now online.
The main new feature in this release is the inclusion of abstracts. At the moment only a small percentage of the ICSD entries provide an abstract, but we are working on including abstracts retroactively.
Abstracts can be searched on the Bibliography mask in a new search field and they are displayed in the Detailed View in the Bibliography section as a link which opens a new window.


text:
Forgot your password? Enter the email address you signed up with and we will send you a link to create a new password.
Your password reset has been submitted to the address provided.
Colors could not be determined.
Standard character mark
Coffee; Coffee beans; Ground coffee beans
Business in BRUNSWICK, ME


text:
Artist description:
No description entered.
Java Draw Created Jul 31, 2013 470 x 338px Unless noted Copyright 2013 liaf.
We encourage you to submit a comment and let the artist know what you think of this drawing. Please log in or join to post a comment.
Post a comment
cool drawing!
really nice work... collecting
cool drawing, 5/5h
I love the contrast of the blue eye vs the red one =)
brilliant!!!!! powerful idea... 5/5 fav
Amazing, love the fire and the cold ice, very expressive drawing. 5/5h
i luv the contrast o the red/blue eyes ofc as well as the sketchy style n anger captured here--very expressive n cool~
Love the fire/ice contrast! 5/5


text:
Krokane Camping is situated in the furthermost western part of Norway. Take RV5 from Florø to the campsite. Krokane Camping is situated by the ocean, approximately 2 km east of Florø.
Winter offer:
NOK 7000 per week in cabin for 6 people. The cabin has two bedrooms, fully equipped kitchen, tv and bathroom. The price include bedding, final cleaning and a boat with 10 HP engine and 10 litre gas.
How to get here
The distance to the ferry terminal is approximately 3 km, and to the airport 4 km, and to the local waterpark (Badelande Havhesten) 1 km. It is easy to arrive at Florø by boat, plane and car. From Oslo or Trondheim to Florø, cirka 8 hours to drive by car. From Bergen or Ålesund cirka 4 hours. Express boats from Sognfjorden, Bergen and Selja. Express bus connection from Oslo, Bergen, Ålesund and Trondheim. Plane connection from Oslo and Bergen. Ferry stops in Florø both on northern and southern routes.
The cabins
There are 19 cottages with high standards, 16 of which have Plus Camp standards. 3 of the cottages are handicapped accessible. All cottages have television and winter insulation. There are 36 spaces for camping units, all with electricity. The campsite sanitary facility has showers, toilets and laundry facilities. A separate room for is available for emptying the waste from self-contained trailers. There is a public toilet for handicapped users. Bedclothes are available for rent and we will make the beds up for you if you order one day in advance. You my book huts and boats, but not campsites. There is a facility to clean and smoke and freeze your fish right at the campsite. We have a separate room for divers to change and shower.
We have a family beach and playground and nice smooth boulders to sunbathe on. We have boats for rent with, or without outboard motors. You can fish from the boat or from the shore. The area is very well suited to snorkeling and scuba diving.
Florø city center is a very cozy place with a maritime environment. The public services and businesses provide a lot of variety. In the summer there are lots of activities for tourists such as deep-sea fishing and trips to the islands. There is a coast museum as well as several well marked walking trails. It is 1 km to the Havehesten Badeland (a local waterpark).
Krokane camping offers boats for rent, both without and with motor.
Situated by the sea, Krokane camping is a great place to stay for a fishing holiday. You can try deep-sea fishing in the fjord or out on the open sea, year around. Here you can catch species like cod, halibut, saithe, haddock, pollack and ling.
Krokane Camping also offers free air for diviers who stay minimum 2 nights in either cottage og camping.
For more information and prices see www.krocamp.no.


text:
Midmark Corp. recently launched a new application on its Web site entitled "I have an idea!" This application, or innovation portal, was established to allow for better communication and information sharing between Midmark and its customers. The online portal will assist in generating ideas for new products, enhancements, and accessories. Information: www.midmark.com.
Related Reads


text:
Credit Advice
Have a question? Have advice to share? The combined knowledge and experience of everyone in the Credit Karma community can help you. Enter your question or help others below to get started!
QuestionPosted in Credit Report
Question By
0 People Helped
All Responses
813 People Helped
yes by lowering your debt utilization....and 30-60 days depending on when you pay and if the got the report already for that month
0 People Helped
Accounts in collections
So, I've started with the smaller accounts that I have in collections and have setup payment plans to get them straight. I'm not doing settlements as I'm told that can hurt the score as well.
As I fix these accounts, I don't expect to go back and reopen them even if I can. What's the average turn around time for the score to improve once an account is taken out of the red?
Reply to this Question
Write your response:
The Credit Advice pages of the Site may contain messages submitted by users over whom Credit Karma has no control. Credit Karma cannot guarantee the accuracy, integrity or quality of any such messages. Some users may post messages that are misleading, untrue or offensive. You must bear all risk associated with your use of the Credit Advice pages and should not rely on messages in making (or refraining from making) any specific financial or other decisions.


text:
Trade Chief Lashes Out at El Al Over $150 Flight Change Fee
President of the Federation of Israeli Chambers of Commerce, Uriel Lynn, calls move by El Al 'price gouging.'
The president of the Federation of Israeli Chambers of Commerce is fighting back over the $150 fee El Al charges customers, including him, to change their flights.
The president of the federation, Uriel Lynn, sent El Al CEO Eliezer Shkedi a letter stating, "The matter about which I'm approaching you affects me personally, but it has repercussions for a large group of people due to the interruptions in flights from Europe to Israel due to the volcanic eruption." He continued, "Does changing the flight date by a day really justify charging another $150, which is NIS 561? The lack of proportion between the change and the charge is ridiculous. Is this a case of wrongly taking advantage of the situation?"
TheMarker found that Lynn left for London on an April 12 flight and had been scheduled to return on April 19. Lynn sought to delay his return by a day, and paid $150. But then Europe's skies shut down due to the Icelandic volcano.
"Due to the interruptions to flights, the flight for which the new ticket was reserved never took place, but the charge remained in place," he wrote. "I, and many others, were forced to return not on the date we chose, but on a later date (April 22 ). The result was that I paid a ridiculous sum of $150 for a flight that never even took place - which lacks any logic, as far as I can tell."
Lynn went on to call the move by El Al "price gouging."
"What effort exactly did the company employees expend in order to justify such a high charge? I'm ready to donate the money to El Al, but I'm speaking in the name of the public, which must be wondering whether this kind of charge is justified - especially when it's a matter of one day, and for a flight that never took place," he wrote.
El Al responded that all tickets have specific terms and limitations.
"The flexibility of every ticket, as well as its limitations, are factors of its price. All airlines charge flight change fees in keeping with the terms of each specific ticket," the company said. "In this specific case, the ICC president purchased a cheaper business-class ticket, which is subject to a flight change fee, which regardless of the circumstances of the change, costs $150. Since the change was made before the Icelandic volcano interrupted flight schedules, Mr. Lynn was charged the fee. In addition, El Al did not charge over cancellations and changes made due to the volcanic ash, even if the flight class was full, and accommodated all passengers with El Al tickets without additional charges through April 28."
Want to enjoy 'Zen' reading - with no ads and just the article? Subscribe todaySubscribe now


text:
|Re: [TowerTalk] Tower ACCIDENT
|"Richard J. Fiero II W5TFW" <email@example.com>
|Tue, 26 Jun 2007 20:23:26 -0500
I havent seen the legs of the tower to be honest, since I got out of the hospital, my lawyer has it he sent it to a metal expert who told him that the legs were rusted on the inside and therefore collapsed, I have put up and taken down many towers over the yrs, this one ( rohn 25 ) just buckled, and down she came, I dont remember falling, just waking up sucking air, the tower on top of me, and the pain, Let me tell you the pain,.. I have been Combat wounded, But the pain I felt from a broken body, That hurt ! for 25 days I was hospitalized, 14 days in intensive care, I had a blood clot in my left lung, I am lucky to be alive, Joey ----- Original Message ----- From: "kd4e" <email@example.com> To: "Dan Cisson" <email@example.com> Cc: "Richard Joey Fiero II W5TFW" <firstname.lastname@example.com>; <firstname.lastname@example.com> Sent: Tuesday, June 26, 2007 7:59 PM Subject: Re: [TowerTalk] Tower ACCIDENT > Dan & Joey, > > We do not have enough information yet. > > Joey is on the 6M list and many of the guys prayed > and encouraged him through the early days following his > accident. > > Joey didn't post the insurance report, perhaps the > missing variables are in there. > > I am guessing that the tower may have suffered some > sort of internal rusting or some other damage prior to > his work on it. > > The stress of the work at 100 feet and then removing > the top sections may have stressed those weaknesses until > they finally gave. > > There may also have been a change in weather, e.g. > wind gusts, temperature, etc. > > Metal fatigue sometimes results in failures at odd > moments and I am sure Joey is happy that tower failed > when he was at 40 feet vs 100! > >> I found a couple of things you said that did not add up correctly, >> obviously >> it happened,, but seems it should not have. You said you had the tower >> down >> to the 40 ft. level...By the way, is the tower Rohn 25?? >> When the tower was fully up with the antennas and all the guy cables, >> that >> tower was at maximum load. Then you added your body weight, your gear to >> take the tower down, and all the movement that comes with getting a >> tri-bander down from 100 ft. That is theoretically when the tower shoud >> have >> collapsed. The only way I could see any different, is the bottom set of >> wires created some pivot at the failure point. But if that tower was up >> with >> proper guy cables, with a minimum of 3/16 EHS, 3990 lb break strength, >> the >> guy should have never broke. I am sure sorry of your accident, I hope >> what I >> am describing, and what happened to you can foil another tower >> tragedy...I >> sure feel it should not have happened....Best Wishes,, Good Luck to you,, >> Dan Cisson N4GNR > > > > -- > > Thanks! & 73, doc, KD4E > Personal: http://bibleseven.com/kd4e.html > Ham QTH: http://bibleseven.com/steel/cjb-steelhouse-index.html > _______________________________________________ > > > > _______________________________________________ > TowerTalk mailing list > firstname.lastname@example.com > http://lists.contesting.com/mailman/listinfo/towertalk > _______________________________________________ _______________________________________________ TowerTalk mailing list firstname.lastname@example.com http://lists.contesting.com/mailman/listinfo/towertalk
|<Prev in Thread]
|Current Thread
|[Next in Thread>
|Previous by Date:
|Re: [TowerTalk] Tower ACCIDENT, Mark Robinson
|Next by Date:
|Re: [TowerTalk] Tower ACCIDENT, Richard J. Fiero II W5TFW
|Previous by Thread:
|Re: [TowerTalk] Tower ACCIDENT, jeremy-ca
|Next by Thread:
|Re: [TowerTalk] Tower ACCIDENT, Mark Robinson
|[Date] [Thread] [Top] [All Lists]


text:
LAKE ELSINORE - The five candidates running for City Council will have an opportunity to address several key city issues tonight at a candidate forum hosted by the local chamber of commerce and the Lake Elsinore Citizens Committee.
Incumbents Thomas Buckley and Daryl Hickman are seeking re-election. Lake Elsinore residents Carole Feeney, Connie Soto and Phil Stephens are also looking to take one of the two seats up for grabs.
Candidates will be asked questions submitted to the citizens committee by its members. The forum begins at 7 p.m. in the dining room at Lakeside High School, 32593 Riverside Drive.


text: Supporters of Venezuelan President Hugo Chavez celebrate after pictures of the ailing leader surrounded by his daughters in Havana where released to the public, in Caracas on February 15, 2013. Chavez was seen bed-ridden but smiling in photos released Friday that gave a jittery nation a first glimpse of him since his fourth round of cancer surgery in December. The total of four images — of Chavez holding Thursday's edition of the official Cuban communist party newspaper Granma — broke a virtual news blackout for Venezuelans living in a state of limbo without their once media-happy and larger than life comandante. AFP PHOTO/JUAN BARRETO


text:
Metal Lunchbox Publishing is an American publishing company specializing in graphic novels, illustrated children's chapter books and young adult books. Metal Lunchbox Publishing was founded by SF Varney in 2009 in Maryland to serve as a home for creative storytellers.
Metal Lunchbox Publishing features authors Ellen Parry Lewis, Charles Matthews and SF Varney with titles such as Future Vision, the Pinesport Divide trilogy and Karate Dottie.
Sign up with your email address to stay up to date on new releases, special offers, author appearances and much, much more.


text:
Middlesbrough's inability to capitalise on daylight at the top of the Championship should inspire these two to produce a better spectacle than they could manage in the reverse fixture at the iPro Stadium last September. On that occasion, they played out a tedious goalless draw, memorable only for the 10/1 winner we landed in the process.
Had Boro taken care of business over the past two weekends, Burnley and Derby would now be sitting at least a dozen points adrift of the summit. Instead, they can close the gap to five points or four points respectively. In short, the automatic promotion race still feels like any two from five, rather than Boro plus one.
Given that scenario, a draw does neither side any real favours, it merely lets Aitor Karanka's men off the hook. So we should expect goals at some point, with both keen to seize upon the opportunity presented by Nottingham Forest's helping hand at the Riverside on Saturday. If we do end up with a stalemate, you suspect it will come as a truce, only after a period where both teams have gone at it hammer and tongs.
In terms of the bare numbers, the market is in total agreement with my ratings: Burnley are slight favourites, their superioty worth roughly 0.1 goals, which is to say Derby would be almost quarter-ball favourites if the game was being played on neutral territory. But somehow that doesn't feel right and this is one of those occasions where intuition should be permitted to intervene.
Whether you look in long-term retrospect or short-term, Burnley are the more reliable proposition. The Clarets boast a tight-knit squad packed to the brim with Premier League experience, the core of which clinched automatic promotion two seasons ago. And they are best-equipped for this time of year when the schedule is relentless and the games come thick and fast.
Sean Dyche's men have consistently out-performed their shot data, their 24-match ratio barely above 50 per cent, and they come into this game with confidence high on the back of handsome victories against Charlton (4-0), Bristol City (4-0), MK Dons (5-0) and Brentford (3-1), whereas Derby are beginning to doubt themselves with no win in four league outings.
That sequence had been no cause for alarm until a humbling 3-0 home defeat to Birmingham last time out, which came on the back of a rollocking from Paul Clement following the 1-1 draw with Reading a few days earlier. A reaction was expected but the Rams were lifeless, inviting comparisons with their collapse under Steve McClaren at the end of last season.
You could argue this is the perfect game for them to bounce back but Burnley will be sniffing blood and they aren't the sort of team to hold back if they perceive any sign of weakness. Take the 13/8 about the Clarets to prevail and, given their tendency to turn the screw in recent weeks, back it up with with a bet on Burnley to clear the -1 handicap at 5/1.
Click here for more information about Mike Holden's shot-based ratings system


text:
Aztec Sweet Herb
Lippia dulcis
|Verbenaceae (ver-be-NAY-see-ee) (Info)
|Lippia (LIP-pee-uh) (Info)
|dulcis (DUL-sis) (Info)
|Phyla dulcis
|Phyla scaberrima
Tropicals and Tender Perennials
Foliage Color:
Bloom Characteristics:
Water Requirements:
Average Water Needs; Water regularly; do not overwater
Very high moisture needs; suitable for bogs and water gardens
Where to Grow:
under 6 in. (15 cm)
9-12 in. (22-30 cm)
USDA Zone 9b: to -3.8 �C (25 �F)
USDA Zone 10a: to -1.1 �C (30 �F)
USDA Zone 10b: to 1.7 �C (35 �F)
USDA Zone 11: above 4.5 �C (40 �F)
Sun Exposure:
Full Sun
Sun to Partial Shade
Bloom Color:
White/Near White
Bloom Time:
Late Spring/Early Summer
Mid Summer
Late Summer/Early Fall
Other details:
This plant may be considered a protected species; check before digging or gathering seeds
Soil pH requirements:
Patent Information:
Propagation Methods:
From herbaceous stem cuttings
From softwood cuttings
By simple layering
Seed Collecting:
This plant has been said to grow in the following regions:
Birmingham, Alabama
Ceres, California
Vista, California
Lafayette, Louisiana
Lake Charles, Louisiana
Austin, Texas
Houston, Texas
Humble, Texasshow all
Gardeners' Notes:
On Oct 16, 2009, Memaw1 from Marion, TX wrote:
My two Aztec plants thrived during the record breaking heat and drought we found ourselves in here in the Texas Central Plains this summer. They were planted in the spring and well established before the heat wave. They did receive late afternoon shade. I watched in amazement as they doubled, tripled and quadrupled in space spreading out in all directions as bushes and trees in the same area dried up and died. My favorite combination has become ten sprigs of Aztec plus ten sprigs of peppermint, pull off the leaves, add 8 cups of boiling water, steep and enjoy! A delightful healthy beverage hot or cold or room temp.
On Jun 24, 2008, madrid2000 from Humble, TX wrote:
I fell in love with this plant�s sweet smell and taste the first time I saw it. I looked for years for it until I saw it again in a coworker�s herb bouquet. The first plant she gave me was wrapped in a wet paper towel and was dead by the end of the day. The second plant had its roots in a cup of water and survived. I first had it growing outside in shade and it didn�t grow much. It started spreading when I gave it about 5-7 hours of sunlight. It seems to spread over ground by runners that put down roots. Once established, it has survived mostly on rain water. It has also over wintered some brief freezes for me outside with a pile of pine straw on top.
On May 29, 2005, nancyanne from Lafayette, LA (Zone 9a) wrote:
This plant is touted as a sugar replacement, and much sweeter than Stevia - it is, indeed, extremely sweet. However, the leaves have a resinous flavor that might preclude its use as a sugar substitute in mildly flavored dishes. I think it would do well in herbal teas, as an additional sweetness and flavoring. The flavor of the plant is definitely too strong to stand alone as a sweetener in baked goods and such.


text:
Last week I read an article about online college classes. One of the true stories related in this article blew me away. I have to share it with you. It says so much about one of the versions of our future that I dream will come to fruition.
A company in the Silicon Valley called Udacity, co-founded by two former Stanford professors, has begun building a catalog of online college-level courses available for free, although not yet recognized for college credit. One of these classes is a college-level Physics 100 class. This basic Physics class is taught through the use of hundreds of short YouTube videos that are embedded in the Udacity website. Over 23,000 students in 125 countries worldwide were enrolled in this class in September 2012. One of these students was an 11-year-old girl in Pakistan named Khadijah Niazi.
Khadijah completed the Physics 100 course on September 17 and was in the middle of taking the final exam when a message appeared on her computer screen telling her that YouTube was no longer available. As it turned out, what rotten luck for her, the Pakistani government had just shut down access to YouTube in an effort to block the offensive anti-Muslim film trailer that had incited protests and violent incidents throughout the world. She and 215 other Pakistanis enrolled in the Physics course immediately lost access.
Khadijah posted a comment on the class discussion board about what had happened. In less than an hour, a classmate in Malaysia began posting detailed descriptions of the test questions in each of the test videos for Khadijah so that she could attempt to continue taking the exam using his descriptions. Meanwhile, a classmate in Portugal tried (unsuccessfully) to create a way for Khadijah to view the videos without using YouTube. A 12-year-old classmate in England promised to seek help for Khadijah and he begged her not to write anything negative about her government online so that she would not get into trouble.
Later that same night, the Portuguese classmate successfully managed to download all the videos for the final exam to her computer and then uploaded them to an uncensored photo-sharing site where Khadijah could view them. It took the Portuguese woman four hours to download and then upload all the exam videos. The next day Khadijah accessed the videos and completed the final exam with high distinction, becoming the youngest girl ever to complete Udacity's rigorous Physics 100 course. Khadijah immediately signed up for Udacity's free online class in Computer Science, and the 12-year-old classmate in England began downloading the lesson videos for her. Khadijah aspires to attend either Oxford or Stanford in the future. I have no doubt that she will do it, too.
I don't think I need to say more. This story speaks for itself. My gosh, I think that just knowing that this happened will help me sleep better at night. I love it.


text:
For Galloway Township's Shane Bell, who attended the Assumption Regional Catholic School from kindergarten through eighth grade, the school will always remain close to his heart.
When it came time for the Holy Spirit High School sophomore and longtime member of Galloway Township's Boy Scout Troop 634 to plan his Eagle Scout project, he could think of no better organization to help than Assumption.
As his project, Bell will purchase and install a set of fitness equipment consisting of a horizontal ladder, a balance beam and a set of uneven bars at the school. He said he came up with the idea as a way to reinforce the school's mission of improving its students' health.
"In recent years, Assumption has been making changes to try to make their students fit and healthy," Bell said. "I figured that would also help because they can use it during gym class and stuff, and it'll help the kids exercise."
While Bell and his fellow scouts will donate their own time to install the equipment, Bell is asking the community for help in covering the cost of the project. The equipment costs about $4,000, and Bell has raised about half that amount so far, he said.
To donate, email Bell at firstname.lastname@example.com.
- Braden Campbell


text:
Mixing Pink and Red Makeup and Clothing, Dry Styling, and More Beauty Links
Link Time: Cameron's Striking Pink and Red Color Combo
- Do you mix pink and red makeup and clothing? — BellaSugar UK
- Short on time? Dry style your way to better hair — StyleCaster
- Star hairstylists give Snooki a makeover — InStyle
- A new study says that "older bones" can age your face — StyleList
- How to make yourself over from the inside out — Glo
- How does NARS's Wicked Eyeshadow stack up? — Temptalia
- What do you think of Pete Wentz's curly 'do? — People StyleWatch
- How to organize your shower products — Allure
- Five highly coveted Spring 2011 hair trends — Refinery29
Image Source: WireImage


text:
2003 Switchback Ridge Petite Sirah Peterson Family Vineyard
Petite Sirah
- California
- Napa Valley
Community Tasting Note
brigcampbell wrote: (93 points)
September 2, 2013 - The Wine Crew (FMIII in the OC): This is my favorite vintage of the petite from switchback that I've tasted so far. Ripe blueberry and tar pour from the glass. It's wildly dark colored, borderline black. Dark ripe blackberry and black licorice with big gripping tannins. Finish is nice but the tannins are climbing out of the glass, still a youngster. Love it.2,186 views


text:
January 23, 2013 BY Aaron Hope
More Nike Sportswear and Liberty London this spring as the muted floral pattern we've seen pop up on a few designs expands its range with another familiar silhouette. Liberty continues their dominance over the Nike WMNS Dunk Sky High, the ingenious combination of 'Be True' basketball styling and a concealed heel wedge whose collabo CV they've monopolized. These rock a dark brown not too far from the recent AF1 Downtown release, but are livened up by the interplay between peach Swooshes and a gum sole. Click through for a closer viewing and stick with Sneaker News as all these SP13 Liberty collabs come to market.
via SA
Filed under: Collaboration Dunk Upcoming Sneakers WMNS


text:
Related quotes
"With the whole aura that surrounds Greenspan, he became almost a cult-like figure. Does this change the way we view the Fed? Not really, it's an institution. There's no difference in philosophies between the two."
"Johnny became a star there; he went there as a center fielder and left as a cult hero. He was created there -- not that he wasn't worthy. I can't say he's not going to be emotional about it, but I don't think it's going to bend him out of shape in any way."
"We are given to the cult of personality; when things go badly we look to some messiah to save us. If by chance we think we have found one, it will not be long before we destroy him."
"It was more of their quirky show. It was more like a cult show. The ratings weren't really that high."


text:
PARIS — A glittering dinner party of beautifully dressed people in Paris is not a place where one thinks of Dallas.
But the opening dinner of the Grand Palais' long-awaited exhibition of works by the Swiss painter Felix Vallotton was an exception. Among the handful of guests of honor was a Dallas couple who collect Swiss art more seriously than anyone outside Switzerland. They have loaned three major works from their private collection to this landmark exhibition, which opened Wednesday.
They are far too private to want their names known, but what they have done in the realm of international art collecting is extraordinary. The loan of these three paintings makes scarcely a dent in their private collection of works by Vallotton and his Swiss friends and predecessors.
Yes, few of us have ever heard of Vallotton, but this exhibition will change all of that. Arts lovers in Dallas already know of Vallotton's brilliance because of the Dallas Museum of Art's acquisition of an important painting by him more than a decade ago.
Who knows what other treasures are hidden among Dallas' art collections?
Rick Brettell is the Margaret McDermott Distinguished Chair at the University of Texas at Dallas.
When you go
Felix Vallotton: The Fire Under the Ice runs through Jan. 20, 2014, at the Grand Palais in Paris. grandpalais.fr/en /event/felix-vallotton- fire-under-ice


text:
Edit Your Post on Posting HOF
This is not a vent board or any other kind of therapy. Before you hit the POST button, ask yourself if your contribution will add to the level of discussion going on.
Important notes on articles:
Message:He truly was an amazing coach.
I wish I had had a chance to see him in action.
That photo of him with the team behind him, his face a picture of worry and concentration, is classic.
HTTP Link (optional):
Poster's E-Mail (optional):