883 links
  • thican's links | thican.net
  • Home
  • Login
  • RSS Feed
  • ATOM Feed
  • Tag cloud
  • Picture wall
  • Daily
Links per page: 20 50 100
◄Older
page 1 / 3
41 results tagged programmation x
  • Gamasutra - Art Design Deep Dive: Using a 3D pipeline for 2D animation in Dead Cells
    Un article de Thomas VASSEUR, développeur français chez Motion Twin, boîte française aussi, où il explique pourquoi et comment générer des modèles 3G dans un jeu vidéo en 2D dit "Pixel Art".
    Ainsi, je comprends mieux pourquoi ce rendu pixel art, alors que je me dis (peut-être) j’aurais préféré une version non pixel art, comme pour pour le jeu Hollow Knight.
    February 16, 2020 at 10:51:18 PM GMT+1 * - permalink -
    QRCode
    - https://www.gamasutra.com/view/news/313026/Art_Design_Deep_Dive_Using_a_3D_pipeline_for_2D_animation_in_Dead_Cells.php
    Dead_Cells graphics jeux_vidéo programmation
  • Maven – Maven in 5 Minutes
    January 3, 2018 at 9:22:46 AM GMT+1 * - permalink -
    QRCode
    - https://maven.apache.org/guides/getting-started/maven-in-five-minutes.html
    développement informatique Java programmation todo-lecture tutoriel
  • Semantic Versioning 2.0.0 | Semantic Versioning
    November 13, 2017 at 11:17:45 PM GMT+1 - permalink -
    QRCode
    - https://semver.org/spec/v2.0.0.html
    développement informatique programmation
  • Le langage C et l’arithmétique des pointeurs
    Pour commencer, oui, l’arithmétique des pointeurs dans la programmation actuelle, et globalement l’utilisation du langage C, est quelque chose de plus en plus rare, car la majorité des langages sont dits de haut niveau, ils font abstraction du code machine, et leur typage est dynamique.

    Toutefois, le langage C a certains atouts (pas de démonstration, ce n’est pas le but de ce billet), et il est ainsi important de produire du code robuste et modulable.

    Prenons le cas où vous devez manipuler à travers les paramètres d’une fonction :
    - des listes (une dimension) ;
    - des matrices/tableaux (deux dimensions) ;
    - des volumes (trois dimensions) ;
    - voire autant de profondeurs de pointeurs dont vous avez besoin (x dimensions).

    (Exemple et démonstration plus bas)

    Pour une allocation de mémoire sur une variable faites à partir de pointeurs d’objets, le comportement est :

    mytype *my_variable;
    my_variable = malloc(sizeof(mytype));

    Mais ensuite, si ce n’est plus un seul niveau de pointeurs, mais plusieurs, il faut donc calculer le nombre de pointeurs à mettre : combien d’astérisques à écrire ? est-ce vraiment utile, i.e "void *" ne suffit-il pas ? ce nombre a-t-il un impact ?
    Et si on change de type ? par exemple, à l’intérieur d’une structure, vous ne déclarez pas la variable, du coup, il faut aller chercher le type de la variable en question, ce qui n’est pas forcément facile, et si ça change, vous devez manipuler le code.

    Voici une solution : utilisez l’idiomatique suivante :

    my_var = malloc(sizeof(*my_var));

    Il suffit de remarquer qu’il suffit simplement de rajouter un astéristique par rapport à la variable dans le paramètre de gauche, dans le contenu de l’appel sizeof, et c’est tout.

    Exemple, vous avez une matrice de "choses", chose pouvant être un entier, un nombre à virgule, un pointeur, une structure, etc, mais que c’est une donnée ici d’un des paramètres de la fonction, voici le résultat :

    void myFunction(mytype ***my_var) {
    …
    *my_var = malloc(sizeof(**my_var));
    …
    }

    void main(void) {
    mytype **myMatrix;
    myFunction(&myMatrix);
    …
    }


    Exemple et Situation :

    Prenons le cas où vous avez déjà une liste d’objets, comme une liste de sommets (“vertex/vertices” en anglais) dans un graphe (“graph”) contenant un nombre important de paramètres et d’informations. Recopier le contenu alors que vous souhaitez manipuler l’objet pour lire et créer d’autres ensembles n’est pas le plus efficace, la mémoire s’en alourdi : il suffit d’appeler le pointeur sur l’objet en question.

    Déterminons les enfants d’un sommets dans un graphe, avec les arêtes qui les relient (“edge” en anglais) ; on va donc à partir d’un graphe "g" et d’un sommet "v" recevoir une liste de sommets "listChildren", et le nombre d’éléments de cette liste. Comme indiqué en introduction, on ne cherche pas à recopier les données, mais on cherche à recevoir leurs pointeurs. Pareil pour les éléments passés en paramètres en tant que source d’informations.

    Remarque : j’évite au maximum d’avoir des variables globales, et je mets en premier dans les paramètres d’une fonction les données qui seront modifiées.
    Remarque : pour simplifier la lecture, on pourrait aussi utiliser un “typedef” pour parler de pointeurs sur les différents objets, comme "pgraph" = "graph *", "pvertex" = "vertex *", etc, mais ça devient lourd à utiliser, et ce n’est pas entièrement pratique si on ne l’utilise pas entièrement.

    Nous avons en entrée :
    - un "graph my_graph" ;
    - un "vertex current_vertex" ;
    - une liste de pointeurs de sommets "vertex **my_child" ;
    - et une valeur de retour, "int nb_children".

    La liste des paramètres de la fonction "childrenVertices" ainsi se compose :
    - pour le graphe "g" : graph *g ;
    - pour le sommet "v" : vertex *v ;
    - pour la liste de sommets, nous allons modifier son contenu, il faut rajouter un pointeur dessus : "vertex ***list_children" ;
    - et le paramètre de retour sera un entier "int".

    int childrenVertices(vertex ***list_children, graph *g, vertex *v);

    À l’intérieur, l’allocation mémoire pour "list_children" sera :
    *list_children = malloc(nb_vertices * sizeof(**list_children));

    et son appel sera :
    nb_children = childrenVertices(&my_child, &my_graph, &current_vertex);

    En conclusion, la fonction "childrenVertices" ne manipule que des pointeurs, ce qui économise beaucoup plus de place par rapport à des données dans des structures (sauf pour les petits types, comme les entiers, qui sont moins volumineux dans une architecture 64 bits (4 octets, soient 32 bits pour un entier relatif "int") que pour un pointeur, 8 octets soient 64 bits en archi 64 bits.
    April 1, 2016 at 4:05:12 PM GMT+2 - permalink -
    QRCode
    - https://links.thican.net/?-rSgaA
    astuces C développement programmation thican
  • How to C (as of 2016)
    Un ensemble de règles pour avoir du code plus stable en C.
    De mon point de vue, je trouve que ça alourdit le code, le compliquant à certains passages (sûrement une question d’habitudes), voire le rend moins portable, mais rend son comportement plus consistent sur de différentes plateformes.
    March 20, 2016 at 6:20:24 PM GMT+1 - permalink -
    QRCode
    - https://matt.sh/howto-c
    C développement programmation
  • C++17 est sur les rails - LinuxFr.org
    March 12, 2016 at 11:57:27 AM GMT+1 - permalink -
    QRCode
    - https://linuxfr.org/users/rewind/journaux/c-17-est-sur-les-rails
    C programmation
  • vim-utils/vim-troll-stopper - GitHub
    October 26, 2015 at 9:47:44 PM GMT+1 - permalink -
    QRCode
    - https://github.com/vim-utils/vim-troll-stopper
    développement programmation vim
  • Your syntax highlighter is wrong — Medium
    Un point de vue intéressant sur les schémas de coloration syntaxique de nombreux éditeurs de code actuels, en pointant leurs défauts au sujet de la mise en valeur du code.

    TL;DR:
    - les commentaires devraient être plus visibles ;
    - les outils de diff ne devraient pas changer la coloration syntaxique en mettant en rouge les retraits et vert les ajouts.
    (texte en anglais)
    May 12, 2014 at 10:38:40 PM GMT+2 - permalink -
    QRCode
    - https://medium.com/p/6f83add748c9
    développement programmation
  • Complexité algorithmique : pourquoi tant de “n” ? | Sam & Max: Python, Django, Git et du cul
    Un article qui explique les détails dans la domaine de l'optimisation derrière les notations O(1), O(n), O(log(n)), etc.

    (voir aussi https://links.thican.net/?YPqV3g)
    May 7, 2014 at 12:03:37 AM GMT+2 - permalink -
    QRCode
    - http://sametmax.com/complexite-algorithmique-pourquoi-tant-de-n/
    programmation sciences
  • Le langage Go fête ses 4 ans
    J'en entends souvent parler, mais je suis semble-t-il un "vieux" de la programmation.
    November 26, 2013 at 12:18:24 AM GMT+1 - permalink -
    QRCode
    - http://linuxfr.org/news/le-langage-go-fete-ses-4-ans
    programmation
  • Dodgy Coder: "Yoda Conditions", "Pokémon Exception Handling" and other programming classics
    Haha, tant d'anecdotes sur les bugs, voici une liste (exhaustive ?) des bugs qu'il est possible de rencontrer avec un nom qui représente bien leurs conditions.
    November 26, 2013 at 12:10:53 AM GMT+1 - permalink -
    QRCode
    - http://www.dodgycoder.net/2011/11/yoda-conditions-pokemon-exception.html
    divertissement programmation
  • MVC is dead, it's time to MOVE on.
    Tiens tiens, un avis intéressant sur le mode de développement MVC (Model View Controllers).
    November 12, 2013 at 4:08:27 PM GMT+1 - permalink -
    QRCode
    - http://cirw.in/blog/time-to-move-on.html
    développement informatique programmation todo web
  • thumbnail
    Fibonacci (Image PNG, 700x2528 pixels)
    Hahaha, et vive les Hackathons :-D

    (Via Le Hollandais Volant http://lehollandaisvolant.net/index.php?mode=links&id=20131111182602)
    November 12, 2013 at 2:17:01 PM GMT+1 - permalink -
    QRCode
    - http://imageshack.com/a/img440/2996/tu2.png
    humour mathématiques programmation
  • Interpreted Languages: Perl, PHP, Python, Ruby (Sheet One) - Hyperpolyglot
    Une page web sympa qui regroupe un tableau comparatif entre des commandes et des expressions des différents langages Perl, PHP Python et Ruby. :-)
    September 13, 2013 at 12:06:54 PM GMT+2 - permalink -
    QRCode
    - http://hyperpolyglot.org/scripting
    programmation
  • socket-c | inetdoc.net
    Un tutoriel pour apprendre les bases du développement réseau en C.

    Pour la version en PDF, regardez en bas de page (http://www.inetdoc.net/pdf/socket-c.pdf)
    September 11, 2013 at 3:43:02 PM GMT+2 - permalink -
    QRCode
    - http://www.inetdoc.net/dev/socket-c/
    C développement GNU/Linux programmation réseau
  • tmpfile()
    September 11, 2013 at 3:41:08 PM GMT+2 - permalink -
    QRCode
    - http://beej.us/guide/bgc/output/html/multipage/tmpfile.html
    développement GNU/Linux programmation
  • Beej's Guides
    Un ensemble de guides et de livres pour apprendre à développer des processus liés au réseau (et aussi à tuer des dragons ;-))
    September 11, 2013 at 3:40:54 PM GMT+2 - permalink -
    QRCode
    - http://beej.us/guide/
    développement GNU/Linux programmation réseau
  • Linux's manual programer
    man 7 capabilities

    Peut être ce que tu cherches:
     CAP_NET_RAW              
     * utiliser des sockets RAW et PACKET;
     * attacher à n'importe quelle adresse pour un service mandataire transparent.
    August 20, 2013 at 5:22:12 PM GMT+2 - permalink -
    QRCode
    - https://links.thican.net/?gomxJw
    C programmation todo
  • Livre : Développement système sous Linux
    Un livre qui a reçu une bonne critique, au sujet du développement en C sous GNU/Linux, aussi bien pour les développeurs que pour les administrateurs systèmes.
    Il est tout de même orienté vers la lib glibc, et aussi disponible en format numérique (PDF/ePub)
    August 19, 2013 at 2:11:24 PM GMT+2 - permalink -
    QRCode
    - http://linuxfr.org/news/livre-developpement-systeme-sous-linux
    GNU/Linux livre programmation
  • PHP et les opérateurs booléen
    Le saviez-vous ?
    PHP – comme d'autres langage – lors de l'évaluation de conditions booléennes, fonctionne en mode "évaluation minimale" (ou appelé "short-circuit evaluation" en anglais http://en.wikipedia.org/wiki/Short-circuit_evaluation).
    Grâce à l'ordre des opérateurs booléens, cela permet de ne pas tester l'ensemble des expressions dans une condition.

    Exemple :
    A && B && C
    avec l'opérateur "&&" (AND), B n'est testé que si A est "juste", et C n'est testé que si B est "juste" (sans oublier A).

    Par contre, avec "||" (OR), dans l'exemple "A && B || C", c'est "B || C" qui est testé avant A (attention, ce n'est pas valable pour tous les langages), et il faut que B soit "faux" pour que C puisse testé.
    August 5, 2013 at 1:49:05 PM GMT+2 - permalink -
    QRCode
    - https://links.thican.net/?m5V_1g
    astuces programmation
Links per page: 20 50 100
◄Older
page 1 / 3
Shaarli - The personal, minimalist, super-fast, database free, clarity, bookmarking service by the Shaarli community - Help/documentation