Archiv November 2016

Sonntag, 27. November 2016

Die REST-API von SeedDMS ansprechen

Vor einiger Zeit habe ich mir auf meinem Linux-Server hier zu Hause das Dokumentenmanagement-System SeedDMS installiert. Ich habe dieses Produkt ausgewählt, weil es mit PHP programmiert ist (eine Alternative benötigt Java und scheint nach einem Testlauf nicht die erhofte Maturität aufzuweisen.)

Obwohl die Installation dieses Produkts auch nicht ganz simpel ist (dies erläutere ich dereinst in einem separaten Blog-Artikel), weist es die nötige Maturität aus und bringt eine ansehnliche Liste von Features mit. Grösstes Manko ist eine aktuelle, für Endanwender verständliche Dokumentation.

Eine der von mir gesuchten Funktionalitäten ist die REST API, welche man unter der URL /restapi/index.php ansprechen kann.

Als ich damit die ersten API-Calls machen wollte, kam leider eine leere Antwort zurück. Im php.err fand sich folgende Zeile:

...
[27-Nov-2016 11:55:44 Europe/Zurich] PHP Warning:  require(Slim/Slim.php): failed to open stream: No such file or directory in /var/www/seeddms/restapi/index.php on line 55
[27-Nov-2016 11:55:44 Europe/Zurich] PHP Fatal error:  require(): Failed opening required 'Slim/Slim.php' (include_path='/var/www/seeddms/::.:/usr/share/php/') in /var/www/seeddms/restapi/index.php on line 55
...

Hmmm! Da scheinen mit der Quickstart-Version 5.0.7 (die einzige, die ich auf meinem Server zum Laufen gebracht zu habe) nicht alle externen Dependencies mitzukommen.

Ein Issue auf Sourceforge bestätigt meine Vermutung, bringt aber keine Lösung mit (was bringt es dem Endbenutzer, wenn die Dependency im README ergänzt wird?).

Ein, zwei Google-Suchen später finde ich dann einerseits die Web-Site des Frameworks, andererseits das Github-Repository.

Doch wie und wo installiere ich das Paket nun?

Eine weitere Google-Suche leitet mich auf eine Web-Site weiter, welche die Dokumentenstruktur einer älteren SeedDMS-Installation auflistet und dabei auch einen Ordner Slim aufweist. Der Ordner enthält folgende Dateien:

Als ich diese Struktur mit dem Github-Repository verglich, konnte ich keine Ähnlichkeiten feststellen.

Dann der Geistesblitz: Vielleicht verwendet SeedDMS noch eine ältere Version des Frameworks? Richtig geraten: Aktuell trägt das Framework die Version 3.0, SeedDMS baut aber auf Version 2.0 des Frameworks auf.

Ein Blick auf die Dateistruktur des 2.x Branches bestätigt meine Vermutung. Ich lade mir von diesem Branch die ZIP-Datei herunter und kopiere anschliessend den Unterordner Slim im Ordner Slim-2.x in das Web-Root von SeedDMS (/var/www/seeddms/Slim).

Nun klappt der Aufruf der API, weil PHP die Include-Datei unter /var/www/seeddms/Slim/Slim.php findet!

Am Ende der /restapi/index.php findet sich auch eine Liste aller verfügbarer API-Calls:

