Permalink

kurz nachgedacht: Einkreisen in Sozialen Netzwerken

Ich überlege schon eine Weile wie für mich das beste Soziale Netzwerk aussehen würde.

Derzeit benutze ich Twitter, Facebook und Google+.

Letztere beiden eher weniger, dafür gefällt mir irgendwie Google+ eigentlich am besten. Bei Google+ gibt es beispielsweise diese Kreise. Man kann diverse Personen in unterschiedliche (und auch in mehreren) Kreise einordnen, sodass man Inhalte nur an bestimmte Personen(gruppen) teilen kann. Das gleiche gibt es eigentlich auch bei Facebook. Dort kann man Leute in Listen eintragen und so die Inhalte nur an diese verteilen. Beides funktioniert relativ gleich, nur dass es bei Facebook immer bidirektionale (X und Y sind Freunde) und bei Google+ eher direktionale Beziehungen (wie Twitter: X folgt Y – evtl. auch anders herum) gibt. Wenn ich es richtig verstanden habe, kann man bei Google+ Beiträge an Leute teilen, die einem selber eigentlich gar nicht folgen (was manchmal echt nervig sein kann).

Bei Twitter gibt es mittlerweile mehrere Personen, die jeweils mehrere Accounts haben. Entweder versuchen sie dadurch zwischen privates, parteiliches oder berufliches zu trennen. Oder der Zweitaccount ist ein protected Account. Sie sind auch als Rageaccounts verbreitet.

Ich selber habe Twitter von den dreien als erstes benutzt. Dann kam Facebook. Dort habe ich aber nun auch andere Empfänger. So gibt es dort neben z.B. Parteibekanntschaften auch private Freunde, Verwandte, Kommilitonen von der Uni oder auch ehemalige Klassenkameraden. Dort habe ich zuerst versucht mit den Listen Leute in Interessengebiete aufzuteilen. Wenn es um Piratenkram ging, dann sollte es nur an die Piraten gehen. Wenn es etwas privates war, dann entweder an alle oder nur an private Kontakte. Ich wollte halt niemanden mit meinen Interessen nerven – die Zuteilung hatte also nichts mit Vertraulichkeit o.ä. zu tun. Ich hätte aber z.B. nichts dagegen gehabt, wenn auch jeder Nichtfreund meine Piratenbeiträge lesen darf. So ähnlich sieht es auch bei Google+ aus, auch wenn ich da eher ähnliche Empfänger wie auf Twitter habe (also mehr Piraten und Interessierte).

Nun, Kreise, Listen, Aspekte oder wie man das alles nennt sind ja toll, aber erfüllen nicht meine Bedürfnisse. In Google+ bin ich es auch irgendwie langsam Leid Leute in Kreise einzusortieren. Mittlerweile landet jeder in “was auch immer”. Auf Facebook veröffentliche ich auch alles öffentlich – man kann mich auch abonnieren und so fast alles lesen. Dafür benutze ich Facebook auch kaum mehr.

Wieso schreibe ich das alles? Ich habe mir gedacht, dass ein soziales Netzwerk cool wäre, wo man selber Kreise o.ä. einrichtet und die Leute sich selber dort reinschreiben können. Dann könnte ich z.B. Kreise für “Piratiges”, “Privates”, “Uni” usw. einführen. Dann können sich die Leute aussuchen, was sie lesen möchten – natürlich unter der Voraussetzung, dass ich beim Schreiben meiner Beiträge das an die richtigen Kreise teile. Wenn die Leute das selber aussuchen, dann wäre ich nicht der Dumme, der die Leute falsch einteilt. Ich meine: Es könnte ja sein, dass ehemalige Klassenkameraden etwas über meine piratigen Aktivitäten lesen wollen. Die Kommilitonen aus der Uni in meinen sozialen Netzwerken wissen eigentlich, dass ich bei den Piraten bin, aber ob sie sich überhaupt für diese Themen interessieren, das weiß ich nicht. Mit diesem umgedrehten Konzept könnte man auch das mit den RageAccounts lösen ohne dass man mehrere Accounts verwalten muss. Es könnte so Kreise geben, bei denen man selber die Leute erst zulassen muss, ehe sie mitlesen können.

Ja, man kann auch mehrere Accounts anlegen, aber langsam überfordert mich das. Es passiert auch echt schnell, dass man aus versehen mit dem falschen Account postet. Und wieso mehrere Accounts, wenn es auch nur mit einen ginge?

