knowledgebase/journals/2024_01_25.md
2024-02-17 17:31:16 +01:00

6.2 KiB

  • 06:11 quick capture: Ollama releases Python and JavaScript Libraries #ollama #llm
  • 09:57 quick capture: Python & JavaScript Libraries · Ollama Blog #ollama #llm
  • 12:59 quick capture: How to Build an LLM Rag Pipeline with Llama-2, PgVector, and LlamaIndex - DEV Community #llm #RAG
  • 13:04 quick capture: Practical Guide to Crafting your first LLM-powered App Using RAG Framework #RAG #llm
  • 21:13 quick capture: GitHub - jerpint/buster #llm #RAG
  • 21:23 quick capture: Khoj: An Open-Source AI Copilot for your Second Brain #knownledgebase #llm
  • Chiedi "stringa"
  • Chiedi "chiave"
  • Per ogni $carattere della stringa
    • $nuovo_carattere = Posizione del $carattere + $chiave
    • Sostituisci "carattere" con "nuovo carattere"
  • Stampa la nuova "stringa"
  • Riunione con Oliva e Gao
  • Cifrario di Cesare #Introduzione alla programmazione
    • def cesar_cipher(text, key):
          result = ""
      
          for i in range(len(text)):
              char = text[i]
      
              if char.isupper():
                  result += chr((ord(char) - 65 + key) % 26 + 65)
              else:
                  result += chr((ord(char) - 97 + key) % 26 + 97)
      
          return result
      
      text = input("Inserisci il testo da cifrare: ")
      key = int(input("Inserisci la chiave: "))
      
      print("Testo cifrato: ", cesar_cipher(text, key))
      
    • ord(char) - 65 converte il carattere maiuscolo in un numero tra 0 e 25, corrispondente alla sua posizione nell'alfabeto (A=0, B=1, ..., Z=25). Questo perché ord('A') restituisce il valore ASCII di 'A', che è 65.
    • + key sposta questo numero di un numero di posizioni pari alla chiave. Per esempio, se la chiave è 2, 'A' (0) diventa 'C' (2), 'B' (1) diventa 'D' (3), eccetera.
    • % 26 si assicura che il risultato rimanga all'interno dell'alfabeto. Se il risultato della somma è maggiore di 25, "torna all'inizio" dell'alfabeto. Per esempio, 'Y' (24) con chiave 2 diventa 'A' (0), perché 24 + 2 = 26, ma 26 % 26 = 0.
    • + 65 converte il numero risultante di nuovo in un valore ASCII, in modo che possa essere convertito in un carattere con chr.
    • chr(...) converte il valore ASCII risultante nel corrispondente carattere.
    • result += ... aggiunge il carattere cifrato al risultato finale.
    • import sys
      
      def cesar_cipher(text, key):
          result = ""
      
          for i in range(len(text)):
              char = text[i]
      
              if char.isupper():
                  result += chr((ord(char) - 65 + key) % 26 + 65)
              elif char.islower():
                  result += chr((ord(char) - 97 + key) % 26 + 97)
              else:
                  result += char
      
          return result
      
      key = int(sys.argv[1])
      text = sys.stdin.read().rstrip()
      
      print("Testo cifrato: ", cesar_cipher(text, key))
      
    • for char in ['A', 'B', 'C', 'D', 'E', 'a', 'b', 'c', 'd', 'e']:
          print(f"'{char}' -> {ord(char)}")
      
    • Il codice ASCII, o American Standard Code for Information Interchange, è un metodo standardizzato per codificare i caratteri in numeri che i computer possono gestire. Questo sistema di codifica fu sviluppato negli anni '60 e assegna un numero univoco a ciascun carattere utilizzato nei computer, inclusi i caratteri alfabetici, numerici, di punteggiatura e di controllo.
    • Nel codice ASCII standard, i numeri da 0 a 31 sono riservati per i caratteri di controllo (come il ritorno a capo e il tabulatore), i numeri da 32 a 47 sono riservati per i caratteri di punteggiatura, i numeri da 48 a 57 sono riservati per i numeri da 0 a 9, e così via.
    • Per quanto riguarda le lettere dell'alfabeto, nel codice ASCII i numeri da 65 a 90 sono riservati per le lettere maiuscole, mentre i numeri da 97 a 122 sono riservati per le lettere minuscole. Quindi, 'A' è associata al numero 65, 'B' al numero 66, e così via, fino a 'Z' associata al numero 90. Analogamente, 'a' è associata al numero 97, 'b' al numero 98, e così via, fino a 'z' associata al numero 122.
    • Queste assegnazioni non sono casuali, ma seguono un ordine preciso che rende il codice ASCII facile da utilizzare e da ricordare.
    • ASCII e Unicode sono entrambi standard di codifica dei caratteri, ma ci sono alcune differenze chiave tra i due.
    • ASCII (American Standard Code for Information Interchange) è un sistema di codifica a 7 bit che può rappresentare 128 caratteri diversi. Questi caratteri includono le lettere maiuscole e minuscole dell'alfabeto inglese, i numeri da 0 a 9, i caratteri di punteggiatura e una serie di caratteri di controllo. ASCII è stato sviluppato negli Stati Uniti negli anni '60 e da allora è stato esteso in varie forme per includere caratteri aggiuntivi, come le lettere accentate utilizzate in molte lingue europee.
    • Unicode, d'altro canto, è un sistema di codifica molto più recente e molto più ampio. Unicode utilizza fino a 32 bit per carattere, il che significa che può rappresentare oltre un milione di caratteri diversi. Questo è sufficiente per coprire praticamente tutti i sistemi di scrittura attualmente in uso nel mondo, oltre a una vasta gamma di simboli speciali. Unicode include anche una versione estesa di ASCII come suo sottoinsieme, quindi tutti i caratteri ASCII sono rappresentati nello stesso modo in Unicode.
    • La principale differenza tra i due, quindi, è che mentre ASCII può rappresentare solo un set molto limitato di caratteri (principalmente quelli utilizzati nell'inglese scritto), Unicode può rappresentare quasi tutti i caratteri di tutte le lingue del mondo. Questo rende Unicode molto più versatile e lo ha reso lo standard di codifica dei caratteri più comunemente utilizzato nel web e in molte altre applicazioni.