$app->post('/login', 'doLogin');
$app->get('/logout', 'doLogout');
$app->get('/account', 'getAccount');
$app->get('/search', 'doSearch');
$app->get('/searchbyattr', 'doSearchByAttr');
$app->get('/folder/:id', 'getFolder');
$app->post('/folder/:id/move', 'moveFolder');
$app->delete('/folder/:id', 'deleteFolder');
$app->get('/folder/:id/children', 'getFolderChildren');
$app->get('/folder/:id/parent', 'getFolderParent');
$app->get('/folder/:id/path', 'getFolderPath');
$app->get('/folder/:id/attributes', 'getFolderAttributes');
$app->post('/folder/:id/createfolder', 'createFolder');
$app->put('/folder/:id/document', 'uploadDocument');
$app->get('/document/:id', 'getDocument');
$app->delete('/document/:id', 'deleteDocument');
$app->post('/document/:id/move', 'moveDocument');
$app->get('/document/:id/content', 'getDocumentContent');
$app->get('/document/:id/versions', 'getDocumentVersions');
$app->get('/document/:id/version/:version', 'getDocumentVersion');
$app->get('/document/:id/files', 'getDocumentFiles');
$app->get('/document/:id/file/:fileid', 'getDocumentFile');
$app->get('/document/:id/links', 'getDocumentLinks');
$app->get('/document/:id/attributes', 'getDocumentAttributes');
$app->put('/account/fullname', 'setFullName');
$app->put('/account/email', 'setEmail');
$app->get('/account/locked', 'getLockedDocuments');
$app->post('/accounts', 'createAccount');
$app->get('/accounts/:id', 'getAccountById');
$app->put('/accounts/:id/disable', 'setDisabledAccount');
$app->post('/groups', 'createGroup');
$app->get('/groups/:id', 'getGroup');
$app->put('/groups/:id/addUser', 'addUserToGroup');
$app->put('/groups/:id/removeUser', 'removeUserFromGroup');
$app->put('/folder/:id/setInherit', 'setFolderInheritsAccess');
$app->put('/folder/:id/access/group/add', 'addGroupAccessToFolder'); // 
$app->put('/folder/:id/access/user/add', 'addUserAccessToFolder'); // 
$app->put('/folder/:id/access/group/remove', 'removeGroupAccessFromFolder'); 
$app->put('/folder/:id/access/user/remove', 'removeUserAccessFromFolder'); 
$app->put('/folder/:id/access/clear', 'clearFolderAccessList');
$app->run();

Eine simple API-Abfrage schaut folgendermassen aus:

  1. /restapi/index.php/login mit den POST-Parametern user und pass
  2. Das Session-Cookie mydms_session=XXX; in eine Variable speichern. Es muss bei allen folgenden API-Calls mit übermittelt werden
  3. /restapi/index.php/searchbyattr?name=AttrName&value=AttrValue mit den GET-Parametern name und value
  4. Die Antwort wird als JSON zurückgegeben, welche mit json_decode() in ein PHP-Objekt/Array geparsed werden kann

Tags:
Labels: IT, Linux

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 20. November 2016

Der beste Indikator, dass US-Asiaten tatsächlich die vielgepriesene Model Minority sind?

Eine Kollegin von Stephanie und mir hat heute auf Facebook den Artikel The real secret to Asian American success was not education gepostet.

Die Hypothese des Artikels ist es, dass die asiatischen Einwanderer in die USA nicht das höchste Einkommen aller US-Bevölkerungsgruppen verzeichnen, weil „sie“ strebsam und arbeitswillig sind sowie ihren Nachwuchs mit allen Mittel auf beste Schulnoten trimmen. Sondern weil seit den 1960er der Rassismus gegen diese Bevölkerungsgruppe markant zurückgegangen ist und die Gruppe im Berufsleben wie auch im gesellschaftlichen Leben zunehmend akzeptiert sei.

Man kann diese Model Minority noch so sehr über den Klee loben und herleiten, wieso gerade „die“ Asiaten geschafft haben, was bisher anderen Minderheiten (allen voran Afro-Amerikanern, aber auch Latinos) verwehrt geblieben ist — ich behaupte: Solange wir nicht mindestens ein halbes Dutzend asiatische Gesichter auf Apples Leadership Web-Seite sehen, haben es „die“ Asiaten (als gäbe es „die“ Europäer …) noch nicht geschafft, mit dem weissen Mann auf einer Stufe zu stehen:

Apple Executive Profiles

Dies ist aus meiner Sicht der beste, wenn auch völlig unwissenschaftliche Indikator, um die Gültigkeit des Model Minority-Status zu verifizieren.

Nachtrag

Wer aber wirklich Grips hat, wird insbesondere die Verallgemeinerung der „Asiaten“ in Frage stellen. Es macht auch keinen Sinn, einwandernde „Europäer“ alle in einen Topf zu werfen. Innerhalb der asiatischen Minderheit gibt es nämlich markante Unterschiede:

So, while Chinese-Americans and Indian-Americans are among the most prosperous groups in the country, Korean-Americans, Vietnamese-Americans, and Filipino-Americans have lower median personal earnings than the general population.

Quelle: THE TWO ASIAN AMERICAS

Nachtrag 2

Die Harvard Business Review gibt in einem Artikel mögliche Erklärungsansätze ab, wieso ein solcher „bamboo ceiling“ existiert:

As Wesley Yang wrote in New York magazine, Western society teaches that “the squeaky wheel gets the grease,” while Eastern society teaches that “the nail that sticks out gets hammered down.” […]

So Asians face a double bind as well: If they act more dominant, they will be less liked, but if they do not project dominance, they will not be seen as leaders.

