Seite 1 von 1

Konzept für eigenes "Wiki"-System

Verfasst: So Feb 01, 2015 9:52 am
von nouseforname
Moin,

ich habe eine Idee für ein eigenes Wiki-System, und wollte eure Meinung zum Konzept und dessen Umsetzung hören/lesen.

Wiki:
  • - Alle Informationen laufen zentral auf einem Server zusammen
    - Daten/Info Ein- und Ausgabe von allen Clients
    - Filtern der Suche nach Kategorie
Vorrausetzungen:
  • - Einfache Eingabe eines Datensatzes inkl, Kategorie
    - Muss auch ohne Verbindung zum Server funktionieren
    - Mindestens Client für Windows, idealerweise auch Mobil auf Android. Linux wünschenswert, aber nicht zwingend. Vielleicht auch Webseite für den Zugriff
    - Automatischer Sync der Datenbank wenn möglich und nötig.
    - Idealerweise Userlevel für Eingabe/Kategorie für Rückverfolgung und Verifizierung der Info
Konzept:
  • - Zentrale MySql Datenbank
    - Server kennt alle Clients und deren Status der Datenbank
    - Bei Verbindung Server-Client Abfrage nach Aktualisierung und Übergabe der Daten von Server an Client

Hier tauchen also mehrere Problem auf die auf möglichst einfache Art gelöst werden sollen. Ein Thema ist das Datenformat. Android kann nur Sqlite, für alles andere ist MySql sicher gut geeignet. Vom Server zum Windows-Client könnte also direkt ein Dump der Datenbank übertragen werden. Dies funktioniert bei Android nicht. Hier würde sich ein umsetzen in JSON anbieten. Also warum nicht alles in JSON übertragen damit wenigstens die Übertragung an alle Clients immer die gleiche ist.
Außerdem stellt sich die Frage welche Sprache benutzt wird um das ganze möglichst einfach zu machen. Ich denke aufgrund der unterschiedlichen Plattformen bietet sich Java geradezu an. Auch weil Android dann sowieso auch Java benötigt. Der Server selbst sollte dann auch flexibel sein. Im konkreten Fall wäre das Serversystem zwar Windows, aber warum nicht auch hier flexibel bleiben.

Meine aktuelle Umsetzung wäre also wie folgt:
  • - MySql Datenbank
    - Java Server der eigentlich nur die Clients/User "verwaltet" und die Daten konvertiert
    - JSON übertragung (HTTPS)
    - Java Clients natürlich mit GUI und eigener Datenbank (MySql/Sqlite) und Userlogin für Eingabe von Daten und Abfrage von Kategorien
    - Android App
Was mir hier noch fehlt wäre wie ich die Webseite mit dem Java Server verbinde und wie ich in Java eine GUI erzeuge, am besten in Eclipse. Aber vielleicht kommt ja von euch etwas ganz anderes.

Ich bin hier im übrigen auch offen für eine Zusammenarbeit mit jemandem. Aber ich weiss, keiner Hat Zeit uns Lust. ;) Alleine ist es halt doch recht viel Arbeit. Bin gespannt auf eure Ideen.

Re: Konzept für eigenes "Wiki"-System

Verfasst: So Feb 01, 2015 12:30 pm
von cloidnerux
Wiki:
- Alle Informationen laufen zentral auf einem Server zusammen
- Daten/Info Ein- und Ausgabe von allen Clients
- Filtern der Suche nach Kategorie
Beschreibst du hier ein Buchaltungssystem, Warenwirtschaft, POS, Arbeitszeiterfassung, Erfassung der Ergebnisse von Sportereignissen oder ein System zum Bewerten von Restaurants?
Du solltest dir an dieser stelle mehr Gedanken machen, was du da überhaupt aufbauen willst.

