Unique86
-
Gesamte Inhalte
50 -
Benutzer seit
-
Letzter Besuch
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Beiträge von Unique86
-
-
In PHP gilt die folgende Regel:
Abstrakte Klassen, die von Abstrakten Klassen erben, müssen die Member der Vaterklasse überschreiben, und nicht Überladen.
Da Interfaces in PHP "Under the Hood" abstrakte Klassen sind, müsste Deine Implementierung des Interfaces so aussehen (nicht getestet !):
abstract class BaseDatabaseConnector implements IDatabaseConnector { protected $_isConnected = false; protected $_connection = null; [B]abstract public function openConnection(); abstract public function closeConnection();[/B] public function getConnection() { return $this->_connection; } public function isConnected() { return $this->_isConnected; } }
Hallo,
erstmal vielen Dank für Deine Antwort.
Mir ist die Nacht dieses Thema über den Weg gelaufen, in der die gleiche Thematik besprochen wird: PHP Bugs: #41145: Interface, Abstract Class & Methods
Ist wohl bekannt aber wird wohl nie geändert werden.
Hab mir nen work-around gebastelt - das Thema kann als gegenstandslos betrachtet werden. Danke ....
Gruß Sven
-
Hallo Zusammen,
ich hab nen Problem mit dem OOP Model in der PHP Version 5.2.4.
Ich bin z.Z. dabei ein Framework zu entwicklen uns stoße nach der Konzeption meines Objektmodels auf Probleme bei der Realisierung.
Es geht primär um ein Paket das sich um die Datenbankverbindung kümmert.
Hierzu habe ich, um möglichst Datenbankunabhängig zu bleiben, ein Interface, eine abstrakte Klasse und zur Zeit zwei konkrete Klassen entwickelt.
Ich habe die Kommentare der übersichthalber rausgenommen.
Das Interface
IDatabaseConnector.class.php
interface IDatabaseConnector
{
public function openConnection();
public function closeConnection();
public function getConnection();
public function isConnected();
}
[/php]Die Basisklasse (abstrakte Klasse), die das Interface implementiert
BaseDatabaseConnector.class.php
[php]
abstract class BaseDatabaseConnector implements IDatabaseConnector
{
protected $_isConnected = false;
protected $_connection = null;
abstract protected function openConnection();
abstract protected function closeConnection();
public function getConnection()
{
return $this->_connection;
}
public function isConnected()
{
return $this->_isConnected;
}
}Und zu guter Letzt, die konkrete Klasse für die Verbindung zu einer MySQL Datenbank.
Ich habe die zweite Klasse für die Verbindung zur PostGres mal ausgelassen.
Sie erbt von der Basisklasse
MySQLConnector.class.php
class MySQLConnector extends BaseDatabaseConnector
{
public function openConnection()
{
// doit
}
public function closeConnection()
{
// doit
}
}
[/php]Die Methoden sind natürlich implementiert und beinhalten die dementsprechende Logik.
Jetzt bekomme ich während des Interpretiervorgangs folgende Fehlermeldung beim debuggen ...
Zeile 49 - ist die Definition der Basisklasse: abstract class BaseDatabaseConnector implements IDatabaseConnectorKompilierungsfehler: [...]\source\de\svenbartak\database\BaseDatabaseConnector.class.php Zeile 49 - Can't inherit abstract function IDatabaseConnector::openConnection() (previously declared abstract in BaseDatabaseConnector)Jetzt meine Fragen:
1) Wie kommt dieser Fehler zustande?
2) Wenn das so nicht funktion, wie kann man es dann realisieren?
Dazu sei gesagt das ich sehr Fit im objektorientierten Bereich bin und auch die Prinzipien verstehe.
Des weiteren sei gesagt das, dass o.g. Beispiel so wie es da steht, portiert in Java, funktioniert.
Bitte keine Verweise auf PEAR o. ähnliche Extensions ...
Vielen Dank und ich hoffe es kann mir jemand helfen ...
Gruß Sven
-
das ist lieb, nur wie gesagt, gelesen habe ich schon viel..
ich brauch nen ansenliches (ausführbares) beispiel....
bin dann nen bissl komplziert, verstehe das dann einfach besser
aber trotzdem danke schön
Hi,
da ist doch nen ausführliches und kommentiertes Beispiel, sogar Hello World, dabei !
Gruß Sven
-
Hi,
schau in diesem Zusammenhang doch auch mal nach SOAP und JWS.
Vielleicht ist auch das nützlich: SOAP (Simple Object Access Protocol) mit Java
Gruß Sven
-
Hi,
sauber solche Statistiken sind echt hilfreich.
Ich danke Dir ...
Hat mir weitergeholfen ...
Gruß
-
-
Hallo zusammen,
ich habe auch mal eine Frage zur Gehaltsvorstellung.
Bin nun auch fast fertig mit meiner Ausbildung zum Fachinformatiker AE und gehe noch nebenbei einem FernUni Studium (Informatik) nach.
Aber hier erstmal mein Profil.
Alter
21
Wohnort
Holzwickede
letzter Ausbildungsabschluss (als was und wann)
- staatlich geprüfter Info. Technischer Assistent (3 Jahre) FHR
Berufserfahrung
- inkl. Ausbildungszeit 3,5 Jahre (halbes Jahr Praktikum ITA s.o. / 3 Jahre FIAE)
Vorbildung
- staatlich geprüfter Info. Technischer Assistent (3 Jahre) FHR
Arbeitsort
Herdecke
Grösse der Firma
52 Mitarbeiter am Standort - insgesammt rund 400 Mitarbeiter
Tarif
?
Branche der Firma
Softwareentwicklung / Softwaremanagement
Arbeitsstunden pro Woche
40
Gesamtjahresbrutto
~ 10.000 Brutto (Ausbildungsgehalt drittes Lehrjahr)
Anzahl der Monatsgehälter
12
Anzahl der Urlaubstage
27
Sonder- / Sozialleistungen
Beteiligungen je nach Gewinn
Tätigkeiten (Aufgaben/Aufgabenbereich)
- Softwareentwicklung Java
- Softwareentwicklung .NET
- Projektplanung
Hoffe ihr könnt mir da helfen ... will auch nicht am Anfang zu hoch pokern ...
Gruss
- Softwareentwicklung Java
-
Als ich mal Probleme mit der Auslastung meines Root Servers hatte , half ein Wechsel vom Apache zu Lighttpd. Allerdings war bei mir das Problem nicht in den Skripten selber begründet sondern in der Menge der Zugriffe. Da bei dir ja nur einzelne Seiten Probleme machen würde ich sagen überprüfe als erstes deine Indizes sowie die jeweiligen Skripte.
Auch den schnellsten Server bekommt man mit schlechtem Coding ganz schnell in die Knie.
Hallo,
ja genau das war mein Problem, habe den Sourcecode und die Abfragen um ca. 50% minimieren können. Zudem sind einige Abfragen
SELECT * FROM
durchSELECT id FROM
ersetzt worden. Die Ladezeiten haben sich drastisch verringert. Vielen Dank für den Tip
Gruß´Sven
-
Hallo,
neben den veralteten Ständen der Dienste, ist mir auch immer aufgefallen, falls eigene Scripte laufen, dass hier z.B. SQL Statements häufig sehr unperformant formuliert werden:
- "select * from" wenn nur ein Feld verwendet wird
- $result = select * from
while (..)
select * from tabelle where a = $result[feld] - Blobs werden innerhalb der Datenbank abgelegt
Bitte wirklich mal schauen, wo zuviel Zeit für die Ausführung verloren geht. Oft sind es nicht die Konfigurationen, sondern die eigene Programmierung.
HTH Phil
Hallo Phil,
daran habe ich auch schon gedacht, weil andere Seiten wesentlich schneller laufen, die auf dem selben Server liegen.
Gruß Sven
- "select * from" wenn nur ein Feld verwendet wird
-
Hi,
also hier ist mal die Liste.
Compiled in modules:
- core.c
- prefork.c
- http_core.c
- mod_so.c
Als Scriptsprache wird php5 genutzt.
Kann ich denn MySQL und den Apache auf den aktuellesten Stand bringen, ohne das ich Datenverluste zu verzeichnen habe ?!
Gruß Sven
- core.c
-
schaut soweit ja nicht schlecht aus - allerdings ist dein MySQL-release über 2 1/2 jahre alt. sprechen gründe gegen ein upgrade auf 4.1.22?
du kannst dem MySQL-server angeben, dass long queries geloggt werden - das steht auch im tuning primer drin.
ist der MySQL direkt in den apachen eingebunden oder läuft das über ein apache-modul wie z.b. PHP? welche version vom apachen setzt du ein?
s'Amstel
Hallo Amstel,
erstmal vielen Dank für die Antwort auf diese Thematik.
Grundsätzlich spricht nichts gegen ein Upgrade auf eine neueres MySQL Release, sofern alles weiterhin funktioniert.
Soweit ich weiß, ist der MySQL direkt in den Apache eingebunden (habe den Rootserver übernommen) wo finde ich dementsprechende Informationen?
Die Version des Apache 2.0.54 ...
-
Hallo zusammen,
ich brauche mal hilfe ... ich habe nen relativ schmalen Rootserver und möchte diesen effektiver nutzen. Zur Zeit brauchen div. Seiten ca. 50 Sekunden zum laden und das ist schlicht weg nicht akzeptabel.
Hier die Daten des Servers:
- AMD Athlon64 3200+
- 1024 MB RAM
- 2 x 80 GB
Ich habe mal den MySQL Performance Tuning Primer durchlaufen lassen, dieser spukt mir folgendes aus.
-- MYSQL PERFORMANCE TUNING PRIMER --
- By: Matthew Montgomery -
MySQL Version 4.1.13 x86_64
Uptime = 5 days 1 hrs 25 min 29 sec
Avg. qps = 12
Total Questions = 5381333
Threads Connected = 20
Server has been running for over 48hrs.
It should be safe to follow these recommendations
To find out more information on how each of these
runtime variables effects performance visit:
MySQL AB :: MySQL 3.23, 4.0, 4.1 Reference Manual :: 5.2.3 System Variables
Visit MySQL AB :: MySQL Enterprise Advisors
for info about MySQL's Enterprise Monitoring and Advisory Service
SLOW QUERIES
Current long_query_time = 10 sec.
You have 4692 out of 5381439 that take longer than 10 sec. to complete
The slow query log is NOT enabled.
Your long_query_time may be too high, I typically set this under 5 sec.
WORKER THREADS
Current thread_cache_size = 0
Current threads_cached = 0
Current threads_per_sec = 1
Historic threads_per_sec = 0
Your thread_cache_size is fine
MAX CONNECTIONS
Current max_connections = 100
Current threads_connected = 20
Historic max_used_connections = 51
The number of used connections is 51% of the configured maximum.
Your max_connections variable seems to be fine.
MEMORY USAGE
Max Memory Ever Allocated : 105 M
Configured Max Per-thread Buffers : 155 M
Configured Max Global Buffers : 26 M
Configured Max Memory Limit : 181 M
Physical Memory : 1000.81 M
Max memory limit seem to be within acceptable norms
KEY BUFFER
Current MyISAM index space = 34 M
Current key_buffer_size = 16 M
Key cache miss rate is 1 : 4326
Key buffer fill ratio = 4.00 %
Your key_buffer_size seems to be too high.
Perhaps you can use these resources elsewhere
QUERY CACHE
Query cache is supported but not enabled
Perhaps you should set the query_cache_size
SORT OPERATIONS
Current sort_buffer_size = 512 K
Current record/read_rnd_buffer_size = 508 K
Sort buffer seems to be fine
JOINS
Current join_buffer_size = 132.00 K
You have had 14143 queries where a join could not use an index properly
You should enable "log-queries-not-using-indexes"
Then look for non indexed joins in the slow query log.
If you are unable to optimize your queries you may want to increase your
join_buffer_size to accommodate larger joins in one pass.
Note! This script will still suggest raising the join_buffer_size when
ANY joins not using indexes are found.
OPEN FILES LIMIT
Current open_files_limit = 1024 files
The open_files_limit should typically be set to at least 2x-3x
that of table_cache if you have heavy MyISAM usage.
Your open_files_limit value seems to be fine
TABLE CACHE
Current table_cache value = 64 tables
You have a total of 1227 tables
You have 64 open tables.
Current table_cache hit rate is 0%, while 100% of your table cache is in use
You should probably increase your table_cache
TEMP TABLES
Current max_heap_table_size = 16 M
Current tmp_table_size = 32 M
Of 130989 temp tables, 1% were created on disk
Effective in-memory tmp_table_size is limited to max_heap_table_size.
Created disk tmp tables ratio seems fine
TABLE SCANS
Current read_buffer_size = 252 K
Current table scan ratio = 752 : 1
read_buffer_size seems to be fine
TABLE LOCKING
Current Lock Wait ratio = 1 : 1126
You may benefit from selective use of InnoDB.
If you have long running SELECT's against MyISAM tables and perform
frequent updates consider setting 'low_priority_updates=1'
Dahingehend würde ich gerne wissen, was für meine Maschine so die "optimalen" Werte wären. Das selbe für den Apache ...
Über eine Antwort würde ich mich sehr freuen
Gruß Sven
- AMD Athlon64 3200+
-
Hi,
schau mal hier ...
devblog.de » Tutorial: Shoutbox als AJAX-Anwendung
Du müsstest das ganze nur noch auf Deine gewünschte, textbasierende Lösung, umbauen.
Gruß Sven
-
Hi,
schau mal hier : SELFHTML: JavaScript / Objektreferenz / window
Da wirst Du fündig ...
Beachten Sie:
Unter Opera, Konqueror und Safari können Sie die Eigenschaft innerHeight nur auslesen, jedoch nicht setzen.
Im Internet Explorer können Sie mit document.body.clientHeight die innere Fensterhöhe bestimmen. Wenn Sie eine Seite Dokumenttyp-Deklaration einsetzen, die im Internet Explorer 6 den Seite standardkonformen Modus auslöst, müssen Sie document.documentElement.clientHeight statt document.body.clientHeight verwenden. Zu diesem Zeitpunkt muss jedoch das body- bzw. html-Element bereits vorhanden sein, d.h. es ist sinnvoll, die Ermittlung dieser Eigenschaften vom Event-Handler Seite onload abhängig zu machen.
Ein fertiges Script zum Auslesen der Größe des Anzeigebereichs des Fensters, das alle Browser und Anzeigemodi berücksichtigt, finden Sie auf englischsprachige Seite quirksmode.org.
Gruß Sven
-
Ich hab imo nurn Design vorzuweisen und bin AE -.-
svenbartak | Fresh Ideas, Webdesign & more - www.svenbartak.de
Die Problematik ist, das ich wenig Zeit habe die Geschäftslogik dahinter zu setzen...
-
Hallo leute,
ich suche ne Api ( am besten 4 free ) um mit Cpp ne Bluetooth connection herzustellen über einen Usb Dongle.
Hat jemand ne Idee o. schonmal sowas gemacht ?!
Gruss
-
Habs jetzt mit folgender Methode gelöst
private void setAttributeTableData(Vector vector, int breakPoint) { int row = 0; int column = 0; tblModAttributes.setRowCount(vector.size() / breakPoint); for(int i=0; i<vector.size(); i++) { tblModAttributes.setValueAt(vector.get(i),row,column); column++; if(i%breakPoint-1 == 0) { row++; column=0; } } }
ich übergebe einen breakPoint z.B. 2 so sage ich nach 2 feldern, bitte ins nächste springen ... ist vllt. nicht schön, aber geht
gruss sven
-
Moin Jungs,
ich weiß einfach nicht mehr weiter -.-
Folgendes ... ich habe ne JTable mit nem DefaultTableModel ...
meine Tabelle soll hinterher dynamisch aus einem Vector erstellt werden der Vector ist wiefolgt aufgebaut ..
Vector vec = new Vector(); vec.add("A"); vec.add("A1"); vec.add("B"); vec.add("B1"); vec.add("C"); vec.add("C1");
Also A gehört quasi zu A1 :? die Tabelle soll dann dynamisch wie folgt aufgebaut werden |----------------------------------------| |Attribute A,B,C || Attribute A1,B1,C1| ------------------------------------------ | A || A1 | B || B1 | C || C1 ... .. . ich weiß nicht, wie ich das hinbekomme - ich sitze schon Stunden an der sch**** Das Problem, was sich bei mir ergab wenn ich den Vector einfach in die MethodeaddRow()
gepackt habe, das nur A und A1 ausgegeben wurden ...
Vllt hat einer rat ...
Gruss der Onkel
-
Meiner Meinung nach gar nicht, bzw. mir würde da jetzt nichts einfallen.
Leg doch einfach für jedes ein Tooltip drüber, somit bist du aufjedenfall auf der sicheren Seite.
-
Problem hat sich gelöst ...
<script language="JavaScript" type="text/javascript">
function makeForm(val) {
document.getElementById("hassenichtgesehen").innerHTML = '<input type="text" name="bla" value="'+val+'" size="25" maxlenght="60">';
}
</script>
<span ondblclick="javascript:makeForm('Bla Bla Bla');">Bla Bla Bla</span>
[/html] -
Mahlzeit,
Ich zerbereche mir die ganze Zeit schon den Kopf wie ich am besten folgendes Lösen könnte.
Angenommen ich habe eine div
<div id="hassenichtgesehen">Inhalt</div>
nun soll es so sein das<div id="hassenichtgesehen" ondblclick="javascript:makeToForm(1);">Inhalt</div>
Der Inhalt zu<div id="hassenichtgesehen" ondblclick="javascript:makeToForm(1);"><input type="text" name="bla" value="Inhalt"></div>
wird. Ich brauche quasi einen Ansatz für die Funktionfunction makeToForum(inp) { // Funktionalitaet }
Ich habe keinerlei Ahnung wie ich das realisieren soll
Vllt. hat ja einer eine Idee wäre sehr dankbar
-
Kein Thema ...
Gruss Sven
-
Hey
du kannst das Array nicht direkt via GET übertragen, da GET nur einen String verarbeiten kann ...
Ich würde es jetzt einfach so lösen ...
aufruf.php
<?php
$arrayTest = array();
$arrayTest[0] = 50;
$arrayTest[1] = 60;
$arrayTest[2] = 70;
$arrayTest[3] = 80;
$array = implode(",",$arrayTest);
echo '<img src="img.test.php?a='.$array.'">';
?>
[/PHP]img.test.php
[PHP]
<?php
$array = explode(",",$_GET['a']);
$datay3=array($array [0],$array [1],$array [2],$array [3]);
?>Vllt. gibt es noch bessere möglichkeiten aber denke damit sei dir schon etwas geholfen ...
Gruss Sven
-
HTML ist auch eine Dokumentenbeschreibungssprache... und CSS nur eine Erweiterung zu HTML (deklarative Stylesheet-Sprache). Das hat mit programmieren auch nix zu tun.
HTML programmiert man nicht!
Ist ja mein reden ... ich wollte ja auf was bestimmtes hinaus, wenn du den Post genau liest
Suche Prüfungen/Lösungen (8)
in Prüfungsaufgaben und -lösungen
Geschrieben
Würde mir jemand alte Abschlussprüfungen für FI-Anwendungsentwicklung bereitstellen? Das wäre wunderbar.
Am besten die letzen zwei o. drei Jahre.
Vielen Dank im Voraus.
Gruß Sven