Szkriptek: Python, Perl, Bash, ...

2 vagy tobb instance installacioja terraformmal

( ardi | 2025. 07. 16., sze – 07:53 )

Sziasztok,

van 3 tf fajlom egy konyvtarban:

vm1-eu-west3.tf (France)

vm2-eu-central-1.tf (Germany)

main.tf ...kozos az elozo 2 tf fajl szamara.

Cel: vpc, subnet, sg,igw,route, route association, instance...stb. letrehozasa 2 kulonbozo regioban aws alatt. Hogy tudnam ezt lefuttatni terraform parancsokkal ugyanabbol a konyvtarbol?

terraform init

terraform plan

terraform apply --target xxx

Es torolni - egyiket, masikat, mindkettot?

Koszonet elore a segitsegert.

Ardi

python: dict elem torlese iteracio kozben

( arpi_esp | 2025. 06. 09., h – 08:55 )

van erre szep megoldas?

d={"a":100,"az":73,"hup":10,"abc":1,"xyz":3,"asdf":1}

for k in d:
if d[k]==1: del d[k]

RuntimeError: dictionary changed size during iteration

megkerulni persze meg lehet, pl. elore lemasolni a d.keys() tombot es abban iteralni, vagy egy kulon tombbe gyujteni a torlendoket es egy masodik ciklusban csinalni a del-t...

Markdown, Pandoc, Typst to PDF

( Cozi | 2025. 05. 19., h – 22:05 )

Sziasztok!

Word DOC -> markdown konvertálás nagyszerűen működik a Pandoc-kal. Az MD-ből HTML és PDF generálás is működik. A PDF ág lenne most érdekes. A Typst CLI-ből is elérhető, a Pandoc konvertáláskor Typst template is használható.

Próbálom megérteni a Typst template felépítését, működését, de meg elég sok a homály.

Van itt a HUP-on valaki, aki md-ből tud csilivili PDF-et generálni, mert érti a szóban forgó template használatát?

Cz

Kép tömörítése nem megy

( zslaszlo | 2025. 04. 11., p – 19:12 )

Segítsetek kérlek. Viszonylag egyszerű feladatot szerettem volna megoldani. Egy könyvtárban lévő jpg képeket akartam konvertálni, úgy hogy max 500KB legyen a fájl mérete. Persze kérdeztem a jóbarátomat a chatgpt-t is, de sajnos nem sikerült megoldani, hogy egy nagyon nagy méretű és felbontású képet tömörítsen/átméretezzen. És íme a szkript:

#!/bin/bash
# Maximális fájlméret bájtban (500 KB)
MAX_SIZE=512000
# Minőségi beállítások
QUALITY_START=85
QUALITY_MIN=40
QUALITY_STEP=5
# Átméretezési korlátok
MAX_WIDTH=1600
MAX_HEIGHT=1600
# Iterálás a .jpg fájlokon az aktuális könyvtárban
for FILE in *.jpg; do
 # Ellenőrizzük, hogy tényleg létezik-e fájl
 if [ ! -f "$FILE" ]; then
 echo "Nincsenek .jpg fájlok az aktuális könyvtárban."
 exit 1
 fi
 # Fájl méretének ellenőrzése
 FILE_SIZE=$(stat -c%s "$FILE")
 if [ "$FILE_SIZE" -le "$MAX_SIZE" ]; then
 echo "✔️ Már megfelelő méretű: $FILE"
 continue
 fi
 echo "⚙️ Feldolgozás: $FILE"
 # Új fájlnév létrehozása _converted utótaggal
 NEW_FILE="${FILE%.*}_converted.jpg"
 # Ideiglenes fájl létrehozása
 TEMP_FILE="${NEW_FILE}_temp.jpg"
 cp "$FILE" "$TEMP_FILE"
 # Kép felbontásának lekérdezése
 IMAGE_WIDTH=$(identify -format "%w" "$TEMP_FILE")
 IMAGE_HEIGHT=$(identify -format "%h" "$TEMP_FILE")
 # Ha a kép szélessége vagy magassága túl nagy, akkor átméretezzük
 if [ "$IMAGE_WIDTH" -gt "$MAX_WIDTH" ] || [ "$IMAGE_HEIGHT" -gt "$MAX_HEIGHT" ]; then
 echo "🔄 Átméretezés szükséges: $FILE"
 convert "$TEMP_FILE" -resize "${MAX_WIDTH}x${MAX_HEIGHT}" "$TEMP_FILE"
 fi
 # Minőség csökkentése + átméretezés
 QUALITY=$QUALITY_START
 while [ "$QUALITY" -ge "$QUALITY_MIN" ]; do
 # Próbálunk minőséget csökkenteni
 convert "$TEMP_FILE" -sampling-factor 4:2:0 -strip -quality "$QUALITY" "$TEMP_FILE"
 
 # Fájl méretének újraellenőrzése
 NEW_SIZE=$(stat -c%s "$TEMP_FILE")
 if [ "$NEW_SIZE" -le "$MAX_SIZE" ]; then
 mv "$TEMP_FILE" "$NEW_FILE"
 echo "✅ Sikeresen tömörítve: $NEW_FILE (Új méret: $((NEW_SIZE / 1024)) KB)"
 break
 fi
 QUALITY=$((QUALITY - QUALITY_STEP))
 done
 # Ha nem sikerült 500 KB alá csökkenteni, törlés
 if [ "$QUALITY" -lt "$QUALITY_MIN" ]; then
 echo "⚠️ Nem sikerült 500 KB alá csökkenteni: $FILE"
 rm "$TEMP_FILE"
 fi