Insgesamt auch die Frage: Soll das ein Wiki à la Wikipedia sein, sowas wie proggen.org oder einfach Wissensmanagement?
- Einfache Eingabe eines Datensatzes inkl, Kategorie
Wieder sehr generisch.
Muss auch ohne Verbindung zum Server funktionieren
Was muss funktionieren? Eingabe? Lesen? Updaten der lokalen Datenbank?
Mindestens Client für Windows, idealerweise auch Mobil auf Android. Linux wünschenswert, aber nicht zwingend. Vielleicht auch Webseite für den Zugriff
Mach ein Browser-Frontend und du kannst es auf Linux, Mac und Windows nutzen.
Bei Verbindung Server-Client Abfrage nach Aktualisierung und Übergabe der Daten von Server an Client
Hier wirst du an die selben Probleme wie git/svn kommen. Was passiert, wenn zwei Leute die selbe Datei gleichzeitig ändern. Was passiert, wenn Inhalte gelöscht werden. Wie merged man verlinkte Inhalte, etc.
Ein Thema ist das Datenformat. Android kann nur Sqlite, für alles andere ist MySql sicher gut geeignet.
Ich glaube du bist zu sehr auf Datenbank=SQL fixiert.
Im Grunde hast du Datensätze, die Relational sind, oder manchmal auch nicht.
Ein Menge solcher Datensätze speicherst du in einem Container, der halt für SQL-Datenbanken Tabelle genannt wird. Das Konstrukt was das Speichern und Verwalten von diesen Containern und Datensätzen verwaltet wird dann Datenbank genannt.
Du kannst auch ganz einfach deine Daten auf einem Android-Gerät in XML Dateien speichern oder in eine Datei-serialisieren.
Du hast endlose Möglichkeiten.
Vom Server zum Windows-Client könnte also direkt ein Dump der Datenbank übertragen werden
Was man nicht tun sollte. Wie sieht es denn mit Sicherheit, Authentifizierung und der Verfügbaren Bandbreite aus?
Was passiert denn, wenn du mal mehrere GB an Daten hast, die auf einmal auf alle Geräte Synchronisiert werden müssen.
Also warum nicht alles in JSON übertragen damit wenigstens die Übertragung an alle Clients immer die gleiche ist.
Warum nicht einfach Serverseitig eine API schaffen, die JSON oder SOAP oder ähnliches kann?
Außerdem stellt sich die Frage welche Sprache benutzt wird um das ganze möglichst einfach zu machen.
Es wird nicht einfach, egal mit welcher Sprache.
Ich denke aufgrund der unterschiedlichen Plattformen bietet sich Java geradezu an.
Nein, tut es nicht.
Im gegensatz zu Java hat es der Browser geschafft eine einigermaßen einheitliche Laufzeitumgebung für Javascript, AJAX, CSS und HTML zu liefern, daher würde sich eine Website anbieten.
Ein Java-Programm, dass du unter und für Windows programmiert hast, wird nicht auf Android laufen, weil Android eine eigene Laufzeitumgebung hat. Zudem sollte eine App fürs Smartphone auch für die Bedienung auf einem Smartphone programmiert sein. Es ist schon ein gewaltiger Unterschied, ob man Maus und Tastatur hat, oder nur einen Touchscreen.
Selbst das portieren von Java-Programmen von Windows auf Linux kann gewaltige Probleme bereiten.
Der Server selbst sollte dann auch flexibel sein.
Wie auch schon oben erwähnt, Java wird immer als portierbar angepriesen, in der Realität bereitet es mehr Probleme als nutzen.
Schreib deinen Server in C/C++, es gibt Bibliotheken die dir einigermaßen Plattform-unabhängige Interfaces für Netzwerk und SQL bieten, du hast dann ein solides Programm mit maximaler Performance.
Was mir hier noch fehlt wäre wie ich die Webseite mit dem Java Server verbinde und wie ich in Java eine GUI erzeuge, am besten in Eclipse.
Ich muss hier ehrlich sein: Dieser Satz hat dein Vorhaben den Todesstoß verpasst. Warum? Weil das die typische Anfänger/Noob-Frage ist, die klar macht, dass der Fragende weder genug wissen besitzt um das Projekt durch zu ziehen, noch sich dieses Wissen innerhalb der nächsten 2 Jahre aneignet.
"Wie mache ich XY, aber bitte möglichst einfach in einer IDE? Ich habe keine lust selber zu recherchieren, etwas zu lernen und mich mit der Thematik zu beschäftigen..."
Ich hatte dich eigentlich besser als das eingeschätzt.

Lies dich in die Thematik ein, schau dir an wie man Serveranbindungen baut. Schreib dir ein paar Terminal-Programme, die dein Konzept verdeutlichen, bzw deine Funktionallität abbilden.
Wenn das läuft, kannst du immer noch eine GUI drauf setzten.

