|
You last visited: Today at 23:04
Advertisement
SHPS CORE Released
Discussion on SHPS CORE Released within the Coding Releases forum part of the Coders Den category.
11/17/2013, 06:41
|
#1
|
elite*gold: 1329
Join Date: Jun 2009
Posts: 1,873
Received Thanks: 960
|
SHPS CORE Released
An alle nicht-Englisch Sprecher: Tut mir leid, im Moment sind alle Texte nur auf Englisch verfügbar.
Ihr dürft mir gerne jederzeit übersetzte Texte zuschicken, damit ich das ganze mehrsprachig machen kann.
Finally. My Homepage Management System (at the moment more of a Content Management Framework) is releasable!
At the moment, only PHP is supported.
Development time until now: 2+ years
Works great on BSD/Linux + NGINX + PHP5.4 + MariaDB5.5
Least PHP version: 5.3
What does this wonderful piece of script do? Well, first of all it guides you as a homepage developer to a clean solution with a good overview, easily manageable and with a lot of premade functionalities, like a user management with registration, login, permissions and so on.
Planned for the future is the abiolity to write code once and role it out on any interpreter (PHP or Node.JS or LUVIT or...) and any SQL(MariaDB, OracleDB,...) or NoSQL(MongoDB, CouchDB,...) database supported as well as optimize the whole code and cache it with as much static content as possible for a most performant experience with least resource needs.
At the moment, this glorious system is only a CORE version (no GUI). An administrative GUI will be delivered at a later time. For now, a database editor, like phpMyAdmin, will be needed to generate a homepage.
The following sites are being built on SHPS:
- Skellods HP - Game Development (  )
- RRated HP - Fashion Platform (  )
- Kurai Subs HP - Anime Sub Group (  )
Join their league! Create your site with SHPS in a considerably shorter time than with any other approach!
The beta was tested with many different sites. Unfortunately, I cannot post them all here. And since I do not want to decide which one to leave out, I'll just let it be.
To get the latest version, download the system from the following site:
A complete list of features and many tutorials can be found here:
 (at least they will be published in that forum...)
