Du bist nicht eingeloggt! Möglicherweise kannst du deswegen nicht alles sehen.
  (Noch kein mods.de-Account? / Passwort vergessen?)
Zur Übersichtsseite
Hallo anonymer User.
Bitte logge dich ein
oder registriere dich!
 Moderiert von: Irdorath, statixx, Teh Wizard of Aiz


 Thema: Software-Entwicklung 0 ( new SammelThread() )
« erste « vorherige 1 ... 23 24 25 26 [27] 28 29 30 31 ... 51 nächste » letzte »
erste ungelesene Seite | letzter Beitrag 
black_velvet

AUP black_velvet 01.07.2011
 
Zitat von NI-Xpert

Es war a.de Breites Grinsen

Haben wir ja nicht blockiert es gab nur nen harten Bounce und den ersten Eintrag im Klassenbuch verschmitzt lachen


Das wäre dann booking.com
30.07.2021 8:18:51  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Admiral Bohm

tf2_spy.png
Pfeil
Nur weil s.de:443 Status 301 zurückkommt, heisst das nicht unbedingt, dass unter der domain mails verarbeitet werden.
30.07.2021 8:40:31  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
black_velvet

AUP black_velvet 01.07.2011
Das ist korrekt, aber Domains mit ein oder zwei Buchstaben sind definitiv funktional. Ob das eine gute Idee ist sei mal dahingestellt.

Wobei ich bei Mailadressen auch schon oft als Kunde gehasst habe, weil XY@ZZZ-Z.de nicht angenommen wurde. Vor dem @ müssen mindestens drei Zeichen stehen. Ist natürlich bei Initialen ohne zweiten Vornamen eher nicht so häufig.
30.07.2021 9:09:21  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
AJ Alpha

AUP Brot 18.02.2024


Das gab bei mir nie Probleme. Dienstmail war lange Jahre exakt Syntax xx@xxx.xx.xxx.de
30.07.2021 9:13:52  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Armag3ddon

AUP Armag3ddon 04.01.2011
aj@ ?
30.07.2021 9:14:23  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
AJ Alpha

AUP Brot 18.02.2024
verschmitzt lachen
Njet

An der Uni trat ich nicht als aj alpha auf.
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von AJ Alpha am 30.07.2021 9:16]
30.07.2021 9:16:26  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Noch_ein_Kamel

Guerilla
 
Zitat von NI-Xpert

Es war a.de Breites Grinsen

Haben wir ja nicht blockiert es gab nur nen harten Bounce und den ersten Eintrag im Klassenbuch verschmitzt lachen



Aber a.de ist von booking.com und die Mails gehen in Richtung Google Apps?!
30.07.2021 10:18:19  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
cms

AUP cms 14.11.2012
verschmitzt lachen
 
Zitat von AJ Alpha

Njet

An der Uni trat ich als bj beta auf.

Immerhin ehrlich!
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von cms am 30.07.2021 15:19]
30.07.2021 13:41:58  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
NI-Xpert

Arctic
 
Zitat von Noch_ein_Kamel

 
Zitat von NI-Xpert

Es war a.de Breites Grinsen

Haben wir ja nicht blockiert es gab nur nen harten Bounce und den ersten Eintrag im Klassenbuch verschmitzt lachen



Aber a.de ist von booking.com und die Mails gehen in Richtung Google Apps?!


jo dann wars wohl kein Bounce wegen der Domain sondern auch weil das troll@ Konto nicht existierte
30.07.2021 13:47:58  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Noch_ein_Kamel

Guerilla
 
Zitat von NI-Xpert

 
Zitat von Noch_ein_Kamel

 
Zitat von NI-Xpert

Es war a.de Breites Grinsen

Haben wir ja nicht blockiert es gab nur nen harten Bounce und den ersten Eintrag im Klassenbuch verschmitzt lachen



Aber a.de ist von booking.com und die Mails gehen in Richtung Google Apps?!


jo dann wars wohl kein Bounce wegen der Domain sondern auch weil das troll@ Konto nicht existierte