Nun meine Frage: Gibt es denn schon so etwas? Habe ich etwas übersehen?

Permalink

kurz notiert: Software RAID 1 Synchronisierung und S.M.A.R.T Tests

Ich betreibe ein Software RAID 1 mit zwei Festplatten. Dieses RAID war nicht mehr synchron. Der Befehl “cat /proc/mdstat” zeigte 93% an. Entweder gab es Festplattenfehler oder so viel IO Last, dass die Resynchronisation nicht mehr hinterher kam (die Synchronisationsgeschwindigkeit hängt von der IO-Last ab). Da dies ungewöhnlich ist, habe ich dann auf beide Platten S.M.A.R.T Tests durchlaufen lassen. Leider wurden diese Tests nie beendet – selbst bei den zwei Minuten Tests kam die Meldung:

$ smartctl -a /dev/sda
...
Self-test execution status: ( 241) Self-test routine in progress...
10% of test remaining.
...

Bei einer kleinen Recherche hatte jemand auch das Problem mit einem RAID 1 Verbund. Vor allem war bei mir die Resynchronisation mit einer Geschwindigkeit von ca. 300-600K/sec total langsam. Irgendwie müssen sich die Tests und die Resynchronisation gegenseitig geblockt haben. Selbst ein herauslösen einer der Platten aus dem RAID ging nicht (gut, kann auch sein, dass es gemountet so nicht geht):

$ mdadm /dev/mdX --remove /dev/sdXX
mdadm: hot remove failed for /dev/sdXX: Device or resource busy

Nachdem ich die Tests dann mit “smartctl -X /dev/sdX” abgebrochen hatte, erhöhte sich die Geschwindigkeit auf 4000-7000K/sec (je nach Auslastung).

Permalink

GnuPG Cheet Sheet

Irgendwann hatte ich mal eine Liste mit GPG Befehlen erstellt. Diese möchte ich mit euch teilen. Bevor ich mit den Befehlen anfange, möchte ich kurz meine GPG Config zeigen (~/.gnupg/gpg.conf):

1
2
3
use-agent
keyserver hkp://pgp.mit.edu:11371
keyserver-options auto-key-retrieve

In dieser Config habe ich zum einen eingestellt, dass zum Abfragen des Passworts der GPG-Agent benutzt wird. Dafür benötigt man je nach Distribution/Betriebssystem das Paket “gnupg-agent” (in ArchLinux ist es bereits in gnupg) und “pinentry” (Ubuntu: pinentry-curses, pinentry-gtk2, pinentry-qt und/oder pinentry-qt4). Soweit ich weiß wird in GnuPG 2 der Agent standardmäßig benutzt.

Außerdem habe ich einen Keyserver festgelegt. Dadurch muss man bei den Befehlen, die mit dem Keyserver arbeiten, nicht ständig diesen per “–keyserver” angeben.

In der letzten Zeile habe ich angegeben, dass der Schlüssel automatisch vom Keyserver geholt wird (deshalb muss der Keyserver ebenfalls in der Config festgelegt sein). So wird bei mir in Thunderbird beim Überprüfen der Signatur der E-Mails automatisch der Schlüssel vom Keyserver geholt.

Zu den Befehlen:

Vorweg: Ich benutze immer den Befehl “gpg2″. Ihr könnt natürlich auch “gpg” verwenden.

Schlüssel anzeigen/auflisten

Alle Schlüssel im Keyring erhält man wie folgt:

% gpg2 --list-keys

Um einen bestimmten Schlüssel zu zeigen, gibt man beim letzten Befehl die Schlüssel-ID mit an:

% gpg2 --list-keys $KEY

Den Fingerprint des Schlüssels anzeigen:

% gpg2 --fingerprint $KEY

Die Signaturen des Schlüssels anzeigen:

% gpg2 --list-sigs $KEY

Alle Schlüssel auflisten, von denen man den geheimen Schlüssel hat:

% gpg2 --list-secret-keys

Den Öffentlichen Schlüssel exportieren (in der Konsole angezeigt):

% gpg2 --armor --export $KEY

Um diesen öffentlichen Schlüssel in eine Datei zu speichern:

% gpg2 --armor --output $DATEI --export $KEY

Schlüssel erzeugen

Irgendwann benötigt man einen eigenen Schlüssel oder muss sich einen neuen erzeugen. Dies geht einfach per:

% gpg2 --gen-key

