26.11.25

installation environnement anaconda (miniconda)

 https://www.anaconda.com/download (Anaconda3-xxxxxx-Windows-x86_64.exe)

installer python 3.12 (les nouvelles versions sont trop avancées pour la compatibilité avec certaines librairies)

dans anaconda Navigator

installer le plugin "JupyterLab" (An extensible environment for…)

dans Environments on peut créer un nouvel environnement avec les packages dont on a besoin et leur version

(ex : conda create --prefix "C:\Programmes\anaconda3\MachineLearning" python=3.12.12)

ouvrir le terminal depuis le nouvel environnement

conda install matplotlib scikit-learn pandas seaborn tensorflow 

pip install --upgrade tensorflow 

conda install git pydot graphviz anaconda-client

lancer juypterlab (ça devrait ouvrir l'url localhost:8888/tree)

------------------------------------------------------------------------------------------------

MINICONDA

------------------------------------------------------------------------------------------------

https://repo.anaconda.com/miniconda/

 https://www.anaconda.com/docs/getting-started/miniconda/install#linux-terminal-installer

https://www.geeksforgeeks.org/machine-learning/set-up-virtual-environment-for-python-using-anaconda/

conda create -n ML_ENV python=3.12.12 anaconda //installe avec toutes les librairies scientifiques

conda activate ML_ENV

 

 

27.8.25

docker ollama

 dans docker hub --> ollama --> pull

ensuite cela apparait dans image

on peut démarrer l'image (nom : ollama_test, port : 11434)

cela créé une entrée dans containers

se connecter à http://localhost:11434

pour installer un modèle en ligne de commande pour Windows --> Invoke-WebRequest -Uri "http://localhost:11434/api/pull" -Method POST -Body '{"name": "llama3"}' -ContentType "application/json"

docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main

puis le container est lancé et on peut l'atteindre avec http://localhost:3000 (user, mdp)

10.8.25

Connexion WWAN Mobile Ubuntu

 dans le point d'accès :

Nom : Sunrise

APN : internet

Nom d'utilisateur : (vide)

Mot de passe : (vide) 

15.5.25

nordvpn gui ubuntu

 sh <(wget -qO - https://downloads.nordcdn.com/apps/linux/install.sh) -p nordvpn-gui

sudo groupadd nordvpn

sudo usermod -aG nordvpn $USER

(ou bien se connecter avec le menu login de l'application)

reboot

nordvpn login

nordvpn connect

13.5.25

installer docker desktop sur ubuntu 24.04

 https://fr.linux-console.net/?p=34479

sudo apt install apt-transport-https ca-certificates curl gnupg
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu noble stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade && sudo apt-get full-upgrade && sudo apt-get autoremove

télécharger le deb sur cette page : 

https://docs.docker.com/desktop/setup/install/linux/ubuntu/

sudo dpkg -i docker-desktop-amd64.deb

redémarrer

24.4.25

docker desktop sql server

 https://www.youtube.com/watch?v=Y7CMbve-Mos

télécharger docker desktop : https://www.docker.com/products/docker-desktop/

sur http://mcr.microsoft.com/, cliquer sur "Category - Databases" et sélectionner "Microsoft SQL Server Ubuntu based Images"

dans "About" copier la commande pour 2019-latest --> docker pull mcr.microsoft.com/mssql/server:2019-latest

--> cela créé une entrée dans "Images"

lancer la commande dans un terminal

lancer la commande : docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=yourStrong(!)Password" -p 1433:1433 --name sqlserver2019 --hostname sqlserverHost -d mcr.microsoft.com/mssql/server:2019-latest

on peut aussi depuis "Images" cliquer sur "play" pour créer un container

--> cela créé une entrée dans "Containers" avec le nom "sqlserver2019". on peut créer plusieurs containers (avec des noms différents) à partir des images 

- ON TROUVE LA COMMANDE DANS LA PARTIE "USAGE" DE LA PAGE DE TELECHARGEMENT

- en lançant la commande cela créé le docker dans docker desktop aussi (avec le bon nom)

en passant la commande "docker ps" on doit voir apparaître le docker up

ensuite on se connecte à la base de données :

- server : localhost

- login : sa

- password : yourStrong(!)Password

- select @@VERSION

docker stop sqlserver

url utiles : https://hub.docker.com/

--> podman

17.4.25

ollama_deepseek_pdf_streamlit

def load_pdf(file):
    with open("temp.pdf", "wb") as f:
        f.write(file.getvalue())
    loader = PyPDFLoader("temp.pdf")
    return loader.load()

def get_pdf_first_page_image(file):
    with open("temp.pdf", "wb") as f:
        f.write(file.getvalue())
    doc = pymupdf.open("temp.pdf")
    os.makedirs("static", exist_ok=True)  # Ensure storage directory exists
    pix = doc[0].get_pixmap()
    image_path = "static/first_page.png"
    pix.save(image_path)
    return image_path

def chunk_documents(docs):
    text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
    return text_splitter.split_documents(docs)

def create_retriever(docs_json):
    docs = json.loads(docs_json)
    embedder = HuggingFaceEmbeddings(model_name="sentence-transformers/all-MiniLM-L6-v2")
    vector = FAISS.from_texts(
        [doc["page_content"] for doc in docs],
        embedder,
        metadatas=[{"source": doc["metadata"].get("source", "Uploaded PDF")} for doc in docs]
    )
    return vector.as_retriever(search_type="similarity", search_kwargs={"k": 3})

def build_prompt():
    prompt = """
    1. Use the following context to answer the question.
    2. If you don't know the answer, say "I don't know."
    3. Keep the answer concise (3-4 sentences).
   
    Context: {context}
   
    Question: {question}
   
    Helpful Answer:"""
    return PromptTemplate.from_template(prompt)

def build_qa_chain(retriever, llm):
    prompt = build_prompt()
    llm_chain = LLMChain(llm=llm, prompt=prompt, verbose=True)
    document_prompt = PromptTemplate(
        input_variables=["page_content", "source"],
        template="Context:\ncontent:{page_content}\nsource:{source}",
    )
    combine_documents_chain = StuffDocumentsChain(
        llm_chain=llm_chain,
        document_variable_name="context",
        document_prompt=document_prompt,
    )
    return RetrievalQA(
        combine_documents_chain=combine_documents_chain,
        retriever=retriever,
        return_source_documents=True,
    )

def main():
    st.set_page_config(layout="wide")
    st.title("🚀 Fast RAG-based QA with DeepSeek R1")
   
    with st.sidebar:
        uploaded_file = st.file_uploader("Upload a PDF file", type="pdf")
       
        if uploaded_file:
            try:
                image_path = get_pdf_first_page_image(uploaded_file)
                st.image(image_path, caption="First Page Preview", use_column_width=True)
            except Exception as e:
                st.error("Failed to load preview: " + str(e))
   
    if uploaded_file:
        with st.spinner("🔄 Processing PDF..."):
            retriever = process_pdf(uploaded_file)
       
        llm = get_llm()
        qa_chain = build_qa_chain(retriever, llm)
       
        user_input = st.text_input("Enter your question:")
       
        if user_input:
            with st.spinner("🤖 Generating response..."):
                response = qa_chain.invoke({"query": user_input})["result"]
                st.write("### 📜 Answer:")
                st.write(response)
    else:
        st.info("📥 Please upload a PDF file to proceed.")

25.3.25

install environnement développement ubuntu 24.04 python

 depuis le store :
- vscode
- jupyterlab (puis installer python depuis la)
sudo apt-get install python3-pip
sudo apt-get install python3-numpy (pour installer un package)
https://www.cherryservers.com/blog/install-pip-ubuntu
pour savoir où est installé python : which python3 

CLASSE
------
class Voiture:
    marque: str
    modele: str

    def __init__(self, marque: str, modele: str):
        self.marque = marque
        self.modele = modele

    def afficher_infos(self):
        print(f"Voiture : {self.marque} {self.modele}")

INSTANCIATION
-------------
ma_voiture = Voiture("Tesla", "Model 3")
ma_voiture.afficher_infos()

ENVIRONNEMENT VENV
------------------
#création de l'environnement. cela créé un répertoire ENV_DIR avec une certaine structure
which python3 ou 
python -m venv ENV_DIR
#pour l'activer
./ENV_DIR/Scripts/activate
#installer les requirements
#faire un fichier requirements.txt avec p.ex
Flask==3.0.2
Flask-Cors==4.0.0
Flask-WTF==1.2.1
future==1.0.0
gevent==24.2.1
greenlet==3.0.3
pip install -r requirements.txt
#dans vscode faire ctrl+shift+p - aller dans "python interpreter" et sélectionne le python dans le répertoire script

20.2.25

Postman variable token

- créer une collection
- créer une request
- dans "Authorization", "Auth Type" : "Bearer Token", "Token" : {{MON_TOKEN}}
- sur la collection
- clic droite, Edit
- Scripts / Pre-request
pm.sendRequest({
    url: "https://login.microsoftonline.com/XXX/oauth2/v2.0/token",
    method: 'POST',
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded'
    },
    body: {
        mode: 'urlencoded', 
        urlencoded: [
            { key: "grant_type", value: 'client_credentials' },
            { key: "client_id", value: 'XXX' },
            { key: "client_secret", value: 'XXX' },
            { key: "scope", value: 'https://XXX.crm4.dynamics.com/.default' }
        ]
    }
}      ,
(err, res) => {
    if (err) {
        console.log(err);
        return;
    }
    // Vérifiez si le statut de la réponse est 200
    if (res.code === 200) {
              console.log("OK récupération du token:", res);
        const responseJson = res.json();
        const token = responseJson.access_token;
        // Sauvegarder le token dans une variable d'environnement de collection
        pm.collectionVariables.set("MON_TOKEN", token);
    } else {
        console.log("Erreur lors de la récupération du token:", res);
    }
});

13.2.25

exemples github desktop + branches

 - créer un projet sur GitHub.com
- depuis GitHub desktop, faire un clone du projet
- créer un projet C#
- commiter le premier code sur GitHub
- depuis GitHub desktop créer une nouvelle branche "ajout_writeline"
- publish la branche
- ajouter du code dans program.cs
- commiter/push dans la brahce "ajout_writeline"
- depuis GitHub desktop, revenir sur la branche "main"
--> le code ajouté doit disparaitre
- ajout d'une méthode dans program.cs
- commit push dans la branche 'main'
- depuis GitHub desktop, revenir sur la branche "ajout_writeline"
- depuis GitHub desktop, "Create Pull Request"
- si ok, merge pull request
- delete branche "ajout_writeline"
- depuis GitHub desktop, se remettre sur la branche "main" et faire un refresh
--> le code doit être fusionné
- depuis GitHub desktop, supprimer la branche également

5.11.24

Copilot dans Visual Studio

 copilot dans visual studio :

---------------------------

pour les version récentes de Visual Studio il n'y a plus le petit icône en bas à gauche. du coup en haut à droite - settings - options - "Show inline complétions"

- tab pour accepter la suggestions

- faire un commentaire en expliquant ce que l'on veut et retour à la ligne pour avoir une suggestion

- ALT et . pour changer une suggestion

- ALT et / pour avoir la fenêtre copilot qui s'ouvre dans le code

- dans la fenêtre on peut taper / pour avoir des options

- on sélectionne un bout de code, on fait ALT et /, et on écrit /OPTIMIZE et la touche ENTER

- dans la fenêtre faire # et le nom_d_un_fichier et la question (p.ex peux-tu me décrire les méthodes de ce fichier)

ex : # Program.cs peux-tu me donner le nom des variables globales

- dans le chat p.ex on peut lui dire #le_nom_du_fichier sur lequel on veut agir

- describe the file #Program.cs

- / et quelque chose propose plein de trucs

- /askvs ?????

15.9.24

Intelligence Artificielle

 Certifications :

-------------------------------------------------------

https://learn.microsoft.com/en-us/credentials/certifications/azure-ai-fundamentals/?practice-assessment-type=certification

passée le 05.09.2024, https://learn.microsoft.com/api/credentials/share/en-us/YvesCollet/AF533867FADD5D63?sharingId=43CF8CAB610DC72D

GitHub Copilot

(pas encore les résultats)

Tuto :
--------------------------------------
https://learn.deeplearning.ai/course


Formations :

----------------------------------------

https://www.he-arc.ch/gestion/formation-continue/cas-ia/

https://www.ifage.ch/formation/tic/intelligence-artificielle/developpeur-dintelligence-artificielle-appliquee/#planif-et-inscription

Livres :

--------------------------------

https://www.amazon.de/-/en/dp/B0D81F1GKW?ref=ppx_yo2ov_dt_b_fed_asin_title

https://www.amazon.de/-/en/dp/B0C2RF5665?ref=ppx_yo2ov_dt_b_fed_asin_title

https://www.amazon.de/-/en/St%C3%A9phane-Roder/dp/2416014358/ref=sr_1_2?crid=271Q02EY3SZVA&dib=eyJ2IjoiMSJ9.VNAOygVGfQcsdno8KDcvTyKnar5WFH68wZ7MvdVLIublTO8Svf-EKkxAXDjzPesA2cQM7Oq71JQyJHpTsbt8NnDBf4xYHbiUp5dpZdxhpVhSFnnXVkh9oF_opofk4hfexkNr6gdYaK8oepx9PqS1bld_qKRqaYJIHh4J06OVxoKjUPI2WoHDFQcAHOB5G8o1LzpTZoLV4bkSDR0lq-y96U67ZAvXmRYlCzHgTDsjteI.u30al9F8sMsI5HZu5R3Vqa8nCfTqntFCtzDgvYS0EyA&dib_tag=se&keywords=guide+pratique+de+l%27intelligence+artificielle+en+entreprise&qid=1726419545&sprefix=guide+pratique+de+l%27intelligence+artificielle+en+entreprise%2Caps%2C70&sr=8-2

https://www.amazon.de/-/en/dp/B0D9N6GZ2M?psc=1&smid=A3JWKAKR8XB7XF&ref_=chk_typ_imgToDp


3.6.24

installer ubuntu sur windows

 https://discourse.ubuntu.com/t/install-ubuntu-on-wsl2-and-get-started-with-graphical-applications/26296

25.2.24

installation environnement développement ubuntu

 programmes de base
------------------
sudo apt-get install vlc ubuntu-restricted-addons ubuntu-restricted-extras neofetch gnome-tweaks fuse cpu-x filezilla



développement php
-----------------
- installer dbeaver depuis le site avec le .deb

     - pour que la connexion fonctionne il faut peut-être dans "propriété du pilote" mettre la valeur "true" à "allowPublicKeyRetrieval"

- installer mariadb
    - https://linuxhint.com/install-mariadb-ubuntu-22-04/
    - sudo apt install mariadb-server mariadb-client
    - mariadb --version
    - systemctl status mariadb
    - sudo mysql_secure_installation
        - enter password (vide)
        - unix_socket --> n
        - change the password --> n
        - remove test database --> y
        - reload privilege --> y
    - sudo mariadb
        - flush privileges;
        - create database testdb;
        - show databases;
        - create user 'delphives'@'localhost' identified by 'new password';
        - grant all privileges on *.* to 'delphives'@'localhost';
        - quit;
    - sudo mariadb-upgrade (pour mettre à jour)
- installer github desktop
    - https://gist.github.com/berkorbay/6feda478a00b0432d13f1fc0a50467f1
    - wget -qO - https://apt.packages.shiftkey.dev/gpg.key | gpg --dearmor | sudo tee /usr/share/keyrings/shiftkey-packages.gpg > /dev/null
    - sudo sh -c 'echo "deb [arch=amd64 signed-by=/usr/share/keyrings/shiftkey-packages.gpg] https://apt.packages.shiftkey.dev/ubuntu/ any main" > /etc/apt/sources.list.d/shiftkey-packages.list'
    - sudo apt update && sudo apt install github-desktop
- installer vscode depuis le site (.deb)
    - installer les modules :
        c# dev kit (microsoft)
        vscode-solution-explorer (fernando escolar)
        github copilot (github)
        github copilot chat (github)
        
        
- installer apache
    - https://www.cherryservers.com/blog/install-lamp-on-ubuntu-22-04
        - sudo apt install apache2 -y
        - sudo systemctl status apache2
        - sudo ufw allow 80/tcp
        - sudo ufw reload
        - sudo ufw status
        - sudo chmod o+w /var/www/html
        - http://localhost (on doit voir la page apache2)
        - les logs apache se trouvent dans /var/log/apache2/error.log
- installer php
    - sudo apt install php -y
    - php --version
    - php -m
    - sudo nano  /var/www/html/info.php
        <php?
            phpinfo()
        ?>
    - aller sur http://localhost/info.php
    - le fichier php.ini se trouve dans /etc/php/8.1/cli/php.ini
- installer composer
    - sudo apt-get install composer
    OU
    - https://www.cherryservers.com/blog/how-to-install-composer-ubuntu
        - sudo apt-get install curl php php-curl
        - curl -sS https://getcomposer.org/installer -o composer-setup.php
        - sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
        - sudo composer self-update
        - sudo composer self-update
        
        
- installer driver mysql pour php
    - sudo apt-get install php8.1-mysql

- les sites webs se trouvent dans /var/www/html

.net core 8.0
------------------
(coller les 10 lignes dans un terminal et exécuter si la version 8 n'existe pas par défaut)
# Get Ubuntu version
declare repo_version=$(if command -v lsb_release &> /dev/null; then lsb_release -r -s; else grep -oP '(?<=^VERSION_ID=).+' /etc/os-release | tr -d '"'; fi)
# Download Microsoft signing key and repository
wget https://packages.microsoft.com/config/ubuntu/$repo_version/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
# Install Microsoft signing key and repository
sudo dpkg -i packages-microsoft-prod.deb
# Clean up
rm packages-microsoft-prod.deb
# Update packages
sudo apt update

sudo apt-get install zlib1g dotnet-sdk-8.0 aspnetcore-runtime-8.0 software-properties-common apt-transport-https wget


nord
----------------------------
sudo snap install nordpass
wget -c https://repo.nordvpn.com/deb/nordvpn/debian/pool/main/nordvpn-release_1.0.0_all.deb
sudo apt-get update
sudo apt-get install nordvpn


autres
----------------------
- télécharger le deb pour discord sur le site
- sudo snap install postman

    
mise à jour
-----------
sudo apt-get update && sudo apt-get upgrade && sudo apt-get full-upgrade && sudo apt-get clean && sudo apt-get autoremove


geekbench
---------
https://www.geekbench.com/ml/download/

raccourci
---------
ctrl + alt + t --> ouvrir un terminal


TODO
----
storage account
service bus explorer




- HOPERIS
    - pour donner les droits au répertoire tmpprint --> sudo chmod 777 tmpPrint -R
    - sudo apt install php-xml php-zip php-mbstring php-gd
    - composer require phpoffice/phpword

28.9.23

pc config

 composants :

- Morefine M600 AMD Ryzen 9 7940HS (https://morefine.com/products/morefine-m600-r9-7940hs-mini-pc) 530CHF

- 2x NVME M.2 PCIe 4.0 Kingston 2TB (https://www.digitec.ch/de/s1/product/kingston-nv2-2000-gb-m2-2280-ssd-21983868?supplier=406802) 160CHF

- 2x 32GB DDR5 5600MHz (https://www.digitec.ch/de/s1/product/kingston-fury-impact-2-x-32gb-5600-mhz-ddr5-ram-so-dimm-ram-23704483) 214CHF


OS :

ubuntu 22.04.3 LTS

sudo apt install linux-oem-22.04d (pour installer le noyau 6.5 et faire fonctionner le driver pour le gpu radeon 780M)


GeekBench :

Https://browser.geekbench.com/v6/cpu/2799863

15.11.22

asp.net core tricks

 - les champs properties des entities qui sont not nullables sont toujours required. donc si on veut enlever ça il faut mettre int?

- pour le message perso [Required(ErrorMessage="asfd")]

28.9.22

Installation Suppression Packages

 //installer un package

sudo dpkg -i xxx.deb

//rechercher un package installé

sudo dpkg -l | grep xxx

//supprimer un package

sudo dpkg -r xxx

Installation Minecraft Ubuntu

wget https://launcher.mojang.com/download/Minecraft.deb

sudo apt install Minecraft.deb

(Connexion Microsoft Yahoo)