A Doxygen documentation can be found on the following site:
|
|
|
11/17/2013, 11:50
|
#2
|
elite*gold: 0
Join Date: Feb 2013
Posts: 1,137
Received Thanks: 869
|
Such dir eine der vielen existierenden, von Anwälten geprüften Lizenzen heraus, unter welcher du deine Software veröffentlichst (sofern du noch 3rd-party Libs benutzt, erstmal deren Lizenz beachten!).
Zu deinem Code selber kann ich nix sagen, da ich gerade keine Möglichkeit dazu hab.
Falls der Release aber wirklich so 1337 ist, wie es deine Threadaufmachung vorgaukelt und jeder scharf darauf ist, wird deine Lizenz auseinandergenommen wie eine Weihnachtsgans und jede Firma wird das Ding benutzen, ohne dass du auch nur einen Cent sehen wirst.
|
|
|
11/17/2013, 15:37
|
#3
|
elite*gold: 1329
Join Date: Jun 2009
Posts: 1,873
Received Thanks: 960
|
Joa, das hab ich vor, vielen Dank für den Einwurf!
Ich benutze keine 3rd Party Libs.
Ich freue mich auf dein Feedback!
|
|
|
11/17/2013, 16:13
|
#4
|
elite*gold: 0
Join Date: Jan 2012
Posts: 759
Received Thanks: 416
|
Du kommentierst deine Klassen irgendwie ... schlecht?
Code:
/**
* API
*
* This file is part of the Skellods Homepage System
* Distribution without licence is prohibited!
*
* [...]
*/
class api
Ja, dass eine Klasse, die "api" heißt, irgendeine API ist - dazu braucht es keinen Kommentar. Trotzdem bekomme ich dadurch aber keine Idee, wozu genau diese Klasse jetzt da ist, solche Kommentare kann man sich eigentlich sparen ...
In welchen rechtlichen Rahmen ich diese Klasse benutzen darf interessiert mich, wenn ich die API-Doku aufschlage, auch nur wenig.
Du sagst, dass PHP 5.3 vorausgesetzt wird, nutzt aber keine namespace: Wieso?
autoload könntest du auch nutzen. Beginen Klassennamen nach Konvention nicht mit einem großen Buchstaben (SHPS_Scheduler statt SHPS_scheduler)?
Inwiefern profitiere ich davon, dein Framework anstatt beispielsweise Symfony 2 zu nutzen?
|
|
|
11/17/2013, 16:38
|
#5
|
elite*gold: 1329
Join Date: Jun 2009
Posts: 1,873
Received Thanks: 960
|
API ist nicht enthalten. Sie hat also nicht mal minimal Dokumentation. Alle enthaltenen Klassen haben zumindest eine kleine Beschreibung. In erster Linie war mir wichtig, dass das ganze funktioniert. Ein großteil der Namen sollte selbsterklärend sein, und ich füge auch noch entsprechende Beispiele und Tutorials hinzu.
Als das Projekt anfing, habe ich PHP 5.1 verwendet. Alles nur für Namespaces umzuschreiben hielt ich für sehr viel Arbeit mit keinem großen Gewinn. Ich habe einige Funktionen (z.B. Closures) eingesetzt, die erst ab 5.3 vorhanden sind.
Autoload wird nicht funktionieren, da ich nicht immer eine Klasse pro Datei habe. Ein durcheinander ist für mich nicht wünschenswert.
SHPS ist ein vollkommen anderer Ansatz als Symfony und damit unvergleichbar.
SHPS setzt stark darauf, dem Entwickler so viel wie möglich abzunehmen. Ein Entwickler muss, um mit SHPS entwicklen zu können, nur minimal PHP beherrschen. Es reicht zu wissen, wie man die statischen Methoden aufruft.
Es müssen insgesamt nur kleine Scripte für kleine Probleme geschrieben werden, um das große Problem zu beheben (aber darum muss sich der Entwickler kaum kümmern). Die Aufteilung des großen Problems ist bei dem Layout von SHPS schon fast fertig vorgenommen. Es reicht ein logisches Auffüllen.
Dadurch, dass es nur kleine Problemlösungen gibt, hat man eine sehr gute Übersicht, was der jeweilige Schnipsel tut. Beziehungen zwischen den einzelnen Schnipseln mögen zwar nicht unmittelbar klar sein, aber meiner Meinung nach doch wesentlich schöner, als ein Framework, wie Synfony, das macht, da die Beziehungen sehr einfach nachzuverfolgen sind, wenn man beim Ausgangstemplate beginnt.
|
|
|
11/21/2013, 01:30
|
#6
|
elite*gold: 1329
Join Date: Jun 2009
Posts: 1,873
Received Thanks: 960
|
Hier ein Real Life Beispiel!
Die Seite RRated besaß einen fertigen HTML Quelltext für die Startseite (nur Layout und Design, keine Funktionen inbegriffen).
Wer die Seite besucht hat, wurde bisher von einem Durcheinander enttäuscht. Das lag daran, dass die der Quelltext nur in ein Content Feld eingefügt wurde, ohne weitere Maßnahmen zu ergreifen.
Um die Seite nun aber richtig nutzen zu können, war es nur von Nöten,
- Die Bilder in das System einzutragen
- CSS zu übertragen
- weitere includes (CSS und JS) zu setzen
Dies dauerte nur eine halbe Stunde.
Die Seite ist nun in der Lage,
- User Login zu verarbeiten
- Auf verschiedene Sprachen umzuschalten (vorausgesetzt sie sind eingetragen)
- Berechtigungen zu prüfen
Und das alles obwohl so gut wie kein PHP verwendet wurde. um genau zu sein werde in den Templates nichts weiter als vereinzelt 3 der SHPS Funktionen immer wieder aufgerufen.
SHPS_CL::getResourceURL()
SHPS_CL::makeHyperlink()
SHPS_lang::getString()
Man darf nicht vergessen, dass sämtliche CSS Regeln nun sauber ordentlich und filterbar aufgeschrieben sind und einzelne Teile der Seite wiederverwendbar.
|
|
|
11/30/2013, 18:21
|
#7
|
elite*gold: 1329
Join Date: Jun 2009
Posts: 1,873
Received Thanks: 960
|
Update 1 uploaded.
How2 Update:
Delete all files in folder /system/core and place the new files from the archive in there.
Also replace the file /SkellodsHPSys.php
Changes:
Code:
- solved login problem
- solved problem loading plugins
- solved problem with XAMPP Pear
- repaired MySQL import file
- solved smaller bugs
|
|
|
01/18/2014, 02:31
|
#8
|
elite*gold: 1329
Join Date: Jun 2009
Posts: 1,873
Received Thanks: 960
|
Update 2 uploaded.
Several changes have been made. Please see  for updated function descriptions.
At the moment, I am looking for someone who is able to help me further improve SHPS. Please take a look at  .
How2 Update
Delete all files in folder /system/core and place the new files from the archive in there.
Also replace the file /SkellodsHPSys.php and /index.php
Delete /system/plugins/PluginAPI.php and replace /system/plugins/template with the new file from the archive
Please import the SQL update file for your database in your table. Before doing so, edit the prefix variable inside the update script (default is "HP_").
Changes:
Code:
- implemented correct namespace behaviour
- added extended namespace support
- reworked parts of the database
- improved plugin system
- added native CoffeeScript (ClientSide and only if Coffee-Interpreter is included)
- improved security by dropping SuperGlobal usage and support (use ::getSG() or ::issetSG() with filter instead)
- solved smaller bugs
Apart from those changes, I have started working on support for NoSQL (MongoDB) and the Node.JS variant as well as a GUI.
For now, the Admin Panel will be implemented by using a GUI plugin, which will be a standardized GUI-host for all plugins enabling the possibility to just insert a component into a list in the GUI plugin.
|
|
|
04/01/2014, 00:31
|
#9
|
elite*gold: 1329
Join Date: Jun 2009
Posts: 1,873
Received Thanks: 960
|
I received feedback about the SQL system. It would be overcomplicated and too hard to read.
So I took a look around and came up with the following solutions. Please tell me, which one you would like to see in the next update. 1, 2 or both? Or a complete different idea?
PHP Code:
$sql = SHPS_sql::newSQL();
$inctbl = $sql->openTable('include'); $fttbl = $sql->openTable('fileType');
$r = '';
$cols = array( new SHPS_sql_colspec($inctbl,'file') );
$conditions = $sql->makeConditions() ->equal(new SHPS_sql_colspec($inctbl,'type'), new SHPS_sql_colspec($fttbl,'ID')) ->and() ->equal(new SHPS_sql_colspec($fttbl,'type'), 'js');
$sql->readTables($cols, $conditions); while(($row = $sql->fetchRow())) { $r .= file_get_contents(SHPS_main::getDir('pool') . $row->getValue('file')) . ' '; }
$sql->free();
or:
PHP Code:
$sql = SHPS_sql::newSQL();
$inctbl = $sql->openTable('include'); $fttbl = $sql->openTable('fileType');
$r = '';
$sql->makeQuery() ->get(new SHPS_sql_colspec($inctbl,'file')/* ,... */ ) ->fulfilling() ->equal(new SHPS_sql_colspec($inctbl,'type'), new SHPS_sql_colspec($fttbl,'ID')) ->and() ->equal(new SHPS_sql_colspec($fttbl,'type'), 'js') ->execute();
while(($row = $sql->fetchRow())) { $r .= file_get_contents(SHPS_main::getDir('pool') . $row->getValue('file')) . ' '; }
$sql->free();
PHP Code:
$sql = SHPS_sql::newSQL();
$inctbl = $sql->openTable('include'); $fttbl = $sql->openTable('fileType');
$r = '';
$cols = array( new SHPS_sql_colspec($inctbl,'file') );
$conditions = new SHPS_sql_condition( new SHPS_sql_condition( new SHPS_sql_colspec($inctbl,'type'), SHPS_SQL_RELATION_EQUAL, new SHPS_sql_colspec($fttbl,'ID') ), SHPS_SQL_RELATION_AND, new SHPS_sql_condition( new SHPS_sql_colspec($fttbl,'type'), SHPS_SQL_RELATION_EQUAL, 'js' ) );
$sql->readTables($cols, $conditions); while(($row = $sql->fetchRow())) { $r .= file_get_contents(SHPS_main::getDir('pool') . $row->getValue('file')) . ' '; }
$sql->free();
All functions needed will be added (UPDATE, DELETE, ALTER, ...)
|
|
|
04/01/2014, 14:11
|
#10
|
elite*gold: 25
Join Date: Sep 2011
Posts: 5,536
Received Thanks: 1,266
|
Quote:
Originally Posted by マルコ
API ist nicht enthalten. Sie hat also nicht mal minimal Dokumentation. Alle enthaltenen Klassen haben zumindest eine kleine Beschreibung. In erster Linie war mir wichtig, dass das ganze funktioniert. Ein großteil der Namen sollte selbsterklärend sein, und ich füge auch noch entsprechende Beispiele und Tutorials hinzu.
Als das Projekt anfing, habe ich PHP 5.1 verwendet. Alles nur für Namespaces umzuschreiben hielt ich für sehr viel Arbeit mit keinem großen Gewinn. Ich habe einige Funktionen (z.B. Closures) eingesetzt, die erst ab 5.3 vorhanden sind.
Autoload wird nicht funktionieren, da ich nicht immer eine Klasse pro Datei habe. Ein durcheinander ist für mich nicht wünschenswert.
SHPS ist ein vollkommen anderer Ansatz als Symfony und damit unvergleichbar.
SHPS setzt stark darauf, dem Entwickler so viel wie möglich abzunehmen. Ein Entwickler muss, um mit SHPS entwicklen zu können, nur minimal PHP beherrschen. Es reicht zu wissen, wie man die statischen Methoden aufruft.
Es müssen insgesamt nur kleine Scripte für kleine Probleme geschrieben werden, um das große Problem zu beheben (aber darum muss sich der Entwickler kaum kümmern). Die Aufteilung des großen Problems ist bei dem Layout von SHPS schon fast fertig vorgenommen. Es reicht ein logisches Auffüllen.
Dadurch, dass es nur kleine Problemlösungen gibt, hat man eine sehr gute Übersicht, was der jeweilige Schnipsel tut. Beziehungen zwischen den einzelnen Schnipseln mögen zwar nicht unmittelbar klar sein, aber meiner Meinung nach doch wesentlich schöner, als ein Framework, wie Synfony, das macht, da die Beziehungen sehr einfach nachzuverfolgen sind, wenn man beim Ausgangstemplate beginnt.
|
Dein Code:
Code:
$sql = SHPS_sql::newSQL();
$inctbl = $sql->openTable('include');
$fttbl = $sql->openTable('fileType');
$r = '';
$cols = array(
new SHPS_sql_colspec($inctbl,'file')
);
$conditions = new SHPS_sql_condition(
new SHPS_sql_condition(
new SHPS_sql_colspec($inctbl,'type'),
SHPS_SQL_RELATION_EQUAL,
new SHPS_sql_colspec($fttbl,'ID')
),
SHPS_SQL_RELATION_AND,
new SHPS_sql_condition(
new SHPS_sql_colspec($fttbl,'type'),
SHPS_SQL_RELATION_EQUAL,
'js'
)
);
$sql->readTables($cols, $conditions);
while(($row = $sql->fetchRow()))
{
$r .= file_get_contents(SHPS_main::getDir('pool') . $row->getValue('file')) . ' ';
}
$sql->free();
Sieht bei mir etwa so aus:
Code:
<?php
//Stellt eine Datenbank Verbindung auf
Database::Connect();
//Gibt einen Array mit allen Ergebnissen zurück
$dbResult = Database::SendQuery('SELECT * FROM `db`.`table`');
foreach($dbResult as $row){
//Do something
}
//Da du noch so eine tolle "free" methode hast:
unset($dbResult);
Ich Spare eindeutig Zeilen wenn es nach meinem Code geht - wo sind jetzt die Unterschiede?
Noch dazu würde mich nerven das so ziemlich jede deiner klassen irgendwo ein "SHPS" drin vor kommt - das kann man ja irgendwann nicht mehr hören.
|
|
|
04/01/2014, 16:36
|
#11
|
elite*gold: 1329
Join Date: Jun 2009
Posts: 1,873
Received Thanks: 960
|
Quote:
Originally Posted by Padrio
Sieht bei mir etwa so aus:
Code:
<?php
//Stellt eine Datenbank Verbindung auf
Database::Connect();
//Gibt einen Array mit allen Ergebnissen zurück
$dbResult = Database::SendQuery('SELECT * FROM `db`.`table`');
foreach($dbResult as $row){
//Do something
}
//Da du noch so eine tolle "free" methode hast:
unset($dbResult);
Ich Spare eindeutig Zeilen wenn es nach meinem Code geht - wo sind jetzt die Unterschiede?
Noch dazu würde mich nerven das so ziemlich jede deiner klassen irgendwo ein "SHPS" drin vor kommt - das kann man ja irgendwann nicht mehr hören.
|
Du könntest dir deine Fragen beantworten, indem du einfach durchliest, was das Ziel von SHPS ist. Es nimmt in der Tat dem Entwickler sehr viel Arbeit ab.
Dein Code ist anfällig. Sobald du das Datenbank System wechselst (z.B. von MySQL auf MSSQL), musst du viele Queries neu schreiben. Ein Wechsel auf NoSQL geht mit dem neu schreiben aller Queries einher. Wiederverwertung deines Homepagecodes im Bezug auf SQL ist also gleich 0.
Zudem musst du bei deinem Code immer daran denken, dass die User böse sind und du alles escapen musst. Oder ein prepared Statement verwenden. Dadurch, dass DU daran denken musst, entstehen Bugs, wenn du es z.B. einmal vergisst.
EDIT: Ich habe gerade eine nette Mail erhalten, die ein RL Beispiel darstellt, wo mein System der professionellen Industrie überlegen ist, weil die Verantwortung bei Queries vom Entwickler weg genommen wird.
Ein weiterer Punkt ist die Optimierung. Bei dir musst du selbst die Query optimieren, wenn du nicht mit Parser arbeitest (was in meinen Augen sehr umständlich wäre). Bei mir kann das System einfach eingreifen und Optimierungen bis zu einem bestimmten Grad selbst vornehmen.
Ein letztes Problem bei dir ist, dass du nur 1 Verbindung zur Datenbank haben kannst. Mein System kann aber parallel unendlich viele Verbindungen zu verschiedenen Datenbanktypen oder auch einer einzigen Datenbank öffnen, ohne dass sich für den Entwickler irgendetwas ändert. Der Entwickler kann gleichzeitig MySQL, MSSQL, Oracle, MongoDB,... ansprechen. Immer auf die selbe Weise. Wie viele Entwickler kennen schon die (feinen) Unterschiede zwischen den verschiedenen Query Sprachen? Der Entwickler müsste sehr viel Zeit investieren, alles mögliche nachzuschlagen.
Für dich würde sich btw mein System lohnen. Deine Query ist unperformant, so wie sie dasteht. Zudem ist deine Query nicht ANSI SQL-92 standardkonform.
Wenn es unbedingt sein muss, kann man in meinem System selbstverständlich ebenfalls $sql->query("SELECT a,b,c FROM `db`.`table`;"); machen. Diesen Weg gehe ich aber, wie bereits gesagt und mit Gründen dargelegt, bewusst nicht und rate davon ab.
Was das ständige SHPS_ im Namen angeht: Ich habe festgestellt, dass bestimmte Server Stacks Probleme mit doppelten Klassen Namen haben. Insbesondere PEAR macht probleme. Die einfachste Lösung, um meine Klasse als auch andere Klassen anzusprechen ist es, meiner Klasse einen Namen zu geben, mit der man sie eindeutig einordnen kann.
Ich arbeite derzeit auch daran, Namespaces zu implementieren, aber es ist selbstverständlich einiges dabei zu bedenken. Ich versuche, das SHPS_ im Update 3 wieder zu entfernen. Versprechen kann ich das aber nicht.
|
|
|
04/04/2014, 02:02
|
#12
|
elite*gold: 1
Join Date: Jan 2013
Posts: 335
Received Thanks: 293
|
Quote:
Originally Posted by マルコ
PHP Code:
$sql = SHPS_sql::newSQL();
$inctbl = $sql->openTable('include');
$fttbl = $sql->openTable('fileType');
$r = '';
$cols = array(
new SHPS_sql_colspec($inctbl,'file')
);
$conditions = new SHPS_sql_condition(
new SHPS_sql_condition(
new SHPS_sql_colspec($inctbl,'type'),
SHPS_SQL_RELATION_EQUAL,
new SHPS_sql_colspec($fttbl,'ID')
),
SHPS_SQL_RELATION_AND,
new SHPS_sql_condition(
new SHPS_sql_colspec($fttbl,'type'),
SHPS_SQL_RELATION_EQUAL,
'js'
)
);
$sql->readTables($cols, $conditions);
while(($row = $sql->fetchRow()))
{
$r .= file_get_contents(SHPS_main::getDir('pool') . $row->getValue('file')) . ' ';
}
$sql->free();
|
Das sieht unnötig kompliziert aus. Ist auch vielleicht nicht so gut zu lesen.
Das hier ist einfacher:
PHP Code:
//Connect to database
DBHandler::connect(DATABASE_MAIN,
DB_MAIN_DATABASE_TYPE,
DB_MAIN_DATABASE_HOST,
DB_MAIN_DATABASE_USER,
DB_MAIN_DATABASE_PASSWORD,
DB_MAIN_DATABASE_NAME);
//Select main database
DBHandler::selectDB(DATABASE_MAIN);
//Delete table
DBHandler::dropTable('test_table');
//Create table
$table = new DBTable;
$table->name = 'test_table';
$table->addAIColumn('testID');
$table->addColumn('token', DB::VAR_VARCHAR, 255);
$table->addColumn('enabled', DB::VAR_BOOL);
DBHandler::createTable($table);
//Create data for inserting into table
$data = new DBData;
$data->token = 't3st';
$data->enabled = 1;
//Insert data into table
$table = DBHandler::openTable('test_table');
$table->insert($data);
//Create options
$options = new DBOptions;
$options->addCondition(DB::CONDITION_EQUAL, 'testID', 1);
$options->setOrder('testID', DB::ORDER_DESC);
$options->setLimit(1);
//Create data for updating table
$updates = new DBData;
$updates->token = 'token2';
//Update table
$table->update($updates, $options);
//Fetch data from table and display it
$data = $table->get(array('token'), $options);
echo $data->token;
//Delete data from table
$table->delete($options);
//Close connection
DBHandler::close(DATABASE_MAIN);
|
|
|
04/04/2014, 14:10
|
#13
|
elite*gold: 1329
Join Date: Jun 2009
Posts: 1,873
Received Thanks: 960
|
Quote:
Originally Posted by Syntaxfehler
Das sieht unnötig kompliziert aus. Ist auch vielleicht nicht so gut zu lesen.
Das hier ist einfacher:
PHP Code:
//Connect to database
DBHandler::connect(DATABASE_MAIN,
DB_MAIN_DATABASE_TYPE,
DB_MAIN_DATABASE_HOST,
DB_MAIN_DATABASE_USER,
DB_MAIN_DATABASE_PASSWORD,
DB_MAIN_DATABASE_NAME);
//Select main database
DBHandler::selectDB(DATABASE_MAIN);
//Delete table
DBHandler::dropTable('test_table');
//Create table
$table = new DBTable;
$table->name = 'test_table';
$table->addAIColumn('testID');
$table->addColumn('token', DB::VAR_VARCHAR, 255);
$table->addColumn('enabled', DB::VAR_BOOL);
DBHandler::createTable($table);
//Create data for inserting into table
$data = new DBData;
$data->token = 't3st';
$data->enabled = 1;
//Insert data into table
$table = DBHandler::openTable('test_table');
$table->insert($data);
//Create options
$options = new DBOptions;
$options->addCondition(DB::CONDITION_EQUAL, 'testID', 1);
$options->setOrder('testID', DB::ORDER_DESC);
$options->setLimit(1);
//Create data for updating table
$updates = new DBData;
$updates->token = 'token2';
//Update table
$table->update($updates, $conditions);
//Fetch data from table and display it
$data = $table->get(array('token'), $conditions);
echo $data->token;
//Delete data from table
$table->delete($conditions);
//Close connection
DBHandler::close(DATABASE_MAIN);
|
Gerade weil es kompliziert ist, möchte ich ja eine der 2 von mir vorgeschlagenen Wege gehen. Dein Vorschlag läuft auf eine der 2 von mir aufgeschriebenen Varianten hinaus.
Ich habe mich nun dazu entschieden, beide einzubauen und dann Update 3 mit einigen Bugfixes heraus zu bringen.
Zusammen mit dem neuen Update plane ich, ein Video Handbuch anzufangen, um den Einstieg in das System so einfach und angenehm als möglich zu gestalten.
Ich arbeite derzeit auch an der Node.JS Version, für die ich ein paar neue Ideen ausprobiere. Ich hoffe, bald die Node Version präsentieren zu können.
|
|
|
06/16/2014, 20:39
|
#14
|
elite*gold: 1329
Join Date: Jun 2009
Posts: 1,873
Received Thanks: 960
|
Update 3 uploaded.
Several changes have been made. Please see  for updated function descriptions.
I'm still looking for someone who is able to help me further improve SHPS. Please take a look at  .
How2 Update
Overwrite all files except for your config file. Please review the default config file and edit yours accordingly, new settings have been added!
Changes:
Code:
- Fixed login issue
- Implemented easier database interface
- Fixed a bug on PHP 5.3.5
- Fixed bugs on IIS7 (PHP5.4)
- Added support for dedicated resource domain (like static.example.com)
- Added JSON as file format for config files (ATTENTION: please lock browsers out of your config directory if you want to use JSON files or your passwords will be publicly visible!)
- solved smaller bugs
Planned changes for upcoming update:
Code:
- Objectification of many return values
- Memcached and Redis support for caching
Also I started to look into making video tutorials on how to make a simple homepage up to how to use namespaces to do complex tasks as isolated but still in-template content pages (I started working on the blog plugin, and they are real fun to play around with!)
If you are interested in a general introduction to SHPS, please sign up by sending me a PM. I will do an introduction using the latest version of TeamViewer and TeamSpeak³. Please prepare those tools in advance. A microphone is not needed. The presentation will be on the 26th July 2014 @ 4PM UTC+1. There will be no obligation, fee, whatsoever. The presentation will be about 1 to 2 hours long and held either in English or German depending on the participants. No recordings will be made - I care for your privacy.
|
|
|
07/13/2014, 02:34
|
#15
|
elite*gold: 1329
Join Date: Jun 2009
Posts: 1,873
Received Thanks: 960
|
SHPS on NodeJS
Hmm, I thought maybe an update once in a while would be nice. Let me tell you some great news!
I was finally able to overcome a few hurdles with the internal design (working with NodeJS is fundamentally different from working with PHP...), so now I can tell you that you can expect to see SHPS on Node soon! That's great news, but there's still more
SHPS on Node will add a few pieces of sugar to a web developer's everyday life. - Same methods and style as in SHPS4PHP
- Full SPDY support (completely automated - just add your cert files)
- Easy to use cryptography
- Highly pooled database connections for maximum performance with minimum resource usage
- and more!
Every feature for SHPS4PHP will also be implemented in SHPS4Node (and vice versa for most of them. Things like SPDY will just not work in PHP currently), so you won't have to miss on anything.
It has never been easier to make a well structured and reuseable homepage on Node.JS; especially developers coming from PHP will have to agree with me.
*Note: you will still be able to serve as many homepages as you want from one SHPS installation. In case of Node, it's also just one process for all. Don't worry about ports or anything. Just let SHPS do everything for your convenience!
As always, please let me hear your thoughts and give me your feedback.
SHPS on Node.JS
Serving SPDY3.1 (see SPDY indicator on the right.) Has the web ever been faster or easier to use?
|
|
|
 |
