it solutions for special requirements

Schlagwort: Github

Git SSH issue troubleshooting

Git nutzt unter anderem das SSH Protokoll. Manchmal kann man trotz korrektem ssh-key oder entsprechenden Credentials kein Repository pushen oder pullen. Hier ein pratischer Weg zum troubleshooting der Verbindung:

ssh -vT git@github.com

ssh -vvT git@github.com

ssh -vvvT git@github.com

Der -v Parameter kann noch angepasst werden und gibt die Debug Level 1-3 aus. Die Ausgabe sieht dann wiefolgt aus.

debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Trying private key: C:\\Users\\Xxxx/.ssh/id_rsa

Falls man den SSH Befehl den GIT benutzt, anpassen muss, kann das über den GIT_SSH_COMMAND Parameter gemacht werden. Mehr Informationen hierzu: https://git-scm.com/docs/git#Documentation/git.txt-codeGITSSHCOMMANDcode

Die Anpassung des GIT_SSH_COMMAND mag für den Zugriff aus einem beschränkten Hoster-System nötig sein*.

*wie z.T. 1&1

Typo3 Fluid

Das Typo3 CMS verwendet Fluid als Template Engine. Diese Engine kann einfach auch in anderen PHP standalone Projekten verwendet werden. Warum sollte man das machen?

  • Ermöglicht einen Migrationspfad zum Typo3 CMS
  • Es ermöglicht das wiederverwenden von Fluid Templates in eigenen Projekten.
  • Es ermöglicht eine sukzesive Einarbeitung in die Typo3 Entwicklung, da andere Komponenten wie Extbase ausgelassen werden.

Wie integriert man Typo3/Fluid in ein standalone Projekt ohne dem Typo3 CMS? Wiefolgt:

composer require typo3fluid/fluid
composer install

Nach dem einfügen des Autoloaders wird dem standalone Projekt nur noch das TempalateView Objekt hinzugefügt:

use TYPO3Fluid\Fluid\View\TemplateView;

view = new TemplateView;

Es müssen noch verschiedene Pfade gesetzt werden. Außerdem sind bestimmte Directories notwenig:

site_package
└── Resources
    ├── Private
    │   ├── Language
    │   ├── Layouts
    │   │   └── Page
    │   ├── Partials
    │   │   └── Page
    │   └── Templates
    │       └── Page
    └── Public
        ├── Css
        ├── Images
        └── JavaScript

Eine Php Beispiel-Klasse in dem Typo3/Fluid in einer standalone Umgebung integriert wird, ist der https://github.com/q-u-o-s-a/fallout-grabber/blob/master/AbstractController.php des Fallout-Grabbers.

Weitere Informationen findet man unter: Typo3 Docs: FluidTemplates

Fast docker with Nginx, MariaDB and Php, Part III

Die Anwendungsdaten unter /var/www/html werden nicht in das Hostsystem gemountet. Das wurde im Fast Docker Part II beschrieben. Das Directory /var/www/html wird in das volume gemountet:

    volumes:
      - template-html:/var/www/html

Um in dem Volume zu schreiben benötigen wir einen weiteren container. Dieses Verfahren beschleunigt radikal die Funktionsweise der Container. Daten werden nicht in das Hostsystem gemountet sondern bleiben im Container und im Besten Fall sogar im Cache und Arbeitsspeicher.

Die Konfiguration des sftp / scp Dienstes sieht wiefolgt aus:

  sftp:
    image: atmoz/sftp
    volumes:
      - template-html:/home/${SFTP_USER}/upload
    ports:
        - "${SFTP_PORT}:22"
    command: ${SFTP_USER}:${SFTP_PASS}:33

Als Basis für den Container wird atmoz/sftp verwendet.

Die entsprechenden Parameter werden über die .env Datei festgelegt.

SFTP_HOST=127.0.0.1
SFTP_PORT=2222
SFTP_USER=runner
SFTP_PASS=pass