Quelle: Why Aren’t There More Asian Americans in Leadership Positions?

Tags: , , , , , ,
Labels: Apple, USA

Keine Kommentare | neuen Kommentar verfassen

Mittwoch, 16. November 2016

Wenn sogar James Kunstler daneben liegt …

Knapp daneben ist auch vorbei … Ich mag den Contrarian und Prepper Kunstler sehr, doch das will nicht heissen, dass auch der Mann regelmässig warme Luft aussondert. Hier wagte er im September 2015 einen Blick in die Glaskugel:

I would not even bet against the possibility of the 2016 selection being canceled in some manner.

Quelle: The Parties Crawl Off to Die

Tags: , , , ,
Labels: USA

Keine Kommentare | neuen Kommentar verfassen

Montag, 14. November 2016

iMac erkennt sporadisch Original Apple-Tastatur nicht

Meine Frau hat vor einiger Zeit von meiner Schwester einen iMac Early 2009 geerbt. Die Maschine habe ich mittlerweile mit dem maximal möglichen Arbeitsspeicher sowie mit einer SSD-Festplatte ausgestattet und läuft dementsprechend für ihr biblisches Alter relativ flott.

Nur ein Problem hat mich bisher regelmässig eingeholt: Dann und wann erkennt der iMac nach einem frischen Neustart die Original Apple-Tastatur mit us-amerikanischem Layout nicht. Über dem Login-Fenster prangt dann ein Dialogfenster, welches einem zum Pairing einer Bluetooth-Tastatur und -Maus auffordert. Das Problem liess sich in solchen Fällen auch nicht durch mehrere Neustarts lösen.

Stattdessen hielt ich einzig aus diesem Grund die ursprünglich mit dem Gerät mitgelieferte Tastatur mit deutschweizerischem Tastaturlayout vorrätig. Wenn immer das Problem auftritt, musste ich die amerikanische Tastatur vom iMac trennen und diese Tastatur anschliessen. Die schweizerische Version wird auf Anhieb erkannt und funktioniert immer problemlos.

Vor einigen Tagen wurmte mich das Problem wieder einmal und ich startete eine weitere Google-Suche nach möglichen Ursachen und Lösungen meines Problems. Dieses Mal wurde ich im Diskussionsforum des Apfelherstellers selbst fündig:

external mac keyboard not working with maverick on macbook air

Ein Kommentar brachte die Erleuchtung:

Thanks, pal!
I was facing the same issue — Apple USB keyboard attached to MBA Mid2013 with Mavericks (latest updates installed so far) was iether working or not. It`s a real puzzle to figure out the logics it starts working. Have just tried extension cord and it`s working fine now.

In meinem Kabelarchiv fand ich tatsächlich ein besagtes USB-Verlängerungskabel und steckte es an den USB-Anschluss des iMacs und verband das Original-Tastaturkabel damit:

iMac Early 2009 USB Apple Keyboard Extension Cord

Bis jetzt hat sich das Problem nie wieder gezeigt; ich bin aber erst vorsichtig optimistisch, dass mein Problem dadurch tatsächlich behoben wurde.

Was nicht funktioniert hat

Has your Apple Mac external USB keyboard stopped working?

Labels: Apple

1 Kommentar | neuen Kommentar verfassen

Sonntag, 13. November 2016

UniFi Access Points mittels IKEA-Hack in der Wohnung platzieren

Zur selben Zeit, als ich Brandmelder angeschafft habe und mir am Überlegen war, wie man diese Sensoren ohne Beschädigung der Decken in der Wohnung platzieren kann, habe ich mir auch zwei UniFi Access Point angeschafft.

Der IKEA-Hack mit den Variera Tellerhaltern für die Montage der Brandmelder liess sich 1:1 auch auf die Access Points übertragen, da IKEA Tellerhalter in zwei Grössen im Angebot führt (die UniFis hätten rein vom Durchmesser überhaupt nicht in die Brandmelder-Halterung gepasst). Für UniFi Access Points eignet sich das grössere der beiden Modelle, das Teller in der Grösse von 19cm bis 32cm aufnimmt:

VARIERA Tellerhalter, Buche hell, Edelstahl (IKEA Artikelnummer 802.404.16; 9.95 CHF)

Wieso dieser Aufwand? UniFi Access Points senden ihre Signale in Form eines „Donuts“ aus, wenn der Access Point horizontal aufliegt. Der „Donut“ ist aus der horizontalen Sicht aber nicht symmetrisch: Auf der Deckenseite des Access Point mit der Zuführung des Ethernet-Kabels ist die Abstrahlung weniger wulstig als auf der Luftseite (dort, wo das Logo prangt und die blaue LED leuchtet):

