|
|
|
|
Ich habe folgende PHP Situation.
Ich möchte über eine Klasse PDFs als reinen Text umwandeln und per PDO hochladen. Es funktioniert auch an sich alles einwandfrei.
Nur ist die Klasse so aufgebaut, dass der Konstruktor jedes Mal ein neues PDO erstellt.
Über eine statische Methode möchte ich jedoch auf die PDO zugreifen, damit ich jederzeit zu Testzwecken eine Volltextsucche ausführen kann, ohne eine aktive Instanzierung haben zu müssen.
Wie kriege ich den PDO Aufruf statisch hin?
protected static $pdo = new PDO(); geht leider ned.
|
|
|
|
|
|
|
Ich hab fuer meine Bachelorarbeit ein kleines Tool programmiert, dass auf nem Client-Rechner laeuft, Daten sammelt, und sie ueber ne REST Schnittstelle in eine Datenbank schiebt.
Ich tue mich schwer damit, die Wahl meiner Technologien zu rechtfertigen, wissenschaftlich. Mir wurde empfohlen, einen Ueberblick ueber verfuegbare Technologien zu geben und meine Auswahl dann daraus abzuleiten.
Aber diesen Ueberblick zu bekommen, faellt mir schwer. Vielleicht mach ichs mir auch zu kompliziert. Gebe ich da jetzt nen kurzen Abriss ueber Verteilte Systeme und nenne bestimmte Implementierungen?
|
|
|
|
|
|
|
| Zitat von Lightspeed
Ich habe folgende PHP Situation.
Ich möchte über eine Klasse PDFs als reinen Text umwandeln und per PDO hochladen. Es funktioniert auch an sich alles einwandfrei.
Nur ist die Klasse so aufgebaut, dass der Konstruktor jedes Mal ein neues PDO erstellt.
Über eine statische Methode möchte ich jedoch auf die PDO zugreifen, damit ich jederzeit zu Testzwecken eine Volltextsucche ausführen kann, ohne eine aktive Instanzierung haben zu müssen.
Wie kriege ich den PDO Aufruf statisch hin?
protected static $pdo = new PDO(); geht leider ned.
| |
(Ich nehme mal an, dass du folgendes machen wolltest)
Wenn eine Klasse in Ihrem Konstruktor ein Objekt in seine Klassenvariablen instantiiert, dann kann eine statische Methode nicht auf diese Variable zugreifen. Wie auch: statische Methoden können gecalled werden, ohne dass die Elternklasse irgendwo instantiiert wurde. Die statische Methode kann grundsätzlich auch nur auf statische Variablen zugreifen.
|
Code: |
<?php
class A {
private $foo;
private static $bar = 'bar';
public function __construct() {
$this->foo = 'foo';
self::$bar = 'lel';
}
public function getFoo() {
return $this->foo;
}
public static function test1() {
return $this->foo;
}
public static function test2() {
return self::$foo;
}
public static function test3() {
return self::$bar;
}
}
$a = new A();
print_r($a->getFoo());
//print_r($a->test1()); // Uncaught Error: Using $this when not in object context
//print_r($a::test1()); // Uncaught Error: Using $this when not in object context
//print_r($a::test2()); // Uncaught Error: Access to undeclared static property
print_r($a::test3()); |
|
Was du vermutlich suchst ist ein Singleton. Ein Singleton wird genau 1x instantiiert, danach wird immer die selbe Instanz zurückgegeben. Genau sowas (oder ähnliches) sollte man z.B. für Datenbanken verwenden.
|
Code: |
<?php
class Singleton {
private static $instance = null;
private $foo;
// Watch out for __clone() and such
private function __construct() {
// Called exactly one time in getInstance()
$this->foo = 'foo';
}
public static function getInstance(): Singleton {
if (self::$instance === null) {
self::$instance = new self;
}
return self::$instance;
}
public function getFoo() {
return $this->foo;
}
}
//$singleton = new Singleton(); // Uncaught Error: Call to private Singleton::__construct()
print_r(Singleton::getInstance()->getFoo()); |
|
Genau so ein Singleton sollte dann z.B. ne Methode getDatabase() haben, in dem das PDO ausgegeben wird. Weiters kannst du dann z.B. bei jedem Query Statement an die Datenbank den Spaß debuggen.
|
[Dieser Beitrag wurde 4 mal editiert; zum letzten Mal von derSenner am 31.08.2017 21:41]
|
|
|
|
|
|
Moin, ich steh n bissl auf dem Schlauch bei einer simplen Rotation:
Wir haben folgende Ausgangssituation:
Ein Smartphone hat eine Kamera. Diese betrachtet ein Objekt. Eine App zeigt drei Linien an, welche bei 25%, 50% und 75% des FOVs der Kamera liegen.
In dem Fall hat die Kamera eine FOV von 56,2°.
Der Nutzer möchte nun das Objekt vom zentralen Strich (50%) auf den rechten Strich (75%) legen. Hierfür wird er das Smartphone drehen. Dabei kann er einerseits die Drehachse in den Mittelpunkt des Smartphones legen, andererseits auch auf Höhe der Kamera.
Des Ganze hab ich natürlich in qualitativ hochwertigen Skizzen dargestellt:
Wie verhält sich die Rotation bei den verschiedenen Rotationsachsen? Ich nehme an, dass wenn man die Achse auf Höhe der Kamera legt, die korrekten 14,05° rausbekommt. Wie berechnet man dann die Abweichung, wenn der Nutzer es über den Mittelpunkt rotiert, angenommen die beiden Achsen seien 4cm weit auseinander?
|
|
|
|
|
|
|
Der Winkel ist der gleiche
|
|
|
|
|
|
|
| Zitat von MCignaz
Ich hab fuer meine Bachelorarbeit ein kleines Tool programmiert, dass auf nem Client-Rechner laeuft, Daten sammelt, und sie ueber ne REST Schnittstelle in eine Datenbank schiebt.
Ich tue mich schwer damit, die Wahl meiner Technologien zu rechtfertigen, wissenschaftlich. Mir wurde empfohlen, einen Ueberblick ueber verfuegbare Technologien zu geben und meine Auswahl dann daraus abzuleiten.
Aber diesen Ueberblick zu bekommen, faellt mir schwer. Vielleicht mach ichs mir auch zu kompliziert. Gebe ich da jetzt nen kurzen Abriss ueber Verteilte Systeme und nenne bestimmte Implementierungen?
| |
Was heisst hier wissenschaftlich? Ich würde halt verschiedene moderne Netzwerkprotokolle / Übertragungsarten vergleichen, Vor- und Nachteile aufzählen und warum du dich dann schlussendlich für HTTP + REST entschieden hast. Was ich so in die Liste nehmen würde: TCP + Protobuf, TCP + Websocket, nackte Berkeley Sockets, sowas halt. Und dann halt mit Overhead, Implementierungsaufwand, Verlust (kein UDP), Erweiterbarkeit argumentieren.
Ich würde daraus nicht so eine grosse Hexerei machen und halt einfach zeigen, dass du dir der Alternativen bewusst bist und eine für das Projekt angemessene Entscheidung gefällt hast. Fertig.
¤: Vielleicht noch einen kurzen Abriss darüber zwischen Datenübertragung und RPC und wo REST da so zu positionieren ist. "Ja, ich habe in der Vorlesung aufgepasst. Danke".
|
[Dieser Beitrag wurde 2 mal editiert; zum letzten Mal von SwissBushIndian am 01.09.2017 11:23]
|
|
|
|
|
|
| Zitat von RichterSkala
Der Winkel ist der gleiche
| |
Wieso?
Vllt. habe ich auch einen Denkfehler - ich versuche das Ding immer solange zu drehen, bis die rechte gestrichelte Linie durch den Mittelpunkt des Rechtecks geht - was zu einem anderen Winkel führt.
Dreht man das Ganze bei verschiedenen Achsen um denselben Winkel, so wird die rechte gestrichelte Linien zwar senkrecht, aber geht nicht durch das Quadrat
|
|
|
|
|
|
|
Wenn du die Aufhängung drehst und du willst das Objekt von 0° wieder in 0° bringen, wie viel musst du dann die Aufhängung drehen? Wie viel, wenn sie an der anderen Achse aufgehangen ist?
|
|
|
|
|
|
|
| Zitat von RichterSkala
Der Winkel ist der gleiche
| |
So wie ich die Frage verstehe, wird der Winkel nicht exakt der gleiche sein: Wird das Smartphone um seinen Mittelpunkt rotiert, ohne eine Translation auszuführen*, ändert sich ja auch die Position der Kamera.
Das Objekt erscheint dann unter dem gleichen Winkel, also an der gleichen Position auf dem Sensor, aber rotiert und in einem anderen Abstand.
Die erste Änderung die ich an der Beschreibung machen würde, ist das Bezugssystem:
- Halte das Smartphone konstant.
- Rotiere das Objekt auf einer Kreisbahn um die Kamera/Den Mittelpunkt des Smartphones.
Suche den Schnittpunkt mit der einer Geraden die im Winkel alpha durch die Kamera läuft.
DaveCAD-Zeichnung folgt.
AB ist das Smartphone. Ob man um den Mittelounkt oder das andere Ende dreht ist ja egal, muss man das Smartphone hält länger/kürzer machen.
C ist das Objekt das ich unter dem gegebenen Winkel sehen möchte, hier habe ich einfach 45° genommen.
Rotiere ich das Objekt auf einer Kreisbahn um die Kamera, sind es natürlich 45°. Rotiere ich es auf einer Kreisbahn um einen anderen Punkt, muss ich da mit irgendwelchen trigonometrischen Funktionen drauf. Den Rest der Hausaufgabe rechne ich aber nicht vor :-p
/e: RichterSkala hat es schon getan :-/
*ansonsten wäre es ja total egal wo man dreht
|
[Dieser Beitrag wurde 3 mal editiert; zum letzten Mal von Rootsquash am 01.09.2017 11:51]
|
|
|
|
|
|
Okay, ich gebe zu, es könnte eine Parallaxe geben, dadurch hast du eine Verschiebung der Kamera um dx=sin(phi)*l1, wobei phi der Winkel der Verdrehung und l1 der Abstand Kamera-Achse ist.
Dafür musst du nachjustieren, der Winkel zu Nachjustierung ist dann theta = arctan(dx/l2), wobei l2 der Abstand Objekt - Kamera am Anfang ist.
*gilt auch nur für kleine Auslenkungen und wenn l2>>l1.
|
[Dieser Beitrag wurde 2 mal editiert; zum letzten Mal von RichterSkala am 01.09.2017 13:03]
|
|
|
|
|
|
Vielen Dank euch beiden für eure Antworten und Tipps, ihr habt mich schon ein ganzes Stück vorwärts gebracht. Ich hab mit den Formeln gespielt und bekomm da auch sinnvolle Werte raus.
Leider versteh ich die Herleitung der Formeln noch nicht so ganz:
Nehmen wir an, bei A wäre die Kamera, bei B der Drehpunkt. Dann wäre die Strecke AB = l1. alpha aus der Skizze entspricht dem phi aus der Gleichung - dem Drehwinkel eben.
x1 beschreibt die Verschiebung der Kamera auf der Kreisbahn. Mit der Gleichung dx=sin(phi)*l1 erhält man die Strecke des Kreissegmentes, um die sich die Kamera dann bewegt.
Wo wäre dann x1 einzuzeichnen? Wenn ich die Gleichung umstelle, lande ich bei sin(phi) = dx/l1. Die Formeln für das Kreissegment helfen mir auch nicht weiter
|
|
|
|
|
|
|
Bei der Drehung um den Mittelpunkt B verschiebt sich die Kamera A in beiden Dimensionen. Wenn mich meine Erinnerungen an die Trigonometrie nicht im Stich lassen, dann müsste das um nach unten und um nach rechts sein (und RichterSkala sich entsprechend irren).
Dieser Fehler lässt sich dann zwar, wie RichterScala sagt, durch eine weitere Drehung ausgleichen, die aber wiederum den Fehler minimal vergrößert.
Also entweder mache ich da dann auch was falsch, oder die Formel, die sich am Ende für diese zusätzliche Korrekturdrehung ergibt, ist durch das Auflösen nach eben jener nicht wirklich "schön handlich"...
|
|
|
|
|
|
|
Ich verfolge die Diskussion ja gerade nur oberflächlich, aber das klingt nach der Frage: "Vor oder NACH viel trigonometrischer Umformungen"? Gibt ja so praktische Dinge wie arctan(sin) und arccos(sin); bei 1-cos alpha kann es z.B. oft sinnvoll sein, sich einen anderen Winkel als Grundlage im Dreieck als alpha zu nehmen.
...kein Mensch kann sie wissen, kein Jäger erschießen.
|
|
|
|
|
|
|
Ic hatte den Ansatz verfolgt, die Position nach der Korrekturdrehung zu betrachten und dann aus dieser den Korrekturwinkel zu berechnen. Nur hängen dann eben viele der verfügbaren Werte und Bezugspunkte direkt von eben diesem Winkel ab. Und die Variable dann alleine auf eine Seite zu bringe... hab's aber auch nicht wirklich konkret versucht, so dass am Ende evtl. sogar Subterme wegfallen oder sich durch andere Ausdrücke vereinfachen ließen.
Am Ende wird es aber wohl eh so aussehen, dass der Fehler und daraus resultierende Korrekturwinkel nicht mehr wirklich signifikant ist.
|
|
|
|
|
|
|
| Zitat von Elkano
Bei der Drehung um den Mittelpunkt B verschiebt sich die Kamera A in beiden Dimensionen. Wenn mich meine Erinnerungen an die Trigonometrie nicht im Stich lassen, dann müsste das um nach unten und um nach rechts sein (und RichterSkala sich entsprechend irren).
Dieser Fehler lässt sich dann zwar, wie RichterScala sagt, durch eine weitere Drehung ausgleichen, die aber wiederum den Fehler minimal vergrößert.
Also entweder mache ich da dann auch was falsch, oder die Formel, die sich am Ende für diese zusätzliche Korrekturdrehung ergibt, ist durch das Auflösen nach eben jener nicht wirklich "schön handlich"... http://abload.de/img/elk_tiltwds2b.gif
| |
Ich hatte das während des ersten Kaffees des Tages geschrieben und die Verschiebung um dy ignoriert, daher die Anmerkung.
|
|
|
|
|
|
|
Ich hatte heute keinen Kaffee, zuviel indisches Essen und es ist spät, ich kann also leider nicht helfen.
DoctorBrain not in today.
Nun, aller höherer Humor fängt damit an, dass man die eigene Person nicht mehr ernst nimmt.
|
|
|
|
|
|
|
| Zitat von derSenner
| Zitat von Lightspeed
Ich habe folgende PHP Situation.
Ich möchte über eine Klasse PDFs als reinen Text umwandeln und per PDO hochladen. Es funktioniert auch an sich alles einwandfrei.
Nur ist die Klasse so aufgebaut, dass der Konstruktor jedes Mal ein neues PDO erstellt.
Über eine statische Methode möchte ich jedoch auf die PDO zugreifen, damit ich jederzeit zu Testzwecken eine Volltextsucche ausführen kann, ohne eine aktive Instanzierung haben zu müssen.
Wie kriege ich den PDO Aufruf statisch hin?
protected static $pdo = new PDO(); geht leider ned.
| |
(Ich nehme mal an, dass du folgendes machen wolltest)
Wenn eine Klasse in Ihrem Konstruktor ein Objekt in seine Klassenvariablen instantiiert, dann kann eine statische Methode nicht auf diese Variable zugreifen. Wie auch: statische Methoden können gecalled werden, ohne dass die Elternklasse irgendwo instantiiert wurde. Die statische Methode kann grundsätzlich auch nur auf statische Variablen zugreifen.
|
Code: |
<?php
class A {
private $foo;
private static $bar = 'bar';
public function __construct() {
$this->foo = 'foo';
self::$bar = 'lel';
}
public function getFoo() {
return $this->foo;
}
public static function test1() {
return $this->foo;
}
public static function test2() {
return self::$foo;
}
public static function test3() {
return self::$bar;
}
}
$a = new A();
print_r($a->getFoo());
//print_r($a->test1()); // Uncaught Error: Using $this when not in object context
//print_r($a::test1()); // Uncaught Error: Using $this when not in object context
//print_r($a::test2()); // Uncaught Error: Access to undeclared static property
print_r($a::test3()); |
|
Was du vermutlich suchst ist ein Singleton. Ein Singleton wird genau 1x instantiiert, danach wird immer die selbe Instanz zurückgegeben. Genau sowas (oder ähnliches) sollte man z.B. für Datenbanken verwenden.
|
Code: |
<?php
class Singleton {
private static $instance = null;
private $foo;
// Watch out for __clone() and such
private function __construct() {
// Called exactly one time in getInstance()
$this->foo = 'foo';
}
public static function getInstance(): Singleton {
if (self::$instance === null) {
self::$instance = new self;
}
return self::$instance;
}
public function getFoo() {
return $this->foo;
}
}
//$singleton = new Singleton(); // Uncaught Error: Call to private Singleton::__construct()
print_r(Singleton::getInstance()->getFoo()); |
|
Genau so ein Singleton sollte dann z.B. ne Methode getDatabase() haben, in dem das PDO ausgegeben wird. Weiters kannst du dann z.B. bei jedem Query Statement an die Datenbank den Spaß debuggen.
| |
Vielen Dank dafür.
Ich werde es nachher mal implementieren.
Ja, davon habe ich schon gehört.
|
|
|
|
|
|
|
Danke an B0rG*
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Xerxes-3.0 am 04.09.2017 17:12]
|
|
|
|
|
|
Gibt's das nicht bei arxiv?
|
|
|
|
|
|
|
Ich meine mich schwach zu erinnern, dass ich vor einiger Zeit hier mal aufgrund einer Frage angefangen habe, von Kosmologie mit weniger/ohne dunkle Energie zu faseln.
Einer der Kiwis, die daran arbeiten, hat mit jemandem jetzt einen halbwegs laienfreundlichen Artikel dazu verfassen.
https://theconversation.com/can-we-ditch-dark-energy-by-better-understanding-general-relativity-76777
Vielleicht hat ja wer was davon.
___________________
Außerdem habe ich jetzt den n-ten Versuch Funktionalanalysis zu lernen, begonnen. Mal sehen, was das diesmal wird. Immerhin weiß ich diesmal, wofür ich das will.
And therefore never send to know for whom the bell tolls; it tolls for thee.
|
|
|
|
|
|
|
|
|
|
|
Wenn ich zeigen möchte, dass das orthogonale Komplement einer beliebigen Menge M in einem Hilbertraum (topologisch) abgeschlossen ist, ist das folgende richtig:
Das Skalarprodukt ist in beiden Argumenten stetig, die Definition des orthogonalen Komplementes definiert also eine Funktion , die im ersten Argument stetig sein wird. {0} ist abgeschlossen im Bild, also ist das Urbild davon auch abgeschlossen. Fertig.
Richtig so? Ich glaube bei ansatzweise topologischen Argumenten irgendwie nie, es selbst zu können.
KENNEN SIE DIESEN PINGUIN?
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Wraith of Seth am 05.09.2017 0:41]
|
|
|
|
|
|
| Zitat von Wraith of Seth
eine Funktion
| |
Kannst Du diese Funktion konkret hinschreiben?
|
|
|
|
|
|
|
Muss ich das? Ok, streng genommen wird das Ding nur für exakt das orthogonale Komplement einen wirklichen Wert haben, aber den gleichen Gehalt hätte es, wenn ich mir über die Distanzfunktion und damit über das Skalarprodukt einen Projektor konstruiere, der wiederum die nötige Stetigkeit hätte.
DON'T PANIC
|
[Dieser Beitrag wurde 2 mal editiert; zum letzten Mal von Wraith of Seth am 05.09.2017 2:26]
|
|
|
|
|
|
Okay, anders gefragt: wie definierst Du (x,M)? (Und für welche x?)
Falls die Funktion nicht auf dem gesamten Raum definiert ist, kannst Du damit nicht die Abgeschlossenheit eines Urbildes begründen.
|
|
|
|
|
|
|
...natürlich ist das Skalarprodukt (und damit jeder Projektor auf M oder M^\perp) des Hilbertraums auf dem gesamten Hilbertraum definiert.
Yes Boo, I agree. This group could do with a swift kick in the morals.
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Wraith of Seth am 05.09.2017 4:51]
|
|
|
|
|
|
Also kannst Du (x,M) für jedes x einen Wert zuordnen? Welchen?
Wenn Du nur das Skalarprodukt verwenden möchtest ist dieser Ausdruck mehrdeutig...
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Virtus am 05.09.2017 5:16]
|
|
|
|
|
|
Für alle M gibt es ein eindeutig definiertes v, sodass ||h-v||=dist(h,M) ist. v=Ph definiert eine lineare, stetige Abbildung auf ganz H. P ist die Projektion auf M. 1-P die Projektion auf M^\perp, ist also auch ganz auf H definiert, stetig und bla. Damit ist also insbesondere (1-P)^{-1}({0}) abgeschlossen.
Also was ich oben zu faul war auszuschreiben. Dass (.,M) nicht auf ganz H eindeutig ist, habe ich ja selbst geschrieben. DAs war mehr "rein formale Shorthand".
Time to add a few more Galileo's, darlings.
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Wraith of Seth am 05.09.2017 5:56]
|
|
|
|
|
|
Weiter geht's mit meiner Unfähigkeit zu selbstständigem Denken.
Ok, Netzkonvergenz einer Reihe impliziert Normkonvergenz, aber nicht umgekehrt. Soweit kann ich das noch nachverfolgen. Ist Netzkonvergenz einer Reihe dann äquivalent zu absoluter Konvergenz der Reihe? Insbesondere im Fall von Hilberträumen.
|
|
|
|
|
|
|
Mathe-Request:
Wenn ich von einem Wert einen Prozentsatz abziehe, brauche ich bekanntlich mehr als diesen Prozentsatz, um wieder auf den ursprünglichen Wert zurück zu kommen.
Offensichtlich verhält sich die Funktion (%Abzug -> %nötigFür100) exponentiell. Was mich jetzt aber wundert ist, dass diese Funktion nicht auf etwas knackig-kurzes fitted. Ich habe Wolfram Alpha mit Tupeln beworfen und unter Kurven aller Coleur nichts bekommen, was ansatzweise handlich gewesen wäre. Der exponentielle Fit ist ganz gut, hat aber auch ganz schön viele Nachkommastellen bei den Koeffizienten.
Und genau das wundert mich. Sollte ein so profanes, greifbares Verhältnis wie dieses hier, gerade mal definiert von 0 bis 99,9(9..) und lediglich auf Division zweier Werte beruhend, nicht sehr, sehr viel handlicher ausgedrückt werden können? Ist dahinter nicht irgendwo ein simples someConst*e^x oder von mir aus ein "lol, das ist die Potrick'sche Funktion" mit tollem kalligraphischem Symbol?
|
|
|
|
|
|
Thema: pOT-lnformatik, Mathematik, Physik XXI ( X-Ray-Edition ) |