Schlagworte: development

05.09.12

Deploying a website using Git via SSH remote

Git has a concept of "remotes" (tracked repositories), which allows to have
arbitrary alternate remote locations besides the typical "origin" remote, like "web".

The basic idea is to setup a user on the remote server ($SSH_DEPLOYUSER) which
is allowed to login via SSH (e.g. by adding your public SSH key to the deploy
user's ~/.ssh/authorized_keys file) and will be used to checkout what you want
to deploy.

To accomplish this you have to setup the Git working directory on the server and
add a "post-receive" hook, which will be invoked by Git after you have pushed
to the repository:

Code:

$ mkdir /path/to/repo-checkout
$ cd /path/to/repo-checkout
$ git init
# Create the post-receive file/hook (Ctrl-D to end the input to "cat"):
$ cat > .git/hooks/post-receive
#!/bin/sh
export GIT_DIR=$(pwd)
cd ..
git checkout -f
git submodule update --init --recursive
$ chmod +x .git/hooks/post-receive
$ git config --add receive.denyCurrentBranch ignore
$ chown $SSH_DEPLOYUSER -R .

On the local side you have to add a "remote" (named "web" in this case):

The final step is to initially push to it (which requires to specify the "refspec" once - following deployments can be done by just doing a "git push web"):

Code:

$ git remote add web ssh://$DEPLOYUSER@host.example.com/path/to/repo-checkout/.git
$ git push web +master:refs/heads/master

These instructions are based on the howto at toroid.org/ams/git-website-howto, but the main difference is that I am not using a "bare" repository here, which would not allow to use Git submodules; submodules require a "full" Git working directory and having a checkout of the repository requires the receive.denyCurrentBranch=ignore setting.

13.04.10

Easy DNS wildcard setup for local domains using dnsmasq

When doing web development you'll often have domains/hostnames like hahler.local (instead of hahler.de).

Having a separate hostname for a lot of projects will result in some inconvenience though: you have to setup those.
Until recently, I was adding them to /etc/hosts (or the counterpart on Windows), like so:

127.0.0.1 hahler.local whissip.local

This however does not allow wildcards (like *.hahler.local), and having something like 127.0.0.1 *.local would be much easier to maintain (no adding to this file for a new setup/project).

dnsmasq to the rescue!

dnsmasq is a lightweight DNS forwarder and I was using it already to cache DNS queries locally, for faster browsing etc. Since it answers my DNS lookups already, it should be able to make *.local work for me.

I've created a simple file /etc/dnsmasq.d/my-local with just a single line:

Code:

address=/local/127.0.0.1

And after restarting dnsmasq, *.local gets resolved to 127.0.0.1.

Instead of "local" you can (and should probably) use another domain, like "dev" instead, because using "local" conflicts with Avahi/mdns, but this can get solved as follows:
Avahi/mdns defaults to ".local" as its TLD and therefore you have to adjust the "hosts" line in /etc/nsswitch.conf and put "dns" (which is dnsmasq in this case) before mdns4_minimal (which is avahi in this case), or remove the NOTFOUND=return, so that "dns" would get used even when mdns4_minimal returns NOTFOUND (which it apparently does for requests in its domain (typically ".local") it does not know anything about):

Code:

hosts:          files dns mdns4_minimal [NOTFOUND=return] mdns4
By Daniel in Ubuntu, Snippets04/13/10 English (US) Email

16.02.08

Launch a webserver in the current directory

Use case: you want to start a webserver in a given directory, to serve some files from there temporarily.

How many lines of code do you need (including editing config files) to start a webserver in the current directory?

The best answer is probably "one":
python2 -m SimpleHTTPServer

For Python 3:
python3 -m http.server 8000

(via comment in "15 Line HTTP server").

Python (with batteries, like web server interfaces, included) is just awesome :)

By Daniel in development, Snippets2008-02-16 English (EU) Email

15.09.07

Happy Software Freedom Day

Link: http://softwarefreedomday.org/

Happy Software Freedom Day!

Könnte eine gute Möglichkeit sein, sich etwas mit freier Software auseinanderzusetzen - z.B. mal Ubuntu anschauen/zeigen lassen.