jaja. So wie die ganzen Mails die an test@example.com gehen Breites Grinsen
30.07.2021 15:11:51  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
NI-Xpert

Arctic
Domains wie example.com und .org sind auf ner eigenen Blacklist noch bevor sie an AWS gehen. Genau deswegen Breites Grinsen
30.07.2021 15:33:52  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Swift

swift
Ich hatte die letzten Tage endlich mal wieder Zeit mit Elixir/Phoenix zu spielen, und dabei den Picturedwarf auf die neuste Framework Version upgedated, welche neu mit LiveView auch direkt Uploads mit Fortschrittsanzeige unterstützt

Es ist halt einfach sehr gut. Backend in 57 Zeilen, und kein bisschen JS schreiben müssen

 
Code:
defmodule PicturedwarfWeb.PageLive do
  use PicturedwarfWeb, :live_view
  import Mogrify

  @impl true
  def mount(%{"pics" => pictures}, _session, socket) do
    pictures = case pictures do
      [] -> ["picturedwarf.png"]
      _ -> Enum.map(pictures, fn x -> if File.exists?(Path.join([File.cwd!, "img", x])) do x else "error.png" end end)
    end

    {:ok,
      socket
      |> assign(:uploaded_files, pictures)
      |> assign(:resolution, "800")
      |> allow_upload(:picture, accept: ~w(.jpg .jpeg .png .gif), max_entries: 8)
    }
  end

  @impl Phoenix.LiveView
  def handle_event("validate", _params, socket) do
    {:noreply, socket}
  end

  @impl Phoenix.LiveView
  def handle_event("cancel-upload", %{"ref" => ref}, socket) do
    {:noreply, cancel_upload(socket, :picture, ref)}
  end

  def handle_event("res8", _value, socket) do
    {:noreply, assign(socket, :resolution, "800")}
  end

  def handle_event("res12", _value, socket) do
    {:noreply, assign(socket, :resolution, "1200")}
  end

  @impl Phoenix.LiveView
  def handle_event("save", _params, socket) do
    uploaded_files =
      consume_uploaded_entries(socket, :picture, fn %{path: path}, entry ->
        ext = String.downcase(Path.extname(entry.client_name))
        dest = Path.join([File.cwd!, "img", entry.uuid <> ext])
        resolution = socket.assigns[:resolution]
        open(path) |> auto_orient() |> resize_to_limit(resolution<>"x"<>resolution) |> save(path: dest)
        entry.uuid <> ext
      end)
    case socket.assigns[:uploaded_files] do
      ["picturedwarf.png"] -> {:noreply, assign(socket, :uploaded_files, uploaded_files)}
      _ -> {:noreply, update(socket, :uploaded_files, &(&1 ++ uploaded_files))}
    end
  end

  defp error_to_string(:too_large), do: "Too large"
  defp error_to_string(:too_many_files), do: "You have selected too many files"
  defp error_to_string(:not_accepted), do: "You have selected an unacceptable file type"
end
30.07.2021 16:51:31  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
csde_rats

AUP csde_rats 04.09.2021
Warum sind harte Bounces nen Strike gegen das Konto? Ist doch quasi nix passiert? Oder sperren einen Mailserver dafür auch (warum?).


... ich hab für unsere Anwenderrundmails (größter Teil aber eh intern) einfach ne Liste gemacht und copy-paste das ins BCC. Sind dann halt mehrere Mails, Outlook kann nur 1000 Empfänger pro Mail. Funktioniert bisher verschmitzt lachen
[Dieser Beitrag wurde 2 mal editiert; zum letzten Mal von csde_rats am 31.07.2021 9:40]
31.07.2021 9:40:07  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
NI-Xpert

Arctic
Ist in den FAQs beschrieben:
https://docs.aws.amazon.com/ses/latest/DeveloperGuide/faqs-enforcement.html

Bei wem es häufig bounced riskiert, dass Emails eher im Spamfolder landen
31.07.2021 15:26:34  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
homer is alive