Eigentlich ist alles selbsterklärend. Als Schlüsselart nimmt man “(1) RSA und RSA (voreingestellt)”. Die Schlüssellänge setze ich gerne auf 4096. Beim Verfallsdatum stelle ich immer unendlich ein. Dies kann man später auch ändern (siehe unten). Nicht vergessen den Schlüssel auf einen Keyserver hochzuladen (siehe unten).

Schlüssel bearbeiten

Schlüssel bearbeiten, um diesen z.B. zu ändern oder zu unterschreiben:

% gpg2 --edit-key $KEY

Alternativ: Falls man mehrere eigene Schlüssel hat und beim Bearbeiten mit einem bestimmten Schlüssel unterschreiben möchte:

% gpg2 -u $OWNKEY --edit-key $KEY

Weitere Identität hinzufügen

Wenn man mit dem erzeugten Schlüssel für weitere E-Mail Adressen signieren möchte, dann kann man dies wie folgt machen (man muss vorher in den Bearbeitungsmodus – siehe letzten Abschnitt):

gpg> adduid

Hier gibt man den Namen, die E-Mail Adresse sowie (falls gewünscht) einen Kommentar an. Mit “f” sagt man, dass es so stimmt und mit “save” speichert man den Schlüssel.

Schlüssel unterschreiben

(vorher muss man in den Bearbeitungsmodus gehen – siehe oben)

Unterschreiben kann man mit:

gpg> sign

(hier wird nochmal angezeigt, mit welchem Schlüssel signiert wird)

Wirklich signieren? (j/N) j

(Passwortabfrage)

gpg> trust

Ihre Auswahl? 5 (bzw. je nach Vertrauen abstrufen)

Wollen Sie diesem Schlüssel wirklich uneingeschränkt vertrauen? (j/N) j

gpg> q

Änderungen speichern? (j/N) j

Verfallsdatum setzen und neuen Unterschlüssel erzeugen

Der Alex hat dies ausführlich erklärt. Hier nur ganz kurz zusammengefasst (vorher in den “Bearbeitungsmodus”):

Um das Verfallsdatum bei einem Unterschlüssel zu setzen, muss dieser erst einmal ausgewählt werden und dann das Datum setzen:

gpg> key 1

(In der Liste ist bei dem ausgewählten Unterschlüssel nun ein Stern)

gpg> expire
Ändern des Verfallsdatums des Unterschlüssels.
Bitte wählen Sie, wie lange der Schlüssel gültig bleiben soll.
         0 = Schlüssel verfällt nie
        = Schlüssel verfällt nach n Tagen
      w = Schlüssel verfällt nach n Wochen
      m = Schlüssel verfällt nach n Monaten
      y = Schlüssel verfällt nach n Jahren
Wie lange bleibt der Schlüssel gültig? (0) 6m
Key verfällt am Fr 17 Okt 2014 14:07:11 CEST
Ist dies richtig? (j/N) j

(Passwortabfrage)

gpg> save

Mit “addkey” erzeugt man analog einen Unterschlüssel. Hier wählt man dann am besten “(6) RSA (nur verschlüsseln)” aus. Am Ende das Speichern nicht vergessen.

Keyserver etc

Hat man Änderungen an dem Schlüssel vorgenommen, dann kann man ihn hochladen (ggf. “–keyserver” angeben):

% gpg2 --send-keys $KEY

Benötigt man einen bestimmten Schlüssel vom Keyserver oder möchte diesen nur updaten, dann kann man ihn sich herunterladen:

% gpg2 --recv-keys $KEY

Man sammelt in der ganzen Zeit viele Schlüssel. Diese werden von anderen signiert oder vom Eigentümer aktualisiert (neuer Unterschlüssel, zurückgesetzt, …). Deshalb möchte man von Zeit zu Zeit mal alle Schlüssel in seinem Keyring aktualisieren:

% gpg2 --refresh-keys
Permalink

Drupal 7: Views und die Titel der Gruppierungen

Derzeit beschäftige ich mich wieder einmal mit den Views (Ansichten) in Drupal. Bei einem View wollte ich gleich zwei Gruppierungen anwenden. Diese kann man (wie bekannt sein dürfte) bei den Einstellungen des Formats festlegen:

Gruppierungen in Views

