Neue Antwort schreiben 
 
Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Der Code-Schnippsel-Thread
gandro Offline
Quälgeist

Beiträge: 8.950
Registriert seit: Jul 2008
Beitrag #111
Der Code-Schnippsel-Thread
Lua-Script was die Anzahl Verbindungen in einem ZNC-basierten Bouncer zählt und entsprechend die Nicknames setzt.

Code:
require "irc"
local select = require "socket".select

local TIMEOUT = 20
local NICK_ON = "gandro"
local NICK_OFF = "gandro[off]"
local NICK_AWAY = "gandro[thc]"
local CONNECTION = {
    host = "rizonbnc.eu.rizon.net",
    port = 1234,
    password = "gandro:PasswortFürBNC"
}
local DEBUG = false

local s = irc.new({nick = NICK_ON})

local lastUpdate = 0
function checkClients()
    local time = os.time()
    if os.difftime(time, lastUpdate) > TIMEOUT then
        s:sendChat("*status", "ListClients")
        lastUpdate = time
    end
end

function handleClients(clients, old_nick)
    if old_nick ~= NICK_ON and old_nick ~= NICK_OFF and old_nick ~= NICK_AWAY then return end

    local new_nick = NICK_ON
    if #clients == 1 then
        new_nick = NICK_OFF
    elseif #clients == 2 then
        new_nick = NICK_AWAY
    end
    
    if new_nick ~= old_nick then
        s:send("NICK %s", new_nick)
    end
end

local clients = nil
s:hook("OnChat", function(user, me, msg)
    if user.nick ~= "*status" then return end
    
    if msg:find("| Host %s+ |") then
        clients = {}
        return
    elseif clients == nil then
        return
    end
        
    if msg:find("%+%-+%+") then
        if #clients > 0 then
            handleClients(clients, me)
            clients = nil
        end
    else
        ip = msg:match("|%s+(%d+%.%d+%.%d+%.%d+)%s+|")
        table.insert(clients, ip)
    end
end)

if DEBUG then
    s:hook("OnRaw", function(line) print(line) end)
end


s:connect(CONNECTION)
while true do
    checkClients()
    select({s.socket}, nil, TIMEOUT)
    s:think()
end

IRC-Bibliothek ist https://github.com/JakobOvrum/LuaIRC
07.11.2011 22:18
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
chiaki Offline
Die Pommesfee

Beiträge: 12.534
Registriert seit: Jul 2008
Beitrag #112
Der Code-Schnippsel-Thread
ist LUA kühl?
07.11.2011 22:33
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
gandro Offline
Quälgeist

Beiträge: 8.950
Registriert seit: Jul 2008
Beitrag #113
Der Code-Schnippsel-Thread
Lua ist als Sprache sehr cool, weil minimalistisch - hat aber (da ANSI C als Plattform) eine sehr beschränkte Standardbibliothek, man braucht also für jeden Scheiss (Sockets, Dateisystem-Operationen) ne Bibliothek. Und die haben jeweils ihre eigenen Design-Patterns, was grosse Programme recht unübersichtlich machen kann.
07.11.2011 23:01
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
DosAmp Offline
Anderes Zeigegerät

Beiträge: 12.217
Registriert seit: Jul 2008
Beitrag #114
Der Code-Schnippsel-Thread
Code:
http.content_type matches "audio/*"
Wireshark-Filter für MP3-Downloads und anderes Audio-Material. Nützlich wenn irgendwo ein Flash-Player „gestreamte“ Musik abspielt, die man mit Wireshark oder einem Befehl wie
Code:
# tcpdump -i eth0 -w webtraffic.pcap -s 0 tcp port 80
mitgeschnitten hat und dann ganz einfach aus dem TCP-Stream und dem enthaltenen HTTP-Response direkt als Audiodatei extrahieren kann.
thosch97 schrieb:  …, wird daher ne PE sein und das wird Win98 wahrscheinlich nicht können.
Deiner Logik zufolge kann Windows 98 also wahrscheinlich keine 32-Bit-Anwendungen ausführen?

Erinnerst du dich an #whfclassics? Es ist zurück! In Pog-Form.
(Dieser Beitrag wurde zuletzt bearbeitet: 28.12.2011 20:34 von DosAmp.)
28.12.2011 20:30
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
thosch97 Offline
All things have a right to grow

Beiträge: 9.820
Registriert seit: Feb 2010
Beitrag #115
Der Code-Schnippsel-Thread
DosAmp schrieb:  
thosch97 schrieb:  …, wird daher ne PE sein und das wird Win98 wahrscheinlich nicht können.
Deiner Logik zufolge kann Windows 98 also wahrscheinlich keine 32-Bit-Anwendungen ausführen?

Ach ups, das war in meinen Gedanken irgendwie ein Mischmasch aus "Win98==Dos zum anklicken" und Portable Executable mit Preinstallation Envirenment assoziiert…
Klar, türlich kann 98 32-Bit krams ausführen