AUP homer is alive 14.03.2022
Was nutzt ihr für SFTP/SSH in Python? Ich habe das Gefühl, dass die Auswahl echt schlecht ist. PySFTP ist seit 6 Jahren inaktiv, Paramiko ist zwar aktiver, aber nutzt bspw. keine Type-Hints traurig
02.08.2021 11:01:57  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Admiral Bohm

tf2_spy.png
Zuletzt Paramiko, aber stimmt leider, dass es keine wirklich gute, gepflegte lib gibt. traurig
02.08.2021 11:07:24  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
csde_rats

AUP csde_rats 04.09.2021
ssh-python ist ein libssh-Wrapper. Die API wird recht direkt abgebildet. libssh ist recht vollständig und insgesamt äußerst OpenSSH-kompatibel (bis hin zu so Sachen wie das es nahezu das exakt gleiche Logging ausgibt und die Fehlermeldungen exakt identisch sind).

Es gibt auch noch ssh2-python, was dann libssh2 wrapped. Ich habe mich nach einem Vergleich für libssh entschieden, weil:
- libssh kann Chapoly, libssh2 kann das nicht
- libssh kann Ed25519, libssh2 kann das nicht
- libssh schien mir die bessere API zu haben
- libssh2 kann unter Windows WinCrypto benutzen, braucht man kein OpenSSL mehr. Aber das schleppt man durch Python wahrhscheinlich eh rum (ohne OpenSSL kann Python auch keine Hashes berechnen!) und es sind eh nur ein paar MB, das macht den Kohl nicht mehr wirklich fett.

Die ganzen Pure-Python-Sachen (Paramiko, AsyncSSH) sind ausreichend wenn man nur ein paar Befehle mal absetzen will, aber in Sachen Durchsatz ist das alles nix - Bruchteil von Gigabit bei 100 % CPU.

e: Ob man SFTP wirklich benutzen will. Hmmm. Ich hab das sowohl mit AsyncSSH als auch mit libssh/ssh-python implementiert und der Code um das zu Pipelinen (wenn man das nicht tut => wieder nur ein Bruchteil von Gigabit-Durchsatz sobald ein bissl Latenz drauf ist) ist grauselig komplex, wenn man es richtig macht (also sowohl short reads als auch short writes handled; sftp-server hat Limits für beide, die stehen nicht im Standard). Ich fand den Code viel zu komplex um mich ernsthaft hinzustellen und zu sagen "Ja, passt, das kann man nehmen um Daten zu übertragen".
Deswegen habe ich das weggeworfen und komplett neu geschrieben... mit... request_exec /usr/bin/dd. Der Code ist ziemlich trivial inkl. Restarts bei Verbindungsproblemen, man kann beliebige Datenkompression per Pipe benutzen (ich nehme hier Zstandard, es ist sehr gut), die Performance ist so gut wie es eben mit SSH geht.
Directory listings per find(1) und -print0 mit entsprechendem Custom-Format-String. In unserem Fall ist die Performance hier relativ egal weil wir idR auf einem Lustre Dateisystem arbeiten (actually auf einem NFS-Mount der dann auf einen Lustre... andere Geschichte) und das ist natürlich episch langsam was sowas angeht, aber find(1) ist ohnehin schnell und schneller als alles in eine Pipe zu dumpen wird es bei SSH halt auch wieder nicht.

Großer Nachteil der Lösung ist, dass man statt nem forced command / nur SFTP-Zugang halt nen richtigen Shell-Zugang braucht. Ist für unsere Anwendung aber komplett egal, weil die Anwender das eh haben und brauchen.
[Dieser Beitrag wurde 3 mal editiert; zum letzten Mal von csde_rats am 02.08.2021 21:39]
02.08.2021 15:34:32  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
NI-Xpert

Arctic
Hat hier jemand Erfahrung mit der Beauftragung von Freelancern aus dem Ost-EU Ausland? Optimalerweise aus Polen?
Ob Einzelpersonen oder Dienstleister mit denen man Rahmenverträge schließen kann oder so? Und es im besten Fall günstiger ist als in Deutschland?
Wir könnten punktuell Verstärkung im Development gebrauchen.
10.08.2021 20:35:02  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Teh Ortus