Re: Konzept für eigenes "Wiki"-System

Verfasst: So Feb 01, 2015 1:21 pm
von nouseforname
cloidnerux hat geschrieben: Beschreibst du hier ein Buchaltungssystem, Warenwirtschaft, POS, Arbeitszeiterfassung, Erfassung der Ergebnisse von Sportereignissen oder ein System zum Bewerten von Restaurants?
Du solltest dir an dieser stelle mehr Gedanken machen, was du da überhaupt aufbauen willst.
Es ist doch egal welches System ich Beschreibe. Ich möchte Daten abrufen und Eintragen können, die Art der Daten spielt erst mal keine Rolle. Aber im Prinzip geht es darum Wissen zu teilen. Ich habe ein Problem, beschreibe dieses, finde die Lösung und teile dieses. Also Frage/Antwort trifft es ganz gut.

Wieder sehr generisch.
Die Eingabe darf nicht zu komplex werden damit der geneigte Nutzer sich auch die Zeit nimmt etwas einzutragen. Ergo einfache Eingabe von Daten in Verbindung mit Kategorien.
Was muss funktionieren? Eingabe? Lesen? Updaten der lokalen Datenbank?
Lesen und Eingeben natürlich. Bin ich nicht online, kann ich kaum die lokale Datenbank aktualisieren :)
Mach ein Browser-Frontend und du kannst es auf Linux, Mac und Windows nutzen.
Fällt raus weil die Verbindung zum Server nicht immer gegeben ist. Daher "muss auch offline funktionieren".
Hier wirst du an die selben Probleme wie git/svn kommen. Was passiert, wenn zwei Leute die selbe Datei gleichzeitig ändern. Was passiert, wenn Inhalte gelöscht werden. Wie merged man verlinkte Inhalte, etc.
Da hast Du recht, soweit hatte ich tatsächlich noch nicht gedacht. Aber es geht auch tatsächlich erst mal um das Konzept. Ich stelle mir das aber so vor dass jeder Eintrag an einen Nutzernamen gebunden ist. Ein neuer Eintrag bekommt einen neuen Zeitstempel. Ein anderer Nutzer kann also so gesehen den gleichen Eintrag erzeugen.
Ich glaube du bist zu sehr auf Datenbank=SQL fixiert.
...
Du hast endlose Möglichkeiten.
Auf Grund der zu erwartenden Menge an Datensätzen halte ich MySql für sehr sinnvoll.
Was man nicht tun sollte. Wie sieht es denn mit Sicherheit, Authentifizierung und der Verfügbaren Bandbreite aus?
Was passiert denn, wenn du mal mehrere GB an Daten hast, die auf einmal auf alle Geräte Synchronisiert werden müssen.
Mir ist klar dass dieser Punkt ein grosser ist. Daher soll das ganze ja mit Benutzerverwaltung ausgestattet sein und verschlüsselt übertragen werden.
Ich glaube kaum dass mehrere GB auf einen schlag zusammen kommen, da das ganze langsam wächst. Falls doch, nutzt man halt optional nur der Intranet.
Warum nicht einfach Serverseitig eine API schaffen, die JSON oder SOAP oder ähnliches kann?
Warum das Rad neu erfinden?! Mit JSON habe ich schon gearbeitet, auch in Verbindung mit Datenbanken.
Es wird nicht einfach, egal mit welcher Sprache.
Das ist mir bewusst, und mir kam die Idee auch erst gestern. Und weil ich auch Erfahrungen anderer nutzen möchte um nicht gleiche Fehler zu machen frage ich eben hier nach. Natürlich um auch dazuzulernen.
Nein, tut es nicht.
Im gegensatz zu Java hat es der Browser geschafft eine einigermaßen einheitliche Laufzeitumgebung für Javascript, AJAX, CSS und HTML zu liefern, daher würde sich eine Website anbieten.
Ein Java-Programm, dass du unter und für Windows programmiert hast, wird nicht auf Android laufen, weil Android eine eigene Laufzeitumgebung hat. Zudem sollte eine App fürs Smartphone auch für die Bedienung auf einem Smartphone programmiert sein. Es ist schon ein gewaltiger Unterschied, ob man Maus und Tastatur hat, oder nur einen Touchscreen.
Selbst das portieren von Java-Programmen von Windows auf Linux kann gewaltige Probleme bereiten.
Browser fällt raus, wie bereits erwähnt. Mir ist auch bewusst dass eine Android App etwas anders aufgebaut wird. Aber manches Bausteine sind eben definitiv wiederverwendbar.