Oder einfach einen Sekt zur Feier des Tages zu trinken.. :o)

Von Daniel in development15.09.07 German (DE) E-Mail
Schlagworte:

12.03.07

jProfiler für jEdit

Ich mache nicht viel Java-Entwicklung und wenn, dann ist es hauptsächlich für jEdit - ein sehr umfassender Texteditor und Entwicklungsumgebung.

Da mir dort Performanceeinbussen im Zusammenhang mit dem Syntax-Highlighting aufgefallen sind, hatte ich mir jProfiler angeschaut, welches nicht kostenlos ist - aber es gibt die Möglichkeit, es für 10 Tage kostenlos zu testen.

Innerhalb dieses Testzeitraums habe ich nicht wirklich mir dem Programm gearbeitet und als ich dann loslegen wollte, war der Testschlüssel nicht mehr gültig.

Ich habe dann freundlich bei dem Vertrieb nachgefragt, ob sie mir nicht eine Lizenz (die derzeit immerhin etwa 400€ kostet) zum Verbessern eines Open-Source-Programmes (nämlich jEdit) zur Verfügung stellen - und tatsächlich habe ich am nächsten Werktag eine (auf das Profilen von jEdit beschränkte) Lizenz bekommen. Auch wurde mir mitgeteilt, dass sie auch schon andere Open-Source-Projekte unterstützt hätten.

Herrlich!

Nochmals vielen Dank.. :)

Gerade habe ich mit Hilfe von jProfiler den zweiten Flaschenhals in jEdit gefunden. Unten sieht man den "Call Graph" einer Methode vor und nach einem (recht trivialen) Patch.

jProfiler - Call Graph before patch
jProfiler - Call Graph after patch
Von Daniel in development12.03.07 German (DE) E-Mail
Schlagworte:

01.03.07

Programmer Personality Test

Link: http://www.doolwind.com/index.php?page=11

My programmer personality type is: DHSB

You're a Doer.
You are very quick at getting tasks done. You believe the outcome is the most important part of a task and the faster you can reach that outcome the better. After all, time is money.
You like coding at a High level.
The world is made up of objects and components, you should create your programs in the same way.
You work best in a Solo situation.
The best way to program is by yourself. There's no communication problems, you know every part of the code allowing you to write the best programs possible.
You are a liBeral programmer.
Programming is a complex task and you should use white space and comments as freely as possible to help simplify the task. We're not writing on paper anymore so we can take up as much room as we need.
By Daniel in development2007-03-01 English (EU) Email

31.01.07

Jyte - OpenID und die Möglichkeiten

Link: http://jyte.com/

OpenID ist eine eindeutige ID, mit der man sich anmelden und verwalten kann - statt mehrerer einzelner Login-Password-Kombinationen.
Sehr praktisch und ich habe auch schon begonnen, ein OpenID-Plugin für b2evolution zu schreiben.

Man kann sich mit seiner OpenID quasi überall anmelden und hierüber Informationen zu E-Mail bereitstellen. Zudem entfällt dadurch das Passwort: man weist seine Zugehörigkeit an zB der OpenID daniel.hahler.de nach, indem man auf der entsprechenden URL http://daniel.hahler.de/ eine "OpenID-Serviceanfrage" entgegennimmt.

Ich zB habe mir bei MyOpenID.com einen Account geholt, über den ich meine OpenID "verwalte". Von http://daniel.hahler.de/ wird darauf verwiesen.

Wenn das jemand interessant findet, kann er auch xxx.hahler.de dann als "lebenslange OpenID" haben, per Umleitung zunächst.. ^^

Das Thema interessierte mich schon die letzten Tage sehr und nun gibt es einen "Verbreite die Glaubwürdigkeit"-Dienst: Jyte.com - Spread the Cred.
Dabei handelt es sich um ein eine Art Karma- oder Punkte-System, was der OpenID zugeordnet wird - sehr interessant.
Man kann sich dort natürlich einfach mit seiner OpenID einloggen ^^ (Mein Profil)

Es gibt einen Screencast zur Benutzung von OpenID auf Englisch. Vielleicht kann man anhand dessen mehr verstehen, um was es sich handeln könnte.

Seitenleiste