Similar Threads
|
[Suche] Intel 775er Cpu dual core oder quad core
08/13/2012 - Trading - 0 Replies
Hallöle liebes Forum !
Jo wie der Titel schon sagt suche ich einen Prozessor für mein 775er Board, jo wenn es Dual Core ist sollten so ab 2,8 Ghz drinne sein und beim Quadcore ab 2,5Ghz.Außerdem soll der Prozessor voll funktionstüchtig sein und wenn möglich nicht OEM version.
Würde dann mit PayPal und wenn vertraulich mit anderen Zahlungsarten zahlen....
Mfg
|
Suche WoW Trinity Core/Mangos Core 3.3.5a oder höher für Privatserver
01/16/2011 - WoW Private Server - 12 Replies
Hallo,
ich suche ein WoW Coren Trinity Core oder Mangos Core auf dem patch 3.3.5a oder höher der Core sollte auf Deutsch sein für einem Windows Root-Server.
Die patch was ich für meinen Privat-Server gesucht habe die es so gab haben meistens nicht funktioniert oder sind dauert abgekackt oder sind auf Englisch.
Ich suche einen Core der gut läuft auf einem Windows Server und deutsch ist.
Wenn mir jemand helfen könnte würde ich mich sehr freuen.
Kontakt:
Skype : SvenSnake
|
Shps unbenenen z.b Gemischtwarenhändler hilfe :)
12/21/2009 - Metin2 Private Server - 6 Replies
Hi leute wer kann mir helfen ich möchte die shops und so umbennen aber ich hab mir 1 2 theards angeguckt aber hat nicht geholfen da wollte ich euch fragen ob jemand mir kurz helfen kann per tv oder so wäre super nett
ihr könnt es mir auch hier reinposten mit erklärung versuche es dann selber hinzukriegen sufu hat mir nicht viel gebracht :(
|
All times are GMT +1. The time now is 23:05.
|
|