Die Zeile:

command: ${SFTP_USER}:${SFTP_PASS}:33

legt fest welcher Systemuser den angemeldeten SCP /SFTP User representiert.

Das entsprechende Github Projekt kann man unter https://github.com/atmoz/sftp finden.

Das gesamte Projekt befindet hier auf https://github.com/getit-berlin/fast-docker-php-template

Back in buisness …

Ok, enough is enough! Enough cake, enough Binge Watching, enough boardgames and old shool gaming (have you seen remastered versions of our childhood games? 😮🤩) …

More templates: We updated JoomLavel/documentation and we are proud to announce that more templates for JoomLavel/connect will be published on github.com/JoomLavel/templates soon. Templates enhance JoomLavel/connect functionality and are nearly finished.

Laravel Joomla DB Integration: Finally we are about to publish JoomLavel/JoomaDbLink. This component of the JoomLavel platform allows to integrate Joomla Database with Lumen or Laravel in an easy intuitiv way (eloquent).

So stay tuned 🥳

JoomLavel Use Cases

Ok, JoomLavel, allows to integrate Laravel and Joomla but, how does this work? Here are four use cases how to integrate them together.

completeheavy on Joomlaheavy on LaravelOpenAPI
JL/LaravelAdapter
rapidly generate Joomla
component
JL/Connect
rapidly generate Joomla
component
JL/Connect
rapidly generate Joomla
component
JL/JoomlaAdapter
rapidly connect Laravel
to Joomla DB
JL/JoomlaDbLink
rapidly connect Laravel
to Joomla DB
<SETTINGS>
connect api adapter with
adapter component
<SETTINGS>
connect component with
remote laravel api
<SETTINGS>
sync .env with
configuration.php
<SETTINGS>
connect component with
remote OpenAPI definied
endpoint
<DEV>
enchance both adapter
with custom code
<DEV>
enchance laravel
with custom code
<DEV>
develope representation
by custom code
Use Cases for JoomLavel platform

Every step in the integration process is done with RAD tools for rapid developement. A complete integration of Joomla and Laravel can be done in some minutes. Feel free to contact us if you want to know more.

More info on: http://JoomLavel.io or join us in github/joomlavel

JoomLavel Connect, Create Components rapidly (RAD)

we have finished a first MVP of our JoomLavel component generator.

Simply checkout our public github project:

git clone https://github.com/JoomLavel/connect.git & compose

php JoomLavel make:component BobsFirstComponent --zip --verbose

… and enjoy component generation

In the working dirctory you can adjust your new component and import it as a zip file on a Joomla instance.

In general, RAD approaches to software development put less emphasis on planning and more emphasis on an adaptive process.

wikipedia.org/wiki/Rapid_application_development

make configuration.php beautiful

Joomla has a quite ugly configuration file. configuration.php is cluttered and sorted i a very strange way?

<?php
class JConfig {
	public $offline = '1';
	public $offline_message = 'Wartungsmodus';
	public $display_offline_message = '1';
	public $offline_image = '';
	public $sitename = 'joomlavel-joomla-dev';
	public $editor = 'tinymce';
	public $captcha = '0';
	public $list_limit = '20';
	public $access = '1';
	public $debug = '0';
	...
	...
	...
	public $feed_email = 'none';
	public $log_path = '/logs';
	public $tmp_path = '/tmp';
	public $lifetime = '15';
	public $session_handler = 'database';
	public $shared_session = '0';
}