done

A hiba: ⚙ Feldolgozás: 01 Előtte.jpg
🔄 Átméretezés szükséges: 01 Előtte.jpg
⚠ Nem sikerült 500 KB alá csökkenteni: 01 Előtte.jpg

A fájl amibe beletörik a bicskája a 01 Előtte.jpg egy 3056x3056 állomány, mérete pedig 3.0MiB

Persze, ha valakinek van tuti műkődő snipeete aminek nem törik bele a bicskája az ekkora állományokba és megosztja itt velem azt is nagyon szépen megköszönöm.

Köszönöm az ötleteket.

Szerk. A célom, hogy weben jelenítsem meg a képeket és ehhez szeretném konvertálni. Lehet tehát webp is a formátum.

Python könyv (fizikai) kerestetik

( mngb | 2025. 02. 20., cs – 11:33 )

Üdv!

Fizikai python könyvet keresek.

Ami fontos, hogy legalább 3.6-os, de inkább 3.8(+)-os verzióhoz legyen.

Meg lehessen venni könyvesboltban, mert lehetőleg szombatig szeretném megszerezni (Budapest).

Bár rég olvastam magyarul bármiféle szakirodalmat, most nem lennék ellene.

Ha fentiek nem mennek, de valakinek éppen van valami elfekvő, amit át / meg lehet venni, arra is nyitott vagyok.

Köszönöm.

Keresek egy python oktató anyagot

( gee | 2025. 01. 27., h – 21:52 )

Valaha, mittudomén, 20 éve, amikor elhatároztam, hogy Python-t fogok használni bizonyos dolgokra, egy gyors Google kereséssel találtam egy weboldalt, ami tartalmazott néhány fejezetet, ami bemutatta, hogyan lehet Pythonban programozni. Simán lehet, hogy ez egy könyv tartalma volt online formában.

Arra emlékszem, hogy úgy indult, hogy python mint számológép. Aztán bemutatta, hogyan lehet egy függvényt definiálni, és erre egy fibonacci számoló rutint használt, azt ciklusból rekurzívan hívta.

Aztán általános dolgok jöttek, amikre nem emlékszem már ennyire részletesen.

Kb. 8 éve, amikor a fiam akart programozással ismerkedni, Google újra kiköpte ezt az oldalt, és másodjára is jó volt.

A lényeg az, hogy mostanában nem találom ezt a weboldalt / könyvet.

Google ad egy csomó találatot, és bizonyára sok nagyon jó ezek közül, de én azt a bizonyosat keresem.

Tudja esetleg valaki, hogy miről beszélek?

Python - Google API Client - conflict

( pityulaman1983 | 2025. 01. 20., h – 13:01 )

Sziasztok,

Generált a Copilot egy Python szkriptet.

Már az első sor hibára fut:

from googleapiclient.discovery import build

A hibaüzenet:

ImportError: Module use of python38.dll conflicts with this version of Python.

pip-pel telepítettem a modult, sikeresen le is futott.

Próbáltam már ezerféleképpen, az istennek nem akar működni.

python --version
Python 3.13.1

pip --version
pip 24.3.1

Egy kis AWK segítség kérés

( Polesz | 2025. 01. 12., v – 17:23 )

Sziasztok,

Próbáltam AWK scriptet írni, de nagyon nem ment, ezért megkértem a ChatGPT-t, hogy írja meg nekem. Az adott feladat, egy program kimenetét feldolgozni az alábbi módon:

1. sor nem kell, átlépjük
minden további sorban az első két mező elválasztása " " szóköz mentén, míg az utolsó rész ami egy - jel után van legyen a harmadik mező.

példa:

pelda.txt

 Header1 Header2 - Egyszó
Valami Szöveg - Több szó is lehet
Másik Sor - Még egy hosszabb kifejezés - van benne kötőjel

A hozzátartozó AWK script:

awk 'NR > 1 { 
 # Az első két szót (szöveg1, szöveg2) elválasztjuk
 split(1,ドル arr1, " "); # A szöveg1-t és szöveg2-t első lépésben szétválasztjuk
 split(2,ドル arr2, " "); # A szöveg2 után is szétválasztjuk
 # Azokat az adatokat, amik a "-" után vannak, egy változóba tesszük
 text = substr(0,ドル index(0,ドル " - ") + 3) # A "-" utáni szöveget változóba tesszük
 print arr1[1],",",arr2[1], ",", text # Kinyomtatjuk az első két szót és a kifejezést
}' pelda.txt

Lehet ezt egyszerűsíteni, vagy "jóvanazúgy"? :)

Terraform: változók átadása

( Tassadar | 2024. 12. 01., v – 09:34 )

Sziasztok,

root modul:

module "resource_group" {
for_each = var.customers
source = "./modules/resource_group"
customer_name = each.value.name
subscription_location = var.subscription.location
subscription_locationshortname = var.subscription.locationshortname
subscription_environment = var.subscription.environment
tags_owner = var.tags.owner
tags_deployed_by = var.tags.deployedby
tags_deployment_date = var.tags.deploymentdate
tags_cost_center = var.tags.costcenter
tags_snow_fgroup = var.tags.snowfgroup
}

module "key_vault" {
for_each = module.resource_group.resource_group_name
source = "./modules/key_vault"
location = module.resource_group.resource_group_location
resource_group_name = module.resource_group.resource_group_name
tenant_id = var.subscription.tenantid
tags_owner = var.tags.owner
tags_deployed_by = var.tags.deployedby
tags_deployment_date = var.tags.deploymentdate
tags_cost_center = var.tags.costcenter
tags_snow_fgroup = var.tags.snowfgroup
depends_on = [
module.resource_group.resource_group_name
]
}

resource_group output.tf-je:

output "resource_group_name" { value = azurerm_resource_group.rg.name }
output "resource_group_location" { value = azurerm_resource_group.rg.location }

plan kimenet:

│ Error: Invalid value for input variable │ │ on main.tf line 24, in module "key_vault": │ 24: location = module.resource_group.resource_group_location │ │ The given value is not suitable for module.key_vault.var.location declared at modules\key_vault\variables.tf:7,1-20: │ string required. ╵ ╷
│ Error: Invalid value for input variable │ │ on main.tf line 25, in module "key_vault": │ 25: resource_group_name = module.resource_group.resource_group_name │
│ The given value is not suitable for module.key_vault.var.resource_group_name declared at │ modules\key_vault\variables.tf:12,1-31: string required.

Mit ronthattam el?

Köszönöm!

[Megoldva]Python - Qt - PDF

( fezo | 2024. 11. 25., h – 20:38 )

Sziasztok,

A kérdés egyszerű: miért nem működik a következő kód?

from reportlab.pdfgen import canvas
from io import BytesIO
from PyQt6.QtCore import QBuffer, QIODevice
from PyQt6.QtPdf import QPdfDocument
from PyQt6.QtPdfWidgets import QPdfView
from PyQt6.QtWidgets import QApplication, QVBoxLayout, QWidget
def create_pdf_in_qbuffer():
 pdf_buffer = BytesIO()
 c = canvas.Canvas(pdf_buffer)
 c.drawString(100, 750, "Hello, ReportLab in QBuffer!")
 c.save()
 pdf_buffer.seek(0)
 # Save for debugging
 with open("debug_output.pdf", "wb") as f:
 f.write(pdf_buffer.getvalue())
 qbuffer = QBuffer()
 qbuffer.open(QIODevice.OpenModeFlag.WriteOnly)
 qbuffer.write(pdf_buffer.read())
 qbuffer.close()
 qbuffer.open(QIODevice.OpenModeFlag.ReadOnly)
 return qbuffer
def create_qpdfdocument_from_qbuffer(qbuffer):
 if qbuffer.size() == 0:
 print("Error: QBuffer is empty.")
 return None
 pdf_document = QPdfDocument(None)
 load_status = pdf_document.load(qbuffer)
 if load_status != QPdfDocument.Status.Ready:
 print("Failed to load PDF document. Status:", load_status)
 return None
 return pdf_document
def main():
 app = QApplication([])
 qbuffer = create_pdf_in_qbuffer()
 pdf_document = create_qpdfdocument_from_qbuffer(qbuffer)
 if pdf_document is None:
 print("Error: Could not create QPdfDocument")
 return
 pdf_view = QPdfView()
 pdf_view.setDocument(pdf_document)
 window = QWidget()
 layout = QVBoxLayout(window)
 layout.addWidget(pdf_view)
 window.setWindowTitle("QPdfDocument from QBuffer (Qt6)")
 window.resize(800, 600)
 window.show()
 app.exec()
if __name__ == "__main__":
 main()