Jump to content
theocrite

Le Bar de la programmation

Recommended Posts

Je vais regarder merci :-)

Et si qq'un a la solution pour les expressions régulières je suis prener :-)

Share this post


Link to post
Share on other sites

J'ai regardé le truc et apparemment l'implémentation n'est pas totalement complète (à vérifier): donc il faut oublier :siffle:

Sinon le "?:" sert à quoi :reflechis:

En faisant le truc avec le regexp standard:

1) Avec "^([0123456789]+/){2}([0123456789]+)$", il trouve 2 parties

2) Avec "^([0123456789]+/)([0123456789]+/)([0123456789]+)$", il trouve 3 parties

C'est le quantificateur borné personnalisé qui semble tout prendre :transpi:

Edited by foetus

Share this post


Link to post
Share on other sites

Ouai enfin si ils implémentent pas tout aussi :p

le ?: sert à pas avoir de callback. Je pense pas t'apprendre grand chose en te disant que ce qui est entre parenthèse est enregistré comme étant un match.

Le ?: sert à avoir des vraies parenthèses et pas des callback. Ce qui me permet de faire prendre effet le {2} sur (?:.....) sans enregistrer ce qui est entre parenthèse comme étant un match :-)

Merki en tous cas :-)

Share this post


Link to post
Share on other sites