I really like https://12factor.net/ and its twelve-factor app approach. configuration recommendation is to seperate config in a way that they are language- and OS-agnostic. But how to do this? Here is our approach:

    public function __construct(){
		if (file_exists(SELF::JoomLavelApiDirectory.'.env')) {
			$env = parse_ini_file (SELF::JoomLavelApiDirectory.'.env',false, INI_SCANNER_RAW);
			$this->sitename = $env['APP_NAME'];
			$this->debug = (int)filter_var($env['APP_DEBUG'], FILTER_VALIDATE_BOOLEAN);;
			$this->live_site = $env['APP_URL'];
			$this->dbtype = $env['DB_CONNECTION'].'i';
			$this->host = $env['DB_HOST'];
			$this->db = $env['DB_DATABASE'];
			$this->user = $env['DB_USERNAME'];
			$this->password = $env['DB_PASSWORD'];
			
			$this->mailfrom = $env['MAIL_FROM_ADDRESS'];
			$this->fromname = $env['MAIL_FROM_NAME'];
			$this->smtpport = $env['MAIL_PORT'];
			$this->smtphost = $env['MAIL_HOST'];
			$this->smtpuser = $env['MAIL_USERNAME'];
			$this->smtppass = $env['MAIL_PASSWORD'];	
		}
		
    }

The configuration.php could also be seperated in blocks:

	#APP
	public $live_site = '';
	public $sitename = "joomla";
	
	#DB
	public $dbtype = 'mysqli';
	public $host = 'localhost';
	public $user = 'groot';
	public $password = '';
	public $db = 'joomlavel-dev';
	public $dbprefix = 'f862e_';
	
	#SESSION
	public $session_handler = 'database';
	public $shared_session = '0';
	public $lifetime = '15';

You can see the files in our Github::JoomLavel project.

We have a baby, we have called it: JoomLavel,

In the last 2 years we have worked in complicated Joomla CMS project. The project has grown and we hit joomla limitations.

How to leave a vendor-lockin and joomla limitations? A REST API might be the solution. The Separation_of_concerns principle describes a seperation of a computer program in distinct sections.

JoomLavel allows you to use a modern laravel API backend in combination with your own joomla application. You can easily add functionalities in the laravel api to enchance joomla functionalities without changing the joomla framework code or joomla components or plugins.

joomLavel name creation

Checkout our Github documentation page:

https://github.com/JoomLavel/documentation

More informations will be published the next days:

Wie dokumentiert und strukturiert man die User Story?

Die Github Dokumentation der Corona-Warn-App zeigt wie schöne eine user-journey dargestellt werden kann.

https://github.com/corona-warn-app/cwa-documentation/blob/master/scoping_document.md#user-journey

Die Struktur ist klar. Zuerst werden die Teilnehmner (Stakeholder) angeführt und dann deren User Stories.

Die User Stories werden dann in Epics zusammen gefasst. Die Stories können dann in einzelne Tasks untergliedert werden.

Anfang September startet unser eigenes FuE Projekt. Die User Stories werden ebenfalls auf Github veröffentlicht.

Github und 1&1

Seit Github seine Politik mit internen Projekten geändert hat, setzen wir es exzessiv ein. *träum* Siehe auch unser Getit-Berlin Github. Oder meine eigene JWalczak Github.

Wie man vielleicht schon mal schmerzlich feststellen musste, kann man von bestimmten 1&1 Verträgen (unser geehrter Kunde hat da ein Paket) nicht so einfach zu Github „pull“en.

Folgender Codesnippsel erleichtert uns die Arbeit …

pl.sh
GIT_SSH=/kunden/homepages/yy/dxxxxxx/htdocs/ssh git pull

und

pu.sh
GIT_SSH=/kunden/homepages/yy/dxxxxxx/htdocs/ssh git push --set-upstream origin master

Man schau sich blos den Dateinamen an 😉 „pu.sh“

Natürlich muss man noch die ssh Datei hinzufügen. Die enhält folgendes:

ssh -o UserKnownHostsFile=/dev/null -i /kunden/homepages/yy/dxxxxxx/htdocs/id_rsa -o StrictHostKeyChecking=no $*

Die id_rsa Datei enthält unseren Github ssh-key. Et voilà push und pull funktionieren wie gewohnt. *puhhh*

NACHTRAG: Natürlich noch chown Rechte beachten.

Präsentiert von WordPress & Theme erstellt von Anders Norén