Wie auch schon oben erwähnt, Java wird immer als portierbar angepriesen, in der Realität bereitet es mehr Probleme als nutzen.
Schreib deinen Server in C/C++, es gibt Bibliotheken die dir einigermaßen Plattform-unabhängige Interfaces für Netzwerk und SQL bieten, du hast dann ein solides Programm mit maximaler Performance.
Beim Server ist es natürlich möglich mit c/c++ zu arbeiten. Würde mir persönlich auch gut gefallen. Aber wenn ich beim Client Java verwende zB für die Datenkonvertierung, wäre es blöd die entsprechende Klasse nicht auch beim Server zu nutzen.
Ich muss hier ehrlich sein: Dieser Satz hat dein Vorhaben den Todesstoß verpasst. Warum? Weil das die typische Anfänger/Noob-Frage ist, die klar macht, dass der Fragende weder genug wissen besitzt um das Projekt durch zu ziehen, noch sich dieses Wissen innerhalb der nächsten 2 Jahre aneignet.
"Wie mache ich XY, aber bitte möglichst einfach in einer IDE? Ich habe keine lust selber zu recherchieren, etwas zu lernen und mich mit der Thematik zu beschäftigen..."
Ich hatte dich eigentlich besser als das eingeschätzt.
Du hast mich hier offensichtlich und definitiv falsch eingeschätzt. Nur weil ich zugebe dass ich noch keine GUI mit Java kreiert habe heißt das nicht dass ich mir keine Gedanken gemacht habe wie das umzusetzen wäre. Abgesehen davon habe ich den Thread hier nicht eröffnet weil ich schon alles komplett durchdacht und fertig konzeptioniert habe, sondern weil ich auch andere Ideen hören will.
Lies dich in die Thematik ein, schau dir an wie man Serveranbindungen baut. Schreib dir ein paar Terminal-Programme, die dein Konzept verdeutlichen, bzw deine Funktionallität abbilden.
Wenn das läuft, kannst du immer noch eine GUI drauf setzten.
Danke für den Tipp. Ich denke ich habe nun klar gemacht worauf ich hinaus will und dass ich mir bereits Gedanken gemacht habe. Ich wollte ehrlich gesagt auch keinen Foreneintrag schreiben sondern mich darüber per audio unterhalten, weil ich dies für sinnvoller erachte als hier Romane zu schreiben um Missverständnisse auszuräumen.

Wie gesagt, ich kann mit Server-Client, MySql, Sqlite, Java, Android, C++ , und auch Gui erstellen umgehen und weiß dass es keine einfache Aufgabe ist. Ich will auch nicht dass hier jemand irgendetwas für mich macht. Einzig andere Seiten hören von Leuten die Ahnung haben und sowas vielleicht auch schon gemacht haben und wissen worauf man reinfallen kann. Von der Aufgabe her traue ich mir das alles zu, ich möchte es nur "richtig" machen.

Re: Konzept für eigenes "Wiki"-System

Verfasst: Mo Feb 02, 2015 5:51 pm
von Xin
nouseforname hat geschrieben:ich habe eine Idee für ein eigenes Wiki-System, und wollte eure Meinung zum Konzept und dessen Umsetzung hören/lesen.
Nichts gegen ein eigenes Wiki-System... welches Problem löst Dein System?
nouseforname hat geschrieben: Konzept:
  • - Zentrale MySql Datenbank
    - Server kennt alle Clients und deren Status der Datenbank
    - Bei Verbindung Server-Client Abfrage nach Aktualisierung und Übergabe der Daten von Server an Client
