← All posts tagged code

datacompboy

Чего только не найдёшь в заначке:
datacompboy@nuuzerpogodible:~$ cat aa.py 
import re

m = re.compile(r'^("([^"]|\\\\.)*"|\'([^\']|\\\\.)*\'|[^"\',])*,')

for s in ( '" " " " " , "',
           ' " " " " , " "',
           '" \' " \' " \' , " "',
           '" \' \' " " \' " \' \' \' , \'',
		   '" \' , \' " , " " , ',
		  ):
    print s, not not m.match(s)

datacompboy

if (send(socketNum, (char const*)data, dataSize, 0/*flags*/) != (int)dataSize) {
      makeSocketBlocking(socketNum);
      Boolean sendSuccess = send(socketNum, (char const*)data, dataSize, 0/*flags*/) == (int)dataSize;
      makeSocketNonBlocking(socketNum);
      return sendSuccess;
    }
    return False;
  }
а ничего, что они начало отсылают при этом дважды?
мать вашу за ногу! китайцы ни при чем!

datacompboy

А вот результат вот этого мне нравится: "pwgen -sByv 16"
datacompboy@nuuzerpogodible:~$ pwgen -sByv 16 20
h*H;"#='sTb?^p7K gd>~c~7W4qf|:dX{ 9dT)KN*+wM?ws:)N -jgJFh@4wN/-_f_g
;;*#R*"4Wh`_4trn }z'CX=;H')js,[9< v/h7fjpK!%d}vgm+ "VWh~q:p%+"`$7V)
g+{V4k~smP[?k`Pw >kF3b_$^t,"Hj7<= -vvPv.`-9%=fHg+f kq<r7w/|/N=f=.nd
_;nKnW=vJ4hgj(mx ~c!K9&!P3,)!-w~4 @JrM,vfbk$"F9V|p RPj!_4\z,$`ds`bt
^H/9vcK3$&?V^|[[ }`~KM$Htsz37Fz;_ vx.h/)`bP\M`$Nb4 pq.>|3.#g}+MPH@)

datacompboy

// Ага, гляжу в сырцы LIVE555. Дифф между live.2013.10.09.tar.gz и live.2014.02.19.tar.gz:
diff --git a/liveMedia/RTPInterface.cpp b/liveMedia/RTPInterface.cpp
index d45e5a8..3d88d55 100644
--- a/liveMedia/RTPInterface.cpp
+++ b/liveMedia/RTPInterface.cpp
@@ -324,19 +325,23 @@ Boolean RTPInterface::sendRTPorRTCPPacketOverTCP(u_int8_t* packet, unsigned p
 }
 
 Boolean RTPInterface::sendDataOverTCP(int socketNum, u_int8_t const* data, unsigned dataSize, Bool
-  if (send(socketNum, (char const*)data, dataSize, 0/*flags*/) != (int)dataSize) {
-    // The TCP send() failed.
-
-    if (forceSendToSucceed && envir().getErrno() == EAGAIN) {
-      // The OS's TCP send buffer has filled up (because the stream's bitrate has exceeded the cap
+  int sendResult = send(socketNum, (char const*)data, dataSize, 0/*flags*/);
+  if (sendResult < (int)dataSize) {
+    // The TCP send() failed - at least partially.
+
+    unsigned numBytesSentSoFar = sendResult < 0 ? 0 : (unsigned)sendResult;
+    if (numBytesSentSoFar > 0 || (forceSendToSucceed && envir().getErrno() == EAGAIN)) {
+      // The OS's TCP send buffer has filled up (because the stream's bitrate has exceeded
+      // the capacity of the TCP connection!).
       // Force this data write to succeed, by blocking if necessary until it does:
+      unsigned numBytesRemainingToSend = dataSize - numBytesSentSoFar;
 #ifdef DEBUG_SEND
-      fprintf(stderr, "sendDataOverTCP: resending %d-byte send (blocking)\n", dataSize); fflush(st
+      fprintf(stderr, "sendDataOverTCP: resending %d-byte send (blocking)\n", numBytesRemainingToS
 #endif
       makeSocketBlocking(socketNum);
-      Boolean sendSuccess = send(socketNum, (char const*)data, dataSize, 0/*flags*/) == (int)dataS
+      sendResult = send(socketNum, (char const*)(&data[numBytesSentSoFar]), numBytesRemainingToSen
       makeSocketNonBlocking(socketNum);
-      return sendSuccess;
+      return sendResult == (int)numBytesRemainingToSend;
     }
     return False;
   }

// А вот вырезка из changelog.txt:
2013.12.04:
- Updated the "sendDataOverTCP()" function (in "RTPInterface.cpp") to allow for the possibility of
  one of the "send()" calls partially succeeding - i.e., writing some, but not all, of its data.
- Fixed a couple of minor bugs.  (Thanks to "maksqwe1@ukr.net".)

// Вывод? Матерный.

datacompboy

# Блин. Для просто проиграть, как оказалось, даже авторизации камера не требует:
##################
require 'socket'
require 'pp'

host = '172.28.1.95'
conn = TCPSocket.new(host, 554)

setupmsg = "SETUP rtsp://#{host}/mpeg4/track1 RTSP/1.0\r\nCSeq: 1\r\nTransport: RTP/AVP/TCP;unicast\r\n"
playmsg = "PLAY rtsp://#{host}/mpeg4/ RTSP/1.0\r\nCSeq: 2\r\nRange: npt=0.000-"

conn.send(setupmsg+"\r\n", 0)
res, = conn.recvfrom 1500
sess = res.split("\r\n")[-1]

conn.send(playmsg+sess+"\r\n"+"\r\n", 0)
res, = conn.recvfrom 1500
pp "1: ", res

res, = conn.recvfrom 1500
pp "2: ", res

conn.close()

datacompboy

# Всякому, кто при апгрейде на руби2 получил геморрой с недекодируемым GZIP'ом посвящается
module HTTPResponseDecodeContentOverride
  def initialize(h,c,m)
    super(h,c,m)
    @decode_content = true
  end
  def body
    res = super
    if self['content-length']
      self['content-length']= res.bytesize
    end
    res
  end
end
module Net
  class HTTPResponse
    prepend HTTPResponseDecodeContentOverride
  end
end

datacompboy

D:\Himlab4\bin\library.zip\lib\graph\base.py:333: GtkWarning: gdk_drawable_copy_to_image: assertion `src_y >= 0' failed^M

        if y < 0:
            h += y
            y = 0
        if x < 0:
            w += x
            x = 0

        imageBack = self.__Drawable.get_image(x, y, w, h)

333я строка -- последняя.
вопрос один -- КАК y<0 если там выше if это фиксит заранее?!

datacompboy

Шо за хигня?!
====== 2013-06-21 11:37:58,562   40716 INFO     gui GUIrun 319 MainThread root ======
Run=<function UpdateInfo at 0x0365F330> took 0.016000032424926758

    def UpdateInfo(self):
        if self.wg is not None:
            self.wg.info.set_label(unicode(self.__InfoCmd, "cp866"))

Тупо set_label!

datacompboy

Когда вижу вот такое, я понимаю, что когда-то я был гениален:

CalcMULAB MACRO BA, BB, NH, NL
    IntCalcMULAB BA, BB, NH, NL, %(NH+1), %(NH+2), %(NH+3), %(NH+4)
ENDM            
IntCalcMULAB MACRO BA, BB, NH, NL, NH1, NH2, NH3, NH4
    MULAB BA, BB
    IF NL<>-1
    ADD A, Calc&NL
    MOV Calc&NL, A
    ENDIF       
    MOV A, Calc&NH
    IF NL<>-1   
    ADDC A, B   
        ELSE    
        ADD  A, B
    ENDIF           
    MOV Calc&NH, A
    IF NH<4
        MOV A, Calc&NH1
        ADDC A, #0
        MOV Calc&NH1, A
        IF NH<3
            MOV A, Calc&NH2
            ADDC A, #0
            MOV Calc&NH2, A
            IF NH<2
                MOV A, Calc&NH3
                ADDC A, #0
                MOV Calc&NH3, A
                IF NH<1
                    MOV A, Calc&NH4
                    ADDC A, #0
                    MOV Calc&NH4, A
                ENDIF
            ENDIF
        ENDIF
    ENDIF
ENDM
MULAB MACRO BA, BB
    MOV A, BA
    MOV B, BB
    MUL AB
ENDM

datacompboy

делаю так:
        self.wg.Dialog.set_transient_for(None)
        self.wg.Dialog.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_NORMAL)
        self.wg.Dialog.set_skip_taskbar_hint(True)
всё равно торчит в таскбаре

делаю эдак:
        self.wg.Dialog.set_transient_for(None)
        self.wg.Dialog.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_UTILITY)
        self.wg.Dialog.set_keep_above(False)
всё равно торчит поверх всех остальных окон.

куда удариться головой?

datacompboy

Хренею с защиты супер-пупер про aMember.
Цитирую:
function amember_crypt($string){^M
    if ($err = _amember_get_iconf()) amDie("License Error: $err");^M
    $key = '<ключ съел на всякий случай>';^M
    $cc = __internal_crypt($string, $key);^M 
    return rawurlencode($cc);^M 
}^M 
^M  
function amember_decrypt($string){^M 
    $key = '<ключ съел на всякий случай>';^M
    return rawurldecode(rawurlencode(__internal_crypt(rawurldecode($string), $key)));^M
}^M 

function decode_hb($license, &$dmm, &$smm, &$exp){^M
    $dmm = $smm = $exp = "";^M
    if (!strlen($license))^M
        return "License empty - please visit aMember Pro Control Panel -> Setup/Configuration -> License";^M
    if (!preg_match('|=====.+?=====\s+(\w+)\s+(\w+)\s+(\w+)\s+(\w+)\s+=====|', $license, $line))^M
        return "License invalid - please contact CGI-Central Support";^M
    array_shift($line);^M

    $exp = substr($line[1], 32+3, -1); $exp = decode_ha($exp);^M
    $dmm = substr($line[2], 1, -32-3); $dmm = decode_ha($dmm);^M
    $smm = substr($line[3], 32+1, -1); $smm = decode_ha($smm);^M

    $fs = is_lite() ? "<съел мусор>" : "<тут другой мусор>" ;^M
    $ls = is_lite() ? "<скушал мусор>" : ".<тут третий>";^M
    $md5 = strtoupper(md5($fs . $dmm . $exp . "<четвертый>"));^M
    $sd5 = strtoupper(md5("<пятый>" . $smm . $exp . $ls));^M
    $md5o = substr($line[1], 1, 32);^M
    $sd5o = substr($line[2], strlen($line[2])-33, 32);^M
^M
    if ($sd5o != $sd5) return "License error - secure domain check incorrect";^M
    if ($md5o != $md5) return "License error - domain check incorrect";^M
    if (($sd5o != $sd5) && ($md5o != $md5))^M
        return "License error - domain check failed";^M
    if (!$exp) {^M
        return "License expiration date incorrect";^M
    }^M
}^M

Честно -- я бы за такое оборжал.