UT Malcom
 
Zitat von NI-Xpert

Da wir aber zum Glück nicht mit Email Listen aus dem Vertrieb arbeiten bin ich da entspannt dass solche Massenmailings auch gut laufen. Die User registrieren sich ja für nen Account mit diesen Adressen und wir senden normalerweise außer der Double Opt In Mail nur Benachrichtigungen, falls der User sich die wünscht.



Weil ich gerade zufällig hier rein gucke und das sehe: Die "Mails die sich der User wünscht" nennen sich "Transactional Mail". Das umfasst alle Mails, die ich für den Betrieb des Dienstes senden müsst und die der Kunde auch nicht abbestellen kann.
Die anderen Mails mit "Listen aus dem Vertrieb" heißen typischerweise Kampagnen-Mails, oder ganz einfach Marketing-Mails. Oder wenn du die Marketing-Hansel ärgern willst offensichtlich "Spam".
Wenn du mal irgendwann einen Anbieter spezifisch zum Mail-Versand suchst, hast du dann die passenden Begriffe Breites Grinsen
10.08.2021 20:42:00  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
GarlandGreene

Mod GIGN
 
Zitat von NI-Xpert

Hat hier jemand Erfahrung mit der Beauftragung von Freelancern aus dem Ost-EU Ausland? Optimalerweise aus Polen?
Ob Einzelpersonen oder Dienstleister mit denen man Rahmenverträge schließen kann oder so? Und es im besten Fall günstiger ist als in Deutschland?
Wir könnten punktuell Verstärkung im Development gebrauchen.



wenn ihr Kommunikation richtig gut drauf habt und es gewohnt seid, mit Dienstleistern zusammenzuarbeiten, kann das klappen. Aber die Sprachbarriere und Kommunikationsprobleme sind durchaus übel genug, jeden finanziellen Vorteil zunichte zu machen. Die Kommunikationsprobleme kann man grundsätzlich auch mit einem Dienstleister im deutschsprachigen Raum haben, aber da sprechen sprichwörtlich alle dieselbe Sprache, und das in Wort und Schrift. Damit das lohnt, muss das ziemlich gut gesteuert werden.
10.08.2021 21:11:40  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Underboss

Underboss
Wir haben in der Firma ein Projekt, welches entwicklungstechnisch vollständig nach Indien ausgelagert ist.
Schon alleine von der Manpower her können wir es nicht selber stemmen und das Projekt ist zu vielversprechend, als das es zu langsam oder gleich gar nicht realisiert wird.
Das Ding ist jetzt nach einem Jahr fast durch und wir mächtig schlauer.

Wie Garland schon sagt, war bzw. ist die Kommunikation das größte Problem.
Alle können zwar irgendwo englisch, aber gerade komplexere Dinge unmissverständlich zu vermitteln oder vermittelt zu bekommen, war irgendwann schier unmöglich.
Wobei, so komplex musste es teilweise gar nicht sein, um Missverständnisse auftreten zu lassen, die erst Tage später bemerkt wurden.
Und dann war nicht mal klar, ob der Inder einfach „zu doof“ war, oder unsere Erklärungsversuche nicht gut genug.

Nach den ersten paar Monaten hatte mein Chef dann einen deutschsprachigen Projektleiter eingestellt, der dem indischen mächtig war.
So musste wir nur noch einer Person erzählen was wir wollten und zwischendrin die App kontrollieren.
Also auch hier ein + für Garlands letzten Punkt.

Corona war btw auch noch ein Thema. Ein Inder musste seine Mutter pflegen, für die es keinen Sauerstoff gab und ein anderer durfte seinen Onkel bestatten. :/
Alles in allem verbucht mein Chef das ganze als Erfolg, aber es war sehr holprig und andere, örtliche Gegebenheiten und kulturelle Unterschied sind nicht zu vernachlässigen.
10.08.2021 21:42:54  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Atomsk

