Zum Inhalt springen

iscariot

Mitglieder
  • Gesamte Inhalte

    27
  • Benutzer seit

  • Letzter Besuch

Beiträge von iscariot

  1. Heißt, dass pro anfrage ein Prozess forkt und ich somit ziemlich schnell den Speicher vollkrieg und die Kiste steht.

    Mh.. Das hoert sich aber boese an... Sicher, dass das an den Perlmodulen liegt?

    Gibts eine andere Möglichkeit SVN mit Perl anzusprechen?

    system("svn", ...); waere eine Moeglichkeit, allerdings waere ein XS Modul schon schoener.

    Komischerweise finde ich zum perl modul SVN::Client fast gar nichts im Web, auf CPAN überhaupt nichts.

    http://search.cpan.org/search?query=svn&mode=module - Da findest du genuegend Module, die funktionieren.

    Ich finde nur was zu den sog. "Perl Bindings" und Begriffen wie SWIG, allerdings steht nirgends was konkretes (auch nicht im SVNbuch, dort steht nur ein Beispiel zu python) und wo man die herbekommt.

    Ich glaub' du hast da was falsch verstanden. Die "Perl Bindings", per SWIG, sind in SVN::Client zu finden. So sieht das Paket subversion-perl bei mir aus:

    /usr/lib/libsvn_swig_perl-1.so.0

    /usr/lib/libsvn_swig_perl-1.so.0.0.0

    /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/SVN

    /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/SVN/Base.pm

    /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/SVN/Client.pm

    /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/SVN/Core.pm

    /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/SVN/Delta.pm

    /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/SVN/Fs.pm

    /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/SVN/Ra.pm

    /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/SVN/Repos.pm

    /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/SVN/Wc.pm

    /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/auto/SVN

    /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/auto/SVN/_Client

    /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/auto/SVN/_Client/_Client.so

    /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/auto/SVN/_Core

    /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/auto/SVN/_Core/_Core.so

    /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/auto/SVN/_Delta

    /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/auto/SVN/_Delta/_Delta.so

    /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/auto/SVN/_Fs

    /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/auto/SVN/_Fs/_Fs.so

    /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/auto/SVN/_Ra

    /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/auto/SVN/_Ra/_Ra.so

    /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/auto/SVN/_Repos

    /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/auto/SVN/_Repos/_Repos.so

    /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/auto/SVN/_Wc

    /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/auto/SVN/_Wc/_Wc.so

    /usr/share/man/man3/SVN::Base.3pm.gz

    /usr/share/man/man3/SVN::Client.3pm.gz

    /usr/share/man/man3/SVN::Core.3pm.gz

    /usr/share/man/man3/SVN:: Delta.3pm.gz

    /usr/share/man/man3/SVN::Fs.3pm.gz

    /usr/share/man/man3/SVN::Ra.3pm.gz

    /usr/share/man/man3/SVN::Repos.3pm.gz

    /usr/share/man/man3/SVN::Wc.3pm.gz

    Hoffe, dass ich weiterhelfen konnte. :)

  2. Als erstes solltest du dir mittels Data::Dumper mal deine Daten angucken, damit du ungefaehr weisst, was dich erwartet.

    use Data::Dumper;
    
    ...
    
    print Dumper $data;
    Zu deinem Problem:
    perl -wle '$a={a=>1,b=>2,c=>3}; print $a' 
    
    HASH(0x8151f00)

    HASH(0x8151f00) steht hier fuer eine Hashreferenz. Willst du den Hash dereferenzieren, dann kannst du die ihn mittels %$a ansprechen. Falls in der Referenz selbst nochmal Referenzen auftreten, dann sprichst du diese per %{ $data->{referenz} } an.

    Am Besten wirfst du mal einen Blick in die Manpage "perlreftut".

  3. Verschiedene Ideen:

    • man smb.conf angucken und den "log level" hochschrauben.
    • Direkt auf dem Server das Einloggen probieren (klappt das nur mit einem bestimmten User nicht oder allgemein von dem Host?). smbclient -L localhost -U user_der_nicht_will
    • Gegebenenfalls hier die Ausgabe mit redseeligeren log level pasten. ;)

  4. DocumentRoot ist eine Option fuer den Indianer. Was dein ftpd macht ist wieder eine ganz andere Sache. Bei pure-ftpd ist die Option, die du suchst "-A".

    Falls auf deinem Indianer serverseitige Scripte (z.B. php/perl/python) ausgefuehrt werden koennen ist die "Sicherheit" wieder fuer die Katz'. Wenn du dort den User "einsperren" willst, dann solltest du auf mod_fastcgi zurueckgreifen. Das verhindert zwar nicht den Lesezugriff auf andere Teile des Systems wie /usr/bin, sorgt aber dafuer, dass Kunde A keine Dateien von Kunde B sehen/editieren kann.

    Komplexe Sache.. Am Besten liest du dich in das Thema ein, mietest einen Professionellen oder ziehst die moeglichen Konsequenzen.

    mfg

    iscariot

  5. Zombie sind tot und man kann sie nicht mehr killen.

    Zombie Prozesse sind Kennzeichen für ein unstabiles System/QUOTE]

    Zombie Prozesse sind definitiv nicht "tot". In einem Zombie kann sehr wohl noch Code existieren, der ausgefuehrt werden muss. Killen lassen sich diese Prozesse nicht und das System wird dadurch auch nicht instabil (ausser der Entwickler des Programms war betrunken und durch den Zombie entsteht ein Memory Leak oder aehnliches).

    Zombies entstehen, wenn der Elternprozess nicht auf den Kindprozess wartet oder sich vor dem Kindprozess beendet ohne setsid() auszufuehren.

    Manchmal beenden sich Zombieprozesse von selbst und manchmal hilft eben nur der reboot. Wenn du fit in C/Linux bist, dann soltest du das Programm, dass den Zombie erzeugt, vielleicht mal mit strace naeher beobachten und gegebenenfalls den Sourcecode selbst editieren...

    mfg

    iscariot

  6. Ich suche ein Perl Grundlagen Tutorial mit der Ausrichtung das ganze auf einem Apache laufen zu lassen, um Webseiten dynamisch zu erstellen.

    Das Thema waere im Linux/Unix Forum eigentlich besser aufgehoben, oder? ;)

    http://perl.apache.org/docs/index.html << Hier solltest du alles finden, was du suchst.

    Habe einen Unix Rechner da, auf den kein PHP drauf darf/kann.

    Hoert sich gut an. :)

    Also, wie sagt man dem Apache das es ein Perl-Script ist, das er da aufrufen soll ?

    Da gibt es unendliche Moeglichkeiten. mod_cgi, mod_perl, fast-cgi + perl... Schau dir den Link oben mal an. Ich wuerde Richtung mod_perl gehen. :)

    Gibt es spezifika die das Perlscript erfüllen muss, um als webseiten-Script zu funktionieren ?

    use strict; use warnings; use CGI; use CGI::Carp;

    Dein Script muss sicher und gut durchgetestet sein!

    ich komme bisher aus dem PHP-Bereich...

    Ich hoffe, dass sich das noch aendern wird. ;)

    Uebrigens eignet sich Perl auch noch zu mehr als Webscripten. ;)

    mfg

    iscariot

  7. Hola!

    Neulich habe ich in der Berufsschule folgende Aufgabe bekommen:

    Ein Wechselautomat nimmt beliebige Geldscheine entgegen. Er kann 2 Euro, 1 Euro und 50 Cent Muenzen ausgeben. Schreibe ein Programm, dass _alle_ Ausgabemoeglichkeiten berechnet.

    Wir haben mit dem Programm noch nicht angefangen, aber da Algorithmik sowieso nicht meine Staerke ist, wollte ich nachfragen wie man das am geschicktesten loesen kann.

    Ich hab mich mal (mit Perl und C) an dem Problem versucht und bin immer nur auf Algos gekommen, die nur Teile des Problems loesen.

    Wie wuerdet ihr hier vorgehen?

  8. Du schickst mir den Namen/Link von einer Serverhardware / einem Mainboard welches KEIN PXE unterstützt (und einigermaßen aktuell ist) , dann glaube ich dir :)

    NICs ala Realtek 8139(A/B) und mir fallen mindestens fuenf Hoster ein, bei denen diese Karte standardmaessig verbaut ist (da sie nur 1,50 Euro kostet). :)

    Und damit wir nicht ganz vom Thema abweichen:

    Das hier hab ich noch in meinen Bookmarks gefunden.

  9. Wir sind im Jahre 2005, ich habe in den letzten fünf Jahren glaubich keinen PC, geschweige denn Server gesehen, der kein PXE Boot konnte.

    Ich habe schon sehr viel Hardware gesehen, die kein PXE unterstuetzt. Mit 2005 hat das nichts zu tun. :)

    bsdlamer:

    Out-of-the-box wird kein freies System sowas unterstuetzen -> Frickelarbeit

    Es gibt afaik einige kommerzielle Hardwareloesungen, aber da lohnt sich der Einsatz nicht, wenn ihr nicht mindestens 600+ Server rumstehen habt. ;)

    mfg

    der verkaterte iscariot

  10. (Soviel in grauer Theorie, gemacht habe ich das noch nicht, aber klingt eigentlich ganz logisch)

    Logisch klingt das schon, nur unkompliziert ist das Ganze nicht. ;)

    Es gibt verschiedene Moeglichkeiten dein Netzwerk so einzurichten, dass die Kisten ueber tftp booten. Hier mal zwei kurze Denkanstoesse:

    1) Booten per grub-shell ueber Netzwerk. (Schlecht wenn der Kunde seinen MBR zerschossen hat)

    2) Booten direkt ueber PXE vom BIOS aus (schlecht, wenn der Server das nicht unterstuetzt)

    Ich wuerde dir eher zu Methode 2) raten und noch diesen Link mitgeben: http://syslinux.zytor.com/pxe.php

    PXE Boot in groesseren Netzwerken ist keine Sache, die in 5 Minuten erledigt ist! Man muss immer bedenken, was alles schief gehen kann. Bei meinem letzten Provider konnte ich z.B. jeden beliebigen Server im gleichen Netzwerk per tftp booten und dann ueber meine IP-Adresse darauf zugreifen.

    -> Lass dir Zeit beim Planen, des Netzwerklayouts. Geh alle Moeglichen Fehler durch und denke immer daran, dass es auch Administratoren gibt, die gerne mal alles zerschiessen. ;)

    mfg

    der angetrunkene iscariot

  11. Für Linux z.B.

    /usr/local/firefox/firefox

    Unter Linux und aehnlichen Systemen wuerde ich die Sache (je nach Anforderung) anders angehen.

    Je nachdem wie das Programm laeuft, wirst du deinen Browser unterschiedlich oeffnen wollen.

    Wenn Perl einfach nur den Browser starten soll, dann langt ein simples:

    #!/usr/local/bin/perl -w

    system("/pfad/zu/deinem/browser")

    Code, der nach system() folgt, wird erst ausgefuehrt, wenn der Browser wieder "geschlossen" wurde.

    Falls also der Browser gestartet werden soll und sofort weiter Code ausgefuehrt werden soll, muss die sache etwas anders aussehen:

    #!/usr/local/bin/perl -w
    
    use POSIX qw(setsid);
    
    setsid(); fork();
    
    exec("/pfad/zu/deinem/browser"); # achtung: exec returned nicht.
    
    # code... 

    Falls dem Browser jetzt noch dynamisch generierte Option uebergeben werden, solltest du, um auf Nummer sicher zu gehen, noch die Verwendung von qx// oder qr// in Betracht ziehen.

    mfg

    iscariot

  12. Ich bin zwar mehr der Perlmensch, aber dafuer langen meine PHP-Faehigkeiten noch. ;)

    #!/usr/bin/php

    <?
    $old = array("datei.txt", "bild.jpg", "config.conf");
    $new = array();

    foreach ($old as $element)
    {
    array_push($new, preg_replace('/\..+$/', '', $element));
    }

    print_r($old);
    print_r($new);
    ?>[/PHP]

    % ./test.php

    Array

    (

    [0] => datei.txt

    [1] => bild.jpg

    [2] => config.conf

    )

    Array

    (

    [0] => datei

    [1] => bild

    [2] => config

    )

    Gruss

    iscariot

  13. ich hebe ein kleines Prob mit Perl.

    Na, dann wollma mal. :)

    Zuerst jedoch: Bitte verwende zukuenftig Satzzeichen. Das erleichtert den Lesen/Verstehen Prozess um einiges. ;)

    und zwar habe ich eine Klasse an die ein $dbh als referenz aus der Basis datei übergeben wird

    Das halte ich fuer keine gute Idee. Du solltest die Verbindung in deinem Package selbst aufbauen. Wenn du naemlich innerhalb deines Packages die Verbindung zu der Datenbank schliesst und ausserhalb des Packages wieder versuchst auf die DB zuzugreifen... -> *BUMM*

    mir ist bisher leider nur noch nicht klar in wie weit ich in dem package dann noch use DBI einbinden muss ich wahr bisher der Meinung das wenn ich eine eigene Klasse mache in einem föllig abgeschottetem berreich arbeite.

    In Perl arbeitest du immer in einem Package. Uebrigens sind Packages keine Klassen, auch wenn es meistens so aussieht. ;) Das allererste Package, das durch den Interpreter laeuft heisst "main".

    Man unterscheidet hier die normalen Module von den Pragmas. Pragmas sind Anweisungen wie "use strict/warnings/integer/blib/"... Pragmas sind tatsaechlich nur in dem Package aktiv wo du sie aufrufst. Anders als normale Module wie z.B. DBI. Bevor dein Script ausgefuehrt wird hat der Perlinterpreter dein Script bereits auf Fehler und aehnliches untersucht und auch _ALLE_ use/require Anweisungen durchgefuehrt. Ergo -> use/require werden vor dem eigentlichen Script ausgefuehrt und sind in deinem Prozess ueberall verfuegbar.

    Ich bitte also um hilfreiche tips und ratschläge wie ich das Prob in denn grif bekomme. :-)

    Nun.. Ich weiss nicht ob ich deine Frage schon beantwortet habe, aber hier ein kleines Script, dass das ganze etwas veranschaulicht:

    #!/usr/bin/perl -w
    
    
    # Das Paket Ein::Test
    
    package Ein::Test;
    
    
    # Hier wird eine Variable ohne local/my/our einen Wert zugewiesen.
    
    # Dies ist nur moeglich wenn das strict Pragma nicht befolgt wird.
    
    $x = "Ich bin das Paket Ein::Test und folge nicht dem strict Pragma\n";
    
    print $x;
    
    
    # LWP::UserAgent ist in diesem Paket nicht verfuegbar.
    
    # Es wurde bereits schon in main geladen. - UNSAUBER!
    
    sub new { return bless { dbh => LWP::UserAgent->new() }, shift; }
    
    
    # Hier faengt wieder der 'normale' Perlcode an
    
    package main;
    
    
    # das strict Pragma und zwei Module laden
    
    use strict;
    
    use LWP::UserAgent;
    
    use Data::Dumper;
    
    
    # Die Methode 'new' aus 'Ein::Test' aufrufen und "Ein::Test"
    
    # als Argument mitgeben (->)
    
    # Danach die Datenstrucktur von $test betrachten.
    
    my $test = Ein::Test->new();
    
    print Dumper $test;

    Falls du noch mehr Infos benoetigst, dann empfehle ich dir die manpage 'permodlib' und falls noch Fragen offen sind: Nur raus damit. :)

    mit freundlichen Gruessen

    iscariot

  14. Es gibt prinzipiell zwei Möglichkeiten:

    PHP bietet auch Module fuer PAM und macht damit einiges Moeglich. ;)

    Absicherung direkt über den Webserver mittels .htaccess oder ähnlichem (wie oben angesprochen).

    Das hat allerdings den Nachteil, dass es schlecht konfigurierbar ist, da du alle User immer direkt im Apache anlegen und verwalten musst.

    Dann nimmt man das Beste von Beidem. :)

    http://docs.php.net/en/features.http-auth.html

  15. Linux = Heiser (oder wie das heisst)

    Swap = ext3

    Da du das Windows von Novell nutzt, denke ich, dass du ReiserFS meinst und dass deine Swappartition auf einem ext3 laeuft bezweifle ich. :)

    Am besten laesst du erstmal reiserfsck --check und/oder --badblocks durchlaufen. Falls Fehler auftreten, kannst du mal --fix-fixable probieren.

    Die reiserfstools sind sehr schoen dokumentiert und ein kleiner Blick auf "man reiserfsck" hat noch niemanden unter die Erde gebracht.

    Falls sich die Fehler nicht beheben lassen, dann wuerde ich dir raten, deine Daten schnellstmoeglich ueber eine LiveCD per "cd /mnt/deinsystem; tar cjvpf /mnt/deinbackup ." zu sichern, die Partition mit dd und mkreiserfs zu vergewaltigen um die Daten danach wieder einzuspielen.

    mfg

    Sebastian

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...