unifi-access-point-donut-horizontal

NACHTRAG: Unter Antenna radiation pattern for UniFi AP (diagramm inside) habe ich weitere Diagramme gefunden:

unifi-horizontal-polarization-mounted-wall

unifi-horizontal-polarization-mounted-roof

unifi-vertical-polarization-mounted-wall

unifi-vertical-polarization-mounted-roof

Quelle: [Ervaringen/discussie] Ubiquiti-apparatuur

Dies ist einfach erklärbar: Die Macher der semi-professionellen Access Points gehen davon aus, dass die Dinger in der Regel an Decken montiert werden. Richtung Decke selber bringt eine WiFi-Durchdringung niemandem etwas, aber von der Decke weg (Richtung Zimmerboden) muss eine möglichst grosse Abdeckung erreicht werden.

Aus diesem Grund habe ich beide Access Points auf dem Tellerhalter montiert und in der Stube sowie im Büro möglichst an hoher Position aufgestellt. Das sieht dann so aus:

UniFi Access Point IKEA Variera Mount Living Room

Tags: , , , , , , , , , ,
Labels: IT

4 Kommentare | neuen Kommentar verfassen

Sonntag, 13. November 2016

Brandmelder mittels IKEA-Hack in der Wohnung platzieren

Vor einiger Zeit habe ich mir bei MIGROS für wenig Geld ein Sechserpack Brandmelder erstanden und wollte unsere Wohnung damit ausstatten. Unser Apartment ist vollgestopft mit Elektronik und es müsste nur eine Frage der Zeit sein, bis damit irgendwann einmal etwas schief geht. Im schlimmsten Fall brennt es.

Damit Brandmelder und deren Luftpartikelsensoren wie gewünscht funktionieren ist es wichtig, dass diese in einem Zimmer möglichst hoch, das heisst an der Decke, angebracht werden. Da wir in einer Mietwohnung leben, deren Decken wir nicht beschädigen wollten, und weil ich handwerklich nicht der Hirsch bin, habe ich mich nach einer anderen Lösung umgesehen.

Was, wenn man die Brandmelder kopfüber an eine Halterung anbringen könnte, und diese Halterung dann an möglichst hochgelagerten Positionen im Haus platzieren könnte?

Die Spezifikationen waren simpel: Eine Art rundes Teller (Durchmesser mindestens so gross wie derjenige der Brandmelder), an welches der Brandmelder mit seiner Deckenhalterung angebracht werden kann. Das Eingericht ist am Besten mit Füssen ausgestattet, damit man das Konstrukt aufstellen kann und der Brandmelder unter sich ausreichend Partikel sieht.

Eine Suche auf IKEA dauerte nicht lange und brachte folgendes Produkt an den Tag:

VARIERA Tellerhalter, Buche hell, Edelstahl (IKEA Artikelnummer 002.404.15; 7.95 CHF)

Genau was ich gesucht habe! Die auf einen Durchmesser von 12cm bis 19cm verschiebbaren Füsse helfen zudem, dass das Holzbrett auch grössere Objekte aufnehmen kann, die das Brett ein wenig überragen.

Mein Vater half mir dabei, Schrauben im Holz zu versenken, die Deckenhalterung daran zu montieren. Anschliessend bestückte ich die Brandmelder mit der 9V-Batterie und platzierte das Konstrukt an neuralgischen Punkten in unserer Wohnung.

Das Endresultat lässt sich sehen:

IKEA Variera Brandmelder

Tags: , , , , ,
Labels: IT

1 Kommentar | neuen Kommentar verfassen

Sonntag, 13. November 2016

Präsidentschaftswahlen USA 2016: Bissige audiovisuelle Kommentare

Mark Blyth

Der Politwissenschaftler Mark Blythe hat am Tag nach den Präsidentschaftswahlen anlässlich eines Seminars am Watson Institute for International and Public Affairs an der Brown University in Providence, Rhode Island, USA, seinen Kommentar zur angeblichen Unvorhersehbarkeit Trumps Wahl und eine Prognose auf die kommenden Monate und Jahre gegeben. Prognosethemen sind unter anderem das Verfassungsreferendum in Italien, die Front National in Frankreich, die AfD in Deutschland sowie die angespannte Lage im Baltikum. Mark erläutert auch aus wirtschaftspolitischer Geschichte, wie wir an diesem Punkt in der Geschichte angekommen sind: Eine Kritik an den Auswirkungen des ungebremsten Neoliberalismus seit 1985. Kurz:

So … They’re [losers of globalisation] a bit fed up with. So they’ve decided if they get any possible opportunity, whether this is Brexit, or the Italian constitutional referendum or anything […] to basically give the elites notice: „We’ve had enough of this!“ And that’s what this is.

Ich habe mir erlaubt, zwei von Marks Monologen zurechtzuschneiden und auf YouTube hochzuladen — ich empfinde beide Ausschnitte als äusserst sehenswert:

Quelle: Mark Blyth and Wendy Schiller – Election 2016: What Happened and Why?

Jonathan Pie

Jonathan Pie liest — analog zu Mark Blyth — der nur noch auf dem Papier „demokratischen“ Partei gehörig die Leviten:

Tags: , , , , , , , , ,
Labels: Uncategorized

Keine Kommentare | neuen Kommentar verfassen

Dienstag, 1. November 2016

upc cablecom Performance an der Melchtalstrasse im Breitenrain

Eine Bekannte von mir hat sich vor einigen Wochen darüber beschwert, dass die Performance ihrer Internetverbindung von upc cablecom (Quadruple Play Kabel-Anbieter hier in der Schweiz) in ihrer Wohnung an der Melchtalstrasse im bernischen Breitenrain gelegentlich zu wünschen übrig lässt.

Sie war sich sicher, dass die in ihrem aktuellen Internet-Abo als Best Effort versprochene 200 MBit/s Downloadgeschwindigkeit und 20 MBit/s Uploadgeschwindigkeit während den angesprochenen Phasen nie und nimmer erreicht werden.

Ich habe ihr deshalb Anfangs Oktober 2016 einen Linux-Laptop (Lenovo X200s mit Gigabit-Ethernet, welcher mit Cat 5e-Kabel direkt am Router TP-LINK WNDR3600 hängt) ins Netzwerk gehängt, welcher jede Stunde einen Ookla Speedtest mit dem Fiber7-Server durchführt und mir die Werte zurückmeldet.

Nach drei Wochen Monitoring verfestigt sich das Bild, dass mit der Internet-Anbindung tatsächlich etwas faul ist. An praktisch jedem Tag zeigt sich im RRDtool-Graph dasselbe Bild: Ab ca. 18 Uhr bricht die Downloadgeschwindigkeit von annähernd 200 MBit/s zunehmend ein, erreicht mit ca. 40 MBit/s den Tiefpunkt und erholt sich ab 22 Uhr langsam wieder:

upc-cablecom-melchtalstrasse-bern-tag

upc-cablecom-melchtalstrasse-bern-woche

Meine Vermutung: Im Breitenrain könnte die Studentendichte sowie die Dichte der Yuppies sehr hoch sein. Diese schauen nach Feierabend nicht TV, sondern werfen sich Netflix & Konsorten (vielleicht sogar Bittorrent?) an und streamen sich die TV-Sendungen und Filme ihrer Wahl. Was dafür spricht: Am letzten Wochenende war der Einbruch noch dramatischer als unter der Woche. Der Graph zeigt, dass ausserhalb der Stosszeiten die versprochenen Bandbreiten erreicht werden.

Und nein, meine Bekannte sabotiert sich nicht selber: Sie hat unregelmässige Arbeitszeiten (Früh- und Spätschicht, manchmal auch an Wochenenden), weshalb sie in vielen Fällen von den Geschwindigkeitseinbrüchen gar nichts mitbekommt.

Und was tut der ISP, der hoffentlich über ein viel, viel ausgeklügelteres Monitoring verfügt als ich? Nichts. Wie für unsere Halunken-ISPs hier in der Schweiz so üblich versteckt man sich hinter der Vertragsklausel Best Effort, überbucht das Netz gnadenlos und lenkt den Umsatz nicht in den Ausbau des Netzes, sondern lässt diesen in die Taschen der grosskapitalistischen Shareholder in Übersee fliessen. Und natürlich hofft man darauf, dass der dumme Benutzer nicht auf die Idee kommt, regelmässig Geschwindigkeitsmessungen durchzuführen.

upc cablecom, bitte aufwachen! Im Breitsch braucht es eine grössere Leitung, aber bitte zack zack!

Tags: , , , , , , , , , , , , ,
Labels: Schweiz

Keine Kommentare | neuen Kommentar verfassen