
Ale do rzeczy. Bartender sprawdzał się dobrze w tym co robił więc bez narzekania zapłaciłem za aplikację jeszcze w wersji 1.0.5 - blisko 13 lat temu i od tego czasu byłem zadowolonym jej użytkownikiem. Do wersji 6 i upgradu systemu do Tahoe.
Jako alternatywę dla Bartendera poleca się aplikację Ice, która jest całkowicie open-sourcowa. Jeszcze nie miałem okazji skorzystać. Dam znać, gdy znajdę chwilę, aby się nią pobawić.https://www.darkreading.com/cyberattacks-data-breaches/deepseek-breach-opens-floodgates-dark-web#!/usr/bin/env python3
import random
import pgzrun
import sys
TITLE = "Arkanoid by neq5@o2.pl"
BALL_SPEED = 5
WIDTH = 800
HEIGHT = 800
BALL_X_SPEED = BALL_SPEED
BALL_Y_SPEED = BALL_SPEED
loser = 0
paddle = Actor("palette.png")
paddle.x = WIDTH // 2
paddle.y = 790
ball = Actor("ball.png")
ball.x = 30
ball.y = 300
bars_list = []
def place_bars(x,y,image):
bar_x = x
bar_y = y
for i in range(25):
bar = Actor(image)
bar.x = bar_x
bar.y = bar_y
bar_x += 31
bars_list.append(bar)
box_list = ["red.png", "blue.png", "yellow.png", "pink.png"]
x = 25
y = 50
for color in box_list:
place_bars(x, y, color)
y += 31
def check_loser():
global loser
if loser:
sys.exit("game over")
def update_ball():
global BALL_X_SPEED, BALL_Y_SPEED, loser
ball.x -= BALL_X_SPEED
ball.y -= BALL_Y_SPEED
if (ball.x >= WIDTH) or (ball.x <=0):
BALL_X_SPEED *= -1
if ball.y <= 0:
BALL_Y_SPEED *= -1
if ball.y >= HEIGHT:
loser = 1
def draw():
screen.clear()
paddle.draw()
ball.draw()
for bar in bars_list:
bar.draw()
def update():
global BALL_X_SPEED, BALL_Y_SPEED, loser
if keyboard.left:
if paddle.x >= 1:
paddle.x = paddle.x - 5
if keyboard.right:
if paddle.x <= WIDTH:
paddle.x = paddle.x + 5
update_ball()
if len(bars_list) == 0:
sys.exit("winner!")
for bar in bars_list:
if ball.colliderect(bar):
bars_list.remove(bar)
BALL_Y_SPEED *= -1
if paddle.colliderect(ball):
BALL_Y_SPEED *= -1
rand = random.randint(0,1)
if rand:
BALL_X_SPEED *= -1
check_loser()
pgzrun.go()
#!/usr/bin/env python3
from socketserver import ForkingTCPServer, StreamRequestHandler
import socket
import select
import time
import argparse
LOCAL_PORT = '20009'
DESTINATION_IP = '84.10.53.220'
DESTINATION_PORT = '22'
parser = argparse.ArgumentParser(description='IP Tunnel 0.3', epilog='neq5@o2.pl')
parser.add_argument('-l', '--local_port', metavar='local_port', dest='lp', type=int, default=LOCAL_PORT)
parser.add_argument('-i', '--ip', metavar='destination_ip', dest='ip', type=str, default=DESTINATION_IP)
parser.add_argument('-d', '--destination-port', metavar='destination_port', dest='dp', type=int, default=DESTINATION_PORT)
args = parser.parse_args()
class EchoHandler(StreamRequestHandler):
def handle(self):
ess = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ess.connect((args.ip, args.dp))
self.request.settimeout(None)
print('Connection request from', self.client_address)
while True:
x, _, _ = select.select([ess, self.request], [], [])
if ess in x:
data = ess.recv(4096)
if len(data) == 0:
break
self.request.send(data)
if self.request in x:
msg = self.request.recv(4096)
if len(msg) == 0:
break
ess.send(msg)
time.sleep(0)
print('Connection ended with', self.client_address)
if __name__ == "__main__":
serv = ForkingTCPServer(('', args.lp), EchoHandler)
serv.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
serv.serve_forever()
https://sklep.securitum.pl/poznaj-aiforum.unix.pl to miejsce spotkań entuzjastów systemów operacyjnych i technologii związanych z UNIX. Nasze forum służy do wymiany wiedzy, rozwiązywania problemów oraz dzielenia się doświadczeniem wśród użytkowników zarówno początkujących, jak i zaawansowanych. Dołącz do naszej społeczności!