Atomsk
Pfeil
 
Zitat von GarlandGreene

Aber die Sprachbarriere und Kommunikationsprobleme sind durchaus übel genug, jeden finanziellen Vorteil zunichte zu machen.



so, so sehr dies!

wenns um rudimentäre sachen geht, ist oft kein problem. aber wenns bei technischen details, spezifizierungen und ähnlichem kram zu missverständnissen kommt (welche man vielleicht erst deutlich später rausfindet), kann das enorme extraschleifen bedeuten.

eine unserer internen(!) entwicklungsabteilungen sitzt im osten und selbst bei denen rappelts schon öfters.
aktuell haben wir auch nen freelancer im team, der kein muttersprachler ist und da geht so viel verloren. das führt dann halt automatisch dazu, dass man details immer wieder nach-/abfragt, was halt auch etwas scheiße ist, aber halt der einzige weg sicherzustellen, dass alle nötigen details angekommen sind (ein kleiner vorteil ist, dass man die externen protokolle von terminen schreiben lassen kann - das ist dann quasi schon ne kleine kontrolle).
10.08.2021 23:02:27  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
NI-Xpert

Arctic
Ja Sprachbarriere sehe ich als Minimal. Sitze gerade in Polen (workation Breites Grinsen ) und bin gebürtiger Pole und daher hoffen wir da als Startup nah genug dran zu sein um eine gute Zusammenarbeit zu ermöglichen.
Stories mit indischem Outsourcing kenne ich nur vom hörensagen aus früheren Jobs im Agenturgeschäft und die waren eigentlich nie positiv. Freut mich daher mal von einem "alles in allem" positiven Beispiel zu lesen.
Wo ich mir halt am meisten Gedanken mache ist: Wie finde ich so einen Dienstleister? Natürlich kann ich Googlen (und mich da an Jobseiten vorbeiscrollen) um Leute zu finden die das anbieten was wir suchen aber da gibts sicher einige. Wenn ich mich da nicht auf ein Netzwerk aus Leuten verlassen kann die was empfehlen ist mein einziger erster Touchpoint die Webseite des Dienstleisters.
Oder denke ich falsch und sollte lieber bei den Gig-Marketplaces wie Fiverr/Upwork/Arc oder so anfangen? Da seh ich zumindest Sternchenbewertungen.
11.08.2021 8:56:50  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
hoschi

hoschi
 
Zitat von Admiral Bohm

Bei so statischen Content würde ich Hugo oder Jekyll benutzen (Contentersteelung dann z.b. in markdown) und das ganze in git(hub) pflegen und nur die generierte Seite auf den Server laden.



Danke. Auch für die nachfolgenden Posts!
[Dieser Beitrag wurde 2 mal editiert; zum letzten Mal von hoschi am 17.08.2021 18:00]
17.08.2021 17:59:40  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Fabsn

AUP Fabsn 29.05.2013
Folgende Situation


  • Ich habe eine Rechteverwaltung in einem MVC-System (CakePHP, ist aber irrelevant).
  • Die Rechte selbst werden unabhängig von Controllern und Actions in eigenen Dateien definiert. Nennen wir sie "Ressourcen".
  • Man kann nun an beliebigen Stellen im Code überprüfen, ob ein User Zugriff eine bestimmte Ressource hat.
  • Geil!


Beim Anlegen und Bearbeiten von Usern im Backend suche ich mir alle verfügbaren Ressourcen und möchte nun entsprechende Formularfelder ausgeben. Dabei hab ich nun folgende Problematik: Welcher Teil des Systems entscheidet, wie die Formularfelder ausgegeben werden?

Aktuell steuert jede Ressource selbst, welche Formularfelder zur Verfügung stehen. Dazu gibt es pro Ressource eine getFormElements()-Methode. In der Basis-Variante gibt diese drei Radios - je eines für "ja", "nein" und "mir egal" - als fertigen String zurück. Das hat den Vorteil, dass alles in der Klasse selbst passiert und verfügbare Optionen nicht über verschiedene Bereiche des Systems hinweg ausgetauscht werden müssen.