Code en mode arrache pour tester

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <regex.h>int main (void) {    regex_t preg;    const char* str_request = "11/22/33";    const char* str_regex = "^([0123456789]+/){2}([0123456789]+)$";//  const char* str_regex = "^([0123456789]+/)([0123456789]+/)([0123456789]+)$";    int err = regcomp(&preg, str_regex, REG_EXTENDED);    if (err == 0) {        regmatch_t* pmatch = NULL;        size_t nmatch = preg.re_nsub;        printf("main: find %d part%c\n", nmatch, ((nmatch > 1)? 's': ' '));        pmatch = malloc(sizeof(*pmatch) * nmatch);        if (pmatch) {            int part = 0;            int match = regexec(&preg, str_request, nmatch, pmatch, 0);            regfree (&preg);            if (match == 0) {                for(part = 0; part < nmatch; part++) {                    if (pmatch[part].rm_so == (size_t) -1) { break; /* No more groups */ }                    char str_part[strlen(str_request) + 1];                    strcpy(str_part, str_request);                    str_part[pmatch[part].rm_eo] = 0;                    printf("main: Group %u: [%2u-%2u]: %s\n", part, pmatch[part].rm_so, pmatch[part].rm_eo, (str_part + pmatch[part].rm_so));                }            } else if (match == REG_NOMATCH) {                printf("main: %s n\'est pas une expression valide\n", str_request);            } else {                size_t size = regerror(err, &preg, NULL, 0);                char* text = malloc(sizeof(*text) * size);                if (text) {                    regerror(err, &preg, text, size);                    printf("main - Erreur 1: %s\n", text);                    free(text);                } else {                    printf("main - Erreur 2: Memoire insuffisante\n");                    exit(EXIT_FAILURE);                }            }        } else {            printf("main - Erreur 3: Memoire insuffisante\n");            exit(EXIT_FAILURE);        }    } else {        printf("main: regcomp NULL\n");    }    return(EXIT_SUCCESS);}
Edited by foetus

Share this post


Link to post
Share on other sites

Je regarderai je te remercie, mais du coup là je pars sur autre chose en même temps...

À savoir, pour un autre programme je voudrais stocker des données dans une bdd. Je pourrais bien sûr simplement utiliser mysql (ce que je vais faire pour l'instant), mais plutôt que d'avoir les donénes stockées quelque part sur l'ordi, j'aimerais la bdd soit stockée dans un fichier que je choisis (i.e. quelque part dans mon arborescence de programme).

Si vous savez comment faire ça!

Share this post


Link to post
Share on other sites

SQLite, mais en mode C :windu:

Après tu as un outil pour regarder ta base (mais il y en a d'autres, mais c'est le plus simple) parce que tout faire à la console :transpi:

Par contre je n'ai jamais codé du SQLite en mode C/ Win 32, qu'avec des applications iPhone :siffle:

Share this post


Link to post
Share on other sites

Je regarde merci!

C'est en python (dsl j'étais persuadé de l'avoir précisé :craint:)

Share this post


Link to post
Share on other sites

Merci bcp!

Je ne sais pas trop pourquoi je n'ai pas réussi à trouver ça tout seul mais bon... Je regarde ça du coup :-)

Thx!

Share this post


Link to post
Share on other sites

Salut !

Je passe dans le coin pour voir si certains d'entre vous qui s'y connaissent en PHP/HTML/CSS/JS/ auraient envie d'apporter leur aide à un petit projet d'interface web pour installation domotique.

Je m'auto-quote ayant déjà posté dans un autre topic

Le but de ce projet est de fournir une interface web utilisable par tout un chacun en sa basant sur le projet Domoticz. Domoticz est un programme qui transforme un pc en centrale domotique. Il est opensource, gratuit et fonctionne très bien sur un raspberry pi. Il possède déjà une interface web, mais celle ci est trop tournée vers l'administrateur de l'installation domotique.

Pour une utilisation familiale, j'ai lancé l'idée d'une interface plus basique permettant d'accéder aux informations les plus utiles de l’installation sur le forum de HomeServer-DIY. Le but étant par exemple d'afficher dès la page d'accueil la température extérieure et/ou de notifier le passage du facteur, ou le fait qu'une fenêtre est ouverte depuis un trop long moment.

Domoticz possède une API permettant pas mal de chose et c'est sur celle-ci que nous nous appuyons pour coder cette interface.

Sauf que nous le faisons en amateurs. Nous ne sommes pas experts et nous proposons à toute personne connaissant les HMTL/CSS/PHP/JS de venir participer au projet.

En passant sachez que pour le moment une grosse partie du travail a été faite par un INpactien.

Pour le moment nous disposons d'un topic dédié sur notre forum ainsi que d'un salon xmpp. Si vous souhaitez participer ça se passe là: http://homeserver-di....php?f=20&t=511

Toute aide étant la bienvenue.

Merci de m'avoir lu.

Share this post


Link to post
Share on other sites

Boarf, il y a "should be" et "should be" :dd:

 

En ce moment, j'ai un logstash qui me fait des Heisenbugs alors qu'il ne devrait pas...le pipeline est on ne peut plus simple et le même code avec les même inputs ne produit pas toujours le même résultat...4 fois sur 5 c'est bon...mais la fois restante...sur quelques Go de logs, c'est con d'avoir autour de 100k lignes de log de plus que ce qu'on a réellement (ou une ligne de code ruby - syle helloworld - dans le pipeline qui plante ou pas sur le même input)...bon après, j'avais demandé à ceux qui alimentent la chose de ne pas mettre trop de logs pour commencer, mais ils ont fait les bourrins :dd:

 

Après, je ne comprends pas trop certains choix qui ont été faits sur logstash :

  • pourquoi ils aggrègent les fichiers de conf en 1 seul en utilsant l'ordre lexicographique
  • pourquoi le modèle de concurrence de la chose semble totalement foireux
  • pourquoi ils n'ont pas utilisé un langage qui facilite la manipulation de stream tout en ayant un modèle de concurrence difficile à prendre en défaut - genre Go ou Scala
  • pourquoi avoir voulu faire un truc souple avant de le rendre fiable...fluentd est robuste et commence à s'assouplir ce qui un choix beaucoup plus cohérent
  • ...

Share this post


Link to post
Share on other sites

Si on m'avait dit que pour écrire un rapport il fallait savoir coder... Le LaTeX c'est pas simple :craint:

Share this post


Link to post
Share on other sites

Si on m'avait dit que pour écrire un rapport il fallait savoir coder... Le LaTeX c'est pas simple :craint:

Maintenant tu sais pourquoi Word est plus répandu que LaTeX ;)

Share this post


Link to post
Share on other sites

Je prefere LibreOffice qui a utiliser un traitement de texte...

 

Mais je comprend l'interet quand il faut sortir des formules mathematiques ou chimiques :)

Share this post


Link to post
Share on other sites

Mine de rien, la fonctionnalité "insertion d'une équation" de Word est relativement pratique à utiliser si dans ton document, tu as juste quelques formules à insérer.

 

Latex, c'est dur à prendre en main. Mais après, tu fais que des progrès et tu gagnes de plus en plus de temps à force de l'utiliser.

Sauf des fois où tu veux sortir du cadre et faire un affichage personnalisé. Tu regrettes alors de ne pas pouvoir éditer le rendu directement. Mais comme c'est pas vraiment la philosophie, c'est normal d'en chier

Share this post


Link to post
Share on other sites

Mais comme c'est pas vraiment la philosophie, c'est normal d'en chier

 

La philosophie de TeX (LaTeX est une surcouche)  c'est d'avoir un programme qui puisse faire tous les calculs nécessaires pour avoir le meilleur rendu (il travaille en point didot il me semble). Ce qu'un logiciel WISIWIG ne peut pas trop faire à cause de son approche "rendu [quasi] temps-réel".

 

De plus travailler avec "un compilateur" permet d'avoir des fichiers légers et qu'on puisse générer simplement le résultat.

De plus TeX évolue peu (il a été conçu dès le départ pour travailler de façon optimale) et son numéro de version tend vers Pi il me semble.

Edited by foetus

Share this post


Link to post
Share on other sites

Il me semble avoir lu quelque part que Tex a une unité de mesure aussi grande que la longueur d'onde de je sais put quelle couleur :transpi:

 

Tex est en version finale depuis 20 ans ^^ C'est LaTeX qui evolue tres lentement tellement il est bien fait.

 

C'est vrai que c'est assez chiant mais quand on a posé sa structure, on peut réutiliser pour presque n'importe quoi avec toujours un rendu impeccable ;)

Share this post


Link to post
Share on other sites

La dernière version de TeX est la 3.14159265. Elle est sortit en janvier 2014 d'après wikipédia.

Effectivement, ça correspond exactement aux premières décimales de PI ! On voit qu'il y a des amateurs de mathématiques parmis les développeurs
 

 

Il me semble avoir lu quelque part que Tex a une unité de mesure aussi grande que la longueur d'onde de je sais put quelle couleur :transpi:

 

J'étais perplexe alors j'ai un peu cherché

En fait, la plus petite unité disponible dans TeX est le scaled-point "sp" https://en.wikibooks.org/wiki/TeX/TeX_dimensions

Et d'après des conversions que j'ai trouvé page 6 de ce pdf http://latex-pearson.org/ressources/2010/annexe-C.pdf

ça correspond à 5.363 nanomètres. Le violet a une longueur d'onde de 400 nm :chinois:

 

Ca fait une sacrée précision !

Share this post


Link to post
Share on other sites

Le créateur de TeX n'est autre qu'un certain Donald Knuth...un mec qui s'est un jour juré d'écrire un monographe sur "The Art Of Computer Programming"...et qui s'est rendu compte que c'était relativement complexe d'écrire une somme pareille...il avait prévu 7 volumes...pour le moment, on en est à 4.75 (environ)...en partie parcequ'il trouvait que son éditeur pour les deux premiers volumes avait fait un travail de :censored:...du coup, il a crée TeX (et pour le fun, TeX est Turing-Complete) :D

 

Ce mec est un dieu vivant :ouioui:

Share this post


Link to post
Share on other sites

Vu dans le dernier Kernighan :D

func BitCount(x uint64) int {
    // Hacker's Delight
    x = x - ((x >> 1) & 0x5555555555555555)
    x = (x & 0x3333333333333333) + ((x >> 2) & 0x3333333333333333)
    x = (x + (x >> 4)) & 0x0f0f0f0f0f0f0f0f
    x = x + (x >> 
    x = x + (x >> 16)
    x = x + (x >> 32)
    return int(x & 0x7f)
}

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×
×
  • Create New...