Allerdings wird es wohl so sein dass zu moderne Programme (selbst ohne DirecX 10 und so weiter) die wenn man sie nochmal kompiliert laufen würden nicht direkt unter älteren Windows-Versionen laufen.

PGP-Key E384 009D 3B54 DCD3 21BF 9532 95EE 94A4 3258 3DB1 | S/MIME-Key 0x1A33706DAD44DA
G d-@ s+:- a--- C+++ UB+L++ P--- L++@ E-@>++ W+ N o? K? w>++ !O !M !V PS+++ PE-- Y+>++ PGP++>+++ !t 5? X? !R tv b+++>++++ DI !D G>+ e>+++ h !r>++ !z
„Die Aachener gelten als Erfinder des 4. Hauptsatzes der Thermodynamik: ‚Thermo schreibt man zweimal.“‘
“Saying that Java is good because it works on all platforms is like saying oral sex is good because it works on all sexes.”
„Es gibt 10 Sorten von Leuten: Die einen verstehen das Binärsystem, die anderen nicht.“
„Manche Männer lieben Männer, Manche Frauen eben Frauen; Da gibt's nix zu bedauern und nichts zu staunen; Das ist genau so normal wie Kaugummi kauen; Doch die meisten werden sich das niemals trauen“
28.12.2011 21:17
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
DosAmp Offline
Anderes Zeigegerät

Beiträge: 12.217
Registriert seit: Jul 2008
Beitrag #116
Der Code-Schnippsel-Thread
Code:
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]
"C:\\Windows\\regedit.exe"="RUNASINVOKER"
Registry-Eintrag, um den Registry-Editor auch unter einem Admin-Konto standardmäßig mit normalen Berechtigungen ohne einen UAC-Prompt auszuführen. Nützlich, wenn man häufiger nur mal einen Schlüssel nachschlägt oder Teile der Registry bearbeitet, die keine erhöhten Rechte benötigen (d. h. HKEY_CURRENT_USER).

Erinnerst du dich an #whfclassics? Es ist zurück! In Pog-Form.
07.01.2012 12:26
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
DosAmp Offline
Anderes Zeigegerät

Beiträge: 12.217
Registriert seit: Jul 2008
Beitrag #117
Der Code-Schnippsel-Thread
Aktuelles Subnetz ermitteln und mit nmap nach laufenden Hosts scannen:
Code:
@echo off
set INTERFACE="LAN-Verbindung"

rem d„mliche Umlaute
netsh interface ipv4 show config name=%INTERFACE% | find "Subnetzpr" > %temp%\uphosts.tmp
rem Unix-Äquivalent: SUBNET=`awk '{print $2}'`
for /f "tokens=2" %%t in (%temp%\uphosts.tmp) do set SUBNET=%%t

netsh interface ipv4 show config name=%INTERFACE% | find "IP-Adresse" > %temp%\uphosts.tmp
for /f "tokens=2" %%s in (%temp%\uphosts.tmp) do set OWNIP=%%s

del %temp%\uphosts.tmp

nmap -sn -n --exclude %OWNIP% %SUBNET%

Erinnerst du dich an #whfclassics? Es ist zurück! In Pog-Form.
(Dieser Beitrag wurde zuletzt bearbeitet: 10.01.2012 22:25 von DosAmp.)
10.01.2012 22:14
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
friedrichheinze Offline
...und Kondensatoren.

Beiträge: 2.838
Registriert seit: Jul 2008
Beitrag #118
Der Code-Schnippsel-Thread
Sortiere die D-INFK Kurse der ETH nach Bewertung über die veröffentlichten Vorlesungsevaluationen im Intranet. :D Geht sicher schöner, aber sonst schreibe ich kein Python. Benötigt pdfminer und Zugang zum ETHZ-Intranet.

Code:
import urllib2
import sys
import base64
import re
import sgmllib
import pdfminer
from pdfminer.pdfparser import PDFDocument, PDFParser
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter, process_pdf
from pdfminer.pdfdevice import PDFDevice
from pdfminer.converter import XMLConverter

urls = ("https://www1.ethz.ch/inf/intranet/evaluation/fs11", "https://www1.ethz.ch/inf/intranet/evaluation/hs11/index")
username = "nethzusername"
password = "nethzpasswort"
tmpfile = "tmp.pdf"
mwOfInterest = 10