Hier tauchen also mehrere Problem auf die auf möglichst einfache Art gelöst werden sollen. Ein Thema ist das Datenformat. Android kann nur Sqlite, für alles andere ist MySql sicher gut geeignet.
SQL ist hier nur Vermittler zu einem Datenspeicher, falls die Software gerade nicht aktiv ist.
Und da wäre dann mal die Frage, ob unter Android eine lokale Kopie vorliegt oder Android der Server ist.
Worunter lokale Kopien gespeichert werden ist schließlich nicht abhängig davon, ob der Server MySQL nutzt.
Hier ist also ein Persistenzproblem.
nouseforname hat geschrieben:Vom Server zum Windows-Client könnte also direkt ein Dump der Datenbank übertragen werden. Dies funktioniert bei Android nicht. Hier würde sich ein umsetzen in JSON anbieten. Also warum nicht alles in JSON übertragen damit wenigstens die Übertragung an alle Clients immer die gleiche ist.
Hier haben wir einen Datenübertragungsproblem. Und wenn Du schon JSON hier verwendest, wäre eher die Frage, welche Datenhaltung erlaubt Dir zum Beispiel JSON-Datensätze?
Das könnte doch ein Fall für eine NoSQL-Datenbank sein.
nouseforname hat geschrieben:Außerdem stellt sich die Frage welche Sprache benutzt wird um das ganze möglichst einfach zu machen. Ich denke aufgrund der unterschiedlichen Plattformen bietet sich Java geradezu an. Auch weil Android dann sowieso auch Java benötigt. Der Server selbst sollte dann auch flexibel sein. Im konkreten Fall wäre das Serversystem zwar Windows, aber warum nicht auch hier flexibel bleiben.
Wenn man Java mag. Ich mag lieber C++.
C++ läuft auch auf Android, wie man das an den Start bekommt, weiß ich spontan aber auch nicht.
nouseforname hat geschrieben:Meine aktuelle Umsetzung wäre also wie folgt:
  • - MySql Datenbank
    - Java Server der eigentlich nur die Clients/User "verwaltet" und die Daten konvertiert
    - JSON übertragung (HTTPS)
    - Java Clients natürlich mit GUI und eigener Datenbank (MySql/Sqlite) und Userlogin für Eingabe von Daten und Abfrage von Kategorien
    - Android App
Was mir hier noch fehlt wäre wie ich die Webseite mit dem Java Server verbinde und wie ich in Java eine GUI erzeuge, am besten in Eclipse. Aber vielleicht kommt ja von euch etwas ganz anderes.
Du brauchst bei Java einen Tomcat Server.
nouseforname hat geschrieben:Ich bin hier im übrigen auch offen für eine Zusammenarbeit mit jemandem. Aber ich weiss, keiner Hat Zeit uns Lust. ;) Alleine ist es halt doch recht viel Arbeit. Bin gespannt auf eure Ideen.
Du beschreibst vorrangig die Verwendung von möglichen Techniken.

Ich schreibe ein Wiki für proggen.org. Wobei ich eigentlich kein Wiki will, sondern ein CMS, was man in Form eines Wikis füttern kann.
Warum schreibe ich ein CMS? Ich möchte geführte Tutorials, ich möchte Quizzes, Achievements, Diskussionen an Wiki-Seiten, mehr Kontrolle über die Gestaltungsmöglichkeiten der Website.
Ich habe Probleme, die ich mit der gegenwärtigen Software auf der proggen.org läuft nicht lösen kann.
Darum schreibe ich neue Software. Welches Problem hast Du, soviele technische Anforderungen zu stellen?


nouseforname hat geschrieben:
nouseforname hat geschrieben: Warum nicht einfach Serverseitig eine API schaffen, die JSON oder SOAP oder ähnliches kann?
Warum das Rad neu erfinden?! Mit JSON habe ich schon gearbeitet, auch in Verbindung mit Datenbanken.
Weil es kein neues Rad wäre, sondern nur eine Übergabe an einen Server.
nouseforname hat geschrieben:
Im gegensatz zu Java hat es der Browser geschafft eine einigermaßen einheitliche Laufzeitumgebung für Javascript, AJAX, CSS und HTML zu liefern, daher würde sich eine Website anbieten.
Ein Java-Programm, dass du unter und für Windows programmiert hast, wird nicht auf Android laufen, weil Android eine eigene Laufzeitumgebung hat. Zudem sollte eine App fürs Smartphone auch für die Bedienung auf einem Smartphone programmiert sein. Es ist schon ein gewaltiger Unterschied, ob man Maus und Tastatur hat, oder nur einen Touchscreen.
Selbst das portieren von Java-Programmen von Windows auf Linux kann gewaltige Probleme bereiten.
Browser fällt raus, wie bereits erwähnt. Mir ist auch bewusst dass eine Android App etwas anders aufgebaut wird. Aber manches Bausteine sind eben definitiv wiederverwendbar.
Ein Android-Händi ist in der Regel online.
Ich würde mir über den Wert der Möglichkeit offline zu arbeiten Gedanken machen. Du schaffst Dir damit sehr viele zusätzliche Probleme. Alternativ machst Du die Sache (erstmal) nur online als Website, Android präsentiert Dir die Website, fertig aus.
Später kannst Du dann überlegen, ob sich der doch recht große Aufwand eine lokale Kopie zu halten und zu synchronisieren überhaupt lohnt.
nouseforname hat geschrieben: Wie gesagt, ich kann mit Server-Client, MySql, Sqlite, Java, Android, C++ , und auch Gui erstellen umgehen und weiß dass es keine einfache Aufgabe ist. Ich will auch nicht dass hier jemand irgendetwas für mich macht. Einzig andere Seiten hören von Leuten die Ahnung haben und sowas vielleicht auch schon gemacht haben und wissen worauf man reinfallen kann. Von der Aufgabe her traue ich mir das alles zu, ich möchte es nur "richtig" machen.
Es gibt kein "richtig". Es ist immer ein Kompromiss zwischen verschiedenen Prioritäten: Zeit, Geld und Möglichkeiten.

Eine Möglichkeit wäre zum Beispiel sich eine Flatrate für Dein Händi zu kaufen, das spart Zeit bei der Umsetzung. Und vermutlich auch Geld. Man muss da abwägen und begründen. Und da fängt es an kompliziert zu werden.

Ich denke, Du solltest erstmal Deine Ziele priorisiseren. Was ist von den Zielen wichtig und warum verfolgst Du sie?
Anschließend solltest Du mit sogenannten 'Proof of Concept'-Implementierungen beginnen. So hat mein Wiki bereits eine Struktur und kann Wiki-Seiten als Webseite rendern. Die können nicht viel: Links, Fettdruck, Überschriften... sowas. Es ist ein Plugin-System, ich weiß, dass es funktioniert und nun kann ich mich auf andere Dinge konzentrieren.

Versuch Dir einen Überblick über die einzelnen Punkte zu schaffen und über deren Aufwand.
Spezifiziere das Problem, dass Du lösen willst, suche dann nach geeigneten Techniken, die einzelnen Probleme für sich zu lösen und gucken dann, welche von den Lösungen gut zusammen passen. Gibt es Frameworks, die Dir Arbeit abnehmen. Vielleicht legen die dann auch gleich die Sprache fest, die Du dafür nutzen musst, um die Frameworks zu verbinden, die Dir am meisten Arbeit abnehmen.
Das kann bedeuten, dass die besten Frameworks für die einzelnen Probleme rausfallen, weil nur die zweit- oder drittklassigen Lösungen sich sinnvoll miteinander verbinden lassen.

Oder Du machst es "richtig" und implementierst alles selbst und zwar so, dass es perfekt ineinander greift. Da spielen dann der Zeit und der Geld-Faktor die große Rolle und da muss man dann auf seine Liste schauen und überlegen, welche von den Features vielleicht doch nicht so wichtig sind, damit man irgendwann mal was vorzeigen kann.

Re: Konzept für eigenes "Wiki"-System

Verfasst: Di Feb 03, 2015 6:53 am
von nouseforname
Xin hat geschrieben: Ich denke, Du solltest erstmal Deine Ziele priorisiseren. Was ist von den Zielen wichtig und warum verfolgst Du sie?
1. Probleme und deren Lösungsbeschreibung zentral speichern und mit verbundenen Clients synchronisieren.
- Informationsaustausch zwecks schnellerer Lösung von bereits vorhandenen bzw. gelösten Problemen an anderer Stelle

2. Ein Client muss die Informationen auch lokal speichern da nicht immer eine Verbindung zum Server gegeben ist!!!
- Nein, selbst ein Smartphone ist nicht immer online.

3. Server für Windows/Linux, Client für Windows, Android und eventuell Linux

4. Benutzer--Verwaltung/-Ebenen um Einträge zuordnen/sperren zu können


Eine "simple" Webseite wäre spontan der beste Weg, aber diese müsste eben auf offline verfügbar sein. Was das ganze wieder schwierig macht.