Der Nachteil ist: ich kann dort, wo die Felder letztlich ausgegeben werden, keinerlei Veränderung daran vornehmen. Weder kann ich die Reihenfolge ändern, noch die Radios in ein <select> umwandeln. Das ist irgendwie uncool.

Wenn ich stattdessen die getFormElements() durch eine getOptions() ersetze und mir so die Werte hole, die verfügbar sind, kann ich in den Views bestimmen, wie die Optionen dargestellt werden. Allerdings müsste ich dann in Sonderfällen auch noch Infos bereitstellen, um welche Art von Daten es sich handelt, da so ein Recht eben nicht nur die ja/nein/egalo-Variante sein kann.

Ein Beispiel: für die Rechte einer Newspflege kann es eine Einschränkung geben, die bestimmten Usern nur das Bearbeiten von News aus bestimmten Kategorien erlaubt. Es braucht also eine Liste mit allen Newskategorien und die View muss die Info bekommen: "Stell diese Daten mal als <select> dar (multiple aber). Dafür nimmst du bitte als Value für jede <option> das Property 'id', für das Label bitte Property 'title`."

Nun: wie?
Oder: was würdest DU tun?

Auf der einen Seite fühlt es sich falsch an, eigentlich view-spezifische Dinge in so speziellen Klassen zu generieren. Auf der anderen Seite verkompliziere ich durch eine andere Lösung etwas, "nur" um möglichst flexibel zu bleiben. Dazu müsste ich mir nun auch noch eine proprietäre Lösung für diesen Informationsaustausch ausdenken.

Ich hab eigentlich einen Post mit über 8000 Zeichen verfasst aber ich glaub der Thread ist noch nicht bereit dazu. Das hier ist die Kurzfassung. (:
25.08.2021 2:33:22  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Ameisenfutter

AUP Ameisenfutter 23.12.2022
Ist natürlich schwer, das aus der Ferne zu beurteilen, aber ich bin auch geneigt, zu sagen: das ist Aufgabe der View. Mach das mir den Options (kann ja ein Objekt sein, wo noch weitere Infos stehen, die die View interpretiert).

Das klingt alles schon ziemlich dynamisch, also wäre das wirklich so viel komplizierter?
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Ameisenfutter am 25.08.2021 7:22]
25.08.2021 7:22:20  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
X-Tender

AUP X-Tender 19.01.2009
Ich denke auch das diese Lösung mittels intelligenten Views in Verbindung mit Partials eine gute Lösung wäre.
Damit man ja nicht jedes Mal dieses spezielle select Element bauen muss das (und andere Inputs) über Partials lösen wo man nur die options reinballert.
25.08.2021 8:15:23  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Tenz

AUP Tenz 03.04.2009
Sehe ich auch so, die Ressourcen sind für lese & Schreib-Zugriff zuständig und die View arbeitet halt nur mit dem, was man hat und gehen generell erst mal davon aus dass die Ressource source of truth ist. Gängige Ui controls verallgemeinerst du, sodass du die entweder direkt einbauen oder noch mal in einem domainspeifischen UiControl spezifizierst (z..B. radioOption -> newsPublishRadioOption)

Ressources verstehe ich mal als Art Model-Repository.

Ich würde grundsätzlich jede Ressource nach dem gleichen Schema ausspielen:

ResourceInterface:
(ressourceType, userId): [
canReadEntries,
canUpsertEntries,
canDeleteEntries,
entry: [[canRead, canUpdate, canDelete, canChangeState, canPublish, getValues, displayName, id], …]
]

RessourcesInterface:
(userId, ressourceTypes): [RessourceInterface<ressourceType>, …]


AdminNews Controller so:
NewsReasources = Ressources.getCollection(userId, [FILTER_READ_ACCESS], [
RESSOURCE_NEWS, RESSOURCE_CATEGORIES
];

if !NewsRessource.canReadEntries() return forward 403

Hier AdminNewsView mach wat mit NewsRessources als News & Categories, ausserdem hier publishTypes

View:
- import generische view components/partials, uiListEntry, uiModalEditButton, uiRadioShizzle

publishOption = uiRadioShizzle(options: [
publishTypes.NO_PUBLISH: ‚ja‘,
publishTypes.YES_PUBLUSH: ‚nein‘,
publishTypes.ONLY_FOR_EDITORS: ‚nur mit Passierschein A38‘
], {style: uiRadioShizzle.PRIMARY, additionalCssClass: ,-bin-eine-besondere-schneeflocke,);

usePublishOption(entry): publishOption(state: entry.publishState)


News.entries each
uiListEntry
entry.displayName
if entry.canEdit: uiEditModalButton(entry.id)
if entry.canPublish: Veröffentlichen: usePublishOption(entry)

———

Funktionen in der UI pseudo als components, können ja auch einfach includes von partials sein die 2-3 Variablen weitergeben.


Was abgeschickt wird überprüft der Controller nochmal auf Schreibrechte etc.

Und das würde ich halt nach Bedarf nach oben oder unten engineeren. Allgemeine UI Elemente also mal anlegen mit einheitliche, interface (siehe radioOption oder so) und dann stückweise nach Bedarf konkretisieren.

Editbutton hier total allgemein, PublishOption dann Domainspezifisch.


Ich würde es für den Anfang ggf. etwas flacher halten als direkt in meinen Beispiel, außerdem kannst du ja jeder Zeit erst mal auf ein UI framework zurückgreifen für die Basis-Elemente, oder halt wirklich alles eben selbst bauen, falls du nicht viel, dafür aber spezifisches brauchst.

/: Entscheident ist hier, dass die View bestimmt wie du Daten anzeigst, die Reasource gibt hier nicht vor ob die Daten als Select, Slider oder Tinderprofil dargestellt werden sollen, das sind ja erst mal von der Präsentation unabhängige Daten.
[Dieser Beitrag wurde 6 mal editiert; zum letzten Mal von Tenz am 25.08.2021 22:52]
25.08.2021 22:31:50  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Ameisenfutter

AUP Ameisenfutter 23.12.2022
Was Tenz sagt.
25.08.2021 23:54:35  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
csde_rats

AUP csde_rats 04.09.2021
 
Zitat von Fabsn

Ein Beispiel: für die Rechte einer Newspflege kann es eine Einschränkung geben, die bestimmten Usern nur das Bearbeiten von News aus bestimmten Kategorien erlaubt. Es braucht also eine Liste mit allen Newskategorien und die View muss die Info bekommen: "Stell diese Daten mal als <select> dar (multiple aber). Dafür nimmst du bitte als Value für jede <option> das Property 'id', für das Label bitte Property 'title`."

Nun: wie?
Oder: was würdest DU tun?



ACLs als Liste von ACE-Tupel (also (Prinzipal, Darf/Darf-Nicht, Aktion) Tupel) modellieren und dann wahlweise Referenzen auf ACLs in Domänenobjekten unterbringen oder falls das aus irgendwelchen Gründen keinen Sinn ergibt ACLs über einen wie auch immer strukturierten Namespace ansprechen (<- in manchen Frameworks gibt es das Konzept von Ressourcen-URLs).

Eigene GUI-Abstraktion für ne 08/15 ACL-Implementierung kommt mir maximal Overkill vor und dürfte eh unnötig sein, wenn man die Behandlung der ACL einmal zentral modelliert und sich ein paar generische Views etc. gebastelt hat.
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von csde_rats am 26.08.2021 0:19]
26.08.2021 0:12:50  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
 Thema: Software-Entwicklung 0 ( new SammelThread() )
« erste « vorherige 1 ... 23 24 25 26 [27] 28 29 30 31 ... 51 nächste » letzte »

mods.de - Forum » Public Offtopic » 

Hop to:  

Mod-Aktionen:
27.01.2022 20:53:02 Maestro hat diesen Thread geschlossen.

| tech | impressum