class MyParser(sgmllib.SGMLParser):
  def parse(self, s):
    self.feed(s)
    self.close()

  def __init__(self, verbose=0):
    sgmllib.SGMLParser.__init__(self, verbose)
    self.pdfs = []
    self.titles = []
    self.pdffinder = re.compile(r'''.*\.pdf''', re.IGNORECASE)
    self.titlefinder = re.compile(r'''.*\'(.*)\'.*''', re.IGNORECASE)
  def start_a(self, attributes):
    active = False
    for name, value in attributes:
      if name == "href":
        if (self.pdffinder.match(value)):
          active = True
          self.pdfs.append(value)
      if name == "title":
        if (active):
          self.titles.append(self.titlefinder.match(value).group(1))

  def get_pdfs(self):
    return self.pdfs
  def get_titles(self):
    return self.titles

class MyOutWriter():
  def __init__(self):
    self.lines = []
  def write(self, string):
    self.lines.append(string)
  def get_lines(self):
    return self.lines

def geturl(theurl, username, password):
  print "Getting url '%s'..." % theurl
  req = urllib2.Request(theurl)
  try:
    handle = urllib2.urlopen(req)
  except IOError, e:
    print "URL requires authorization. Authenticating..."
    authline = e.headers['www-authenticate']
    authobj = re.compile(
      r'''(?:\s*www-authenticate\s*:)?\s*(\w*)\s+realm=['"]([^'"]+)['"]''',
      re.IGNORECASE)
    matchobj = authobj.match(authline)
    base64string = base64.encodestring('%s:%s' % (username, password))[:-1]
    authheader = "Basic %s" % base64string
    req.add_header("Authorization", authheader)
    try:
      handle = urllib2.urlopen(req)
    except IOError, e:
      print "Could not authenticate."
      return ""
  print "Authenticated."
  thepage = handle.read()
  return thepage
  
def parsepdf(fp):
  parser = PDFParser(fp)
  doc = PDFDocument()
  parser.set_document(doc)
  doc.set_parser(parser)
  pdfpass = ''
  doc.initialize(pdfpass)
  if not doc.is_extractable:
    raise PDFTextExtractionNotAllowed
  rsrcmgr = PDFResourceManager()
  outfp = MyOutWriter()
  device = XMLConverter(rsrcmgr, outfp)
  process_pdf(rsrcmgr, device, fp)
  return outfp.get_lines()

def extractMWs(pdflines):
  mws = []
  for i, line in enumerate(pdflines):
    if line == 'M':
      if(pdflines[i+3] == 'W' and
        pdflines[i+6] == ' ' and
        pdflines[i+9] == '='):
        try:
          mws.append(float(pdflines[i+12])+0.1*float(pdflines[i+18]))
        except ValueError, e:
          print "Could not convert to float: %s%s" % (pdflines[i+12], pdflines[i+18])
          mws.append(0.0)
  return mws

zipbag = []
for url in urls:
  mainpage = geturl(url, username, password)
  myparser = MyParser()
  myparser.parse(mainpage)
  pdfs = myparser.get_pdfs()
  titles = myparser.get_titles()

  for i, pdf in enumerate(pdfs):
    pdfsource = geturl(pdf, username, password)
    fp = open(tmpfile, 'w')
    fp.write(pdfsource)
    fp.close()
    fp = open(tmpfile, 'rb')
    mws = extractMWs(parsepdf(fp))
    try:
      mw = mws[mwOfInterest]
    except IndexError, e:
      print "Could not get MW... taking 0.0 instead"
      mw = 0.0
    zipbag.append((titles[i], mw))

for tpl in sorted(zipbag, key=lambda x: x[1]):
  print "%s: %f" % tpl
13.01.2012 21:38
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
gandro Offline
Quälgeist

Beiträge: 8.950
Registriert seit: Jul 2008
Beitrag #119
Der Code-Schnippsel-Thread
Funzt, sehr cool =)

Sind allerdings die Kurse vom Frühjahrssemester 2011, oder?

War da btw. nicht mal was, dass die jetzt Kurse online evaluieren wollen? War das dieses Semester schon, und falls ja warum hab ich keine Mail gekriegt, öö?
13.01.2012 22:15
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
friedrichheinze Offline
...und Kondensatoren.

Beiträge: 2.838
Registriert seit: Jul 2008
Beitrag #120
Der Code-Schnippsel-Thread
gandro schrieb:  Funzt, sehr cool =)

Sind allerdings die Kurse vom Frühjahrssemester 2011, oder?
urls = ("https://www1.ethz.ch/inf/intranet/evaluation/fs11", "https://www1.ethz.ch/inf/intranet/evaluation/hs11/index")

sollte eigentlich beides sein...

gandro schrieb:  War da btw. nicht mal was, dass die jetzt Kurse online evaluieren wollen? War das dieses Semester schon, und falls ja warum hab ich keine Mail gekriegt, öö?
AFAIK gibt's da n neues System, aber nicht bei allen Kursen, nur bei den obligatorischen oder so? Jedenfalls keine Ahnung davon, solche Kurse hab ich nicht mehr ;)
14.01.2012 16:01
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Neue Antwort schreiben 


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 4 Gast/Gäste