Wenn man nur eine Gruppierung festlegt, dann wird über jeder Gruppe der Gruppenname (also der Titel) angezeigt. Hier wird er idealerweise von den “<h3>”-Tags umgeben. Fügt man nun, wie im Bild zu sehen, eine weitere Gruppierung hinzu, dann erhalten die Titel der zweiten Gruppierung die “<h3>”-Tags. Bei der ersten Gruppierung wurden sie aber nun durch ein “<div>” ausgetauscht. Dies ist ziemlich ärgerlich, wenn man eine vernünftige Struktur haben möchte.

Anstatt nun einfach den CSS Markup anzupassen, kann man das Template für die Gruppierung anpassen. Zuständig hierfür ist das Template “views-view-grouping.tpl.php”, welches auch das angesprochene “<div>” enthält. Um dies nun zu ändern, erstellt man innerhalb des Themeordners eine Datei mit einer der folgenden Namen:

  1. views-view-grouping–viewnamedisplayid.tpl.php
  2. views-view-grouping–displayid.tpl.php
  3. views-view-grouping–viewname.tpl.php
  4. views-view-grouping.tpl.php

Welcher Dateinamen gewählt wird, ist davon abhängig, wo dieses Template so überschrieben werden soll. Entweder soll das überall passieren (4.), bei allen Anzeigetypen der speziellen View (3.), bei allen Views mit dem speziellen Anzeigetyp (2.) oder bei der speziellen View mit dem speziellen Anzeigetyp (1.). Die fett markierten Stellen müssen entsprechend angepasst werden. Wenn man mit der Maus auf den Anzeigenamen drüber geht, dann sieht man anhand der entsprechenden URL die jeweiligen Namen (im folgenden Bild ist viewname gelb und displayid rot markiert):

Namen der View und die Display ID

Als Inhalt der neuen Datei nehmen wir den von der Originaldatei “views-view-grouping.tpl.php”:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
/**
* @file
* This template is used to print a single grouping in a view.
*
* It is not actually used in default Views, as this is registered as a theme
* function which has better performance. For single overrides, the template is
* perfectly okay.
*
* Variables available:
* - $view: The view object
* - $grouping: The grouping instruction.
* - $grouping_level: Integer indicating the hierarchical level of the grouping.
* - $rows: The rows contained in this grouping.
* - $title: The title of this grouping.
* - $content: The processed content output that will normally be used.
*/
?>
<div class="view-grouping">
  <div class="view-grouping-header"><?php print $title; ?></div>
  <div class="view-grouping-content">
    <?php print $content; ?>
  </div>
  </div>

Hier kann man nun die HTML-Tags in Zeile 20 entsprechend austauschen.

Die Darstellung des zweiten Titels kann man mit Hilfe der Designausgabe ändern (Erweitert -> Andere -> Theme: Information).

Permalink

Eclipse Kepler: Abstürze unter Linux

Seit einiger Zeit ist mir die IDE Eclipse ständig abgestürzt bzw hat sich einfach beendet – ohne dass eine Fehlermeldung angezeigt wurde. Seit den letzten Updates in Eclipse beendet sich das Programm bei jeder Kleinigkeit, womit nicht mehr produktiv arbeiten kann.

Nun scheine ich wohl eine Lösung gefunden zu haben. Wie es aussieht, ist hier Webkit der Verursacher. Bei der beschriebenen Lösung wird für den Browser in Eclipse Webkit durch xulrunner (Runtime Environment von Mozilla) ausgetauscht.

Hier die Lösung:

1. Zuerst muss man eine passende xulrunner Version herunterladen. Die unterstützten Versionen für die eigene Eclipse Installation findet man in der FAQ von Eclipse. Xulrunner kann von dem FTP Server von Mozilla heruntergeladen werden. Ich habe hier die Datei “xulrunner-10.0.4esr.en-US.linux-x86_64.tar.bz2″ genommen. Nach dem Herunterladen muss diese Datei nur noch entpackt (tar -xjf xulrunner-10.0.4esr.en-US.linux-x86_64.tar.bz2) werden. Bei mir befindet sich xulrunner nun im Homeverzeichnis.

2. Nun muss in der eclipse.ini nur noch der Austausch eingestellt werden. Hierzu fügt man folgende Zeilen hinzu. Der Pfad in der zweiten Zeile muss entsprechend Schritt 1 angepasst werden.

-Dorg.eclipse.swt.browser.DefaultType=mozilla
-Dorg.eclipse.swt.browser.XULRunnerPath=/home/username/xulrunner/

Das war es schon. Dies funktioniert bei mir bisher ohne Probleme.