
Recherche avancée
Autres articles (29)
-
(Dés)Activation de fonctionnalités (plugins)
18 février 2011, parPour gérer l’ajout et la suppression de fonctionnalités supplémentaires (ou plugins), MediaSPIP utilise à partir de la version 0.2 SVP.
SVP permet l’activation facile de plugins depuis l’espace de configuration de MediaSPIP.
Pour y accéder, il suffit de se rendre dans l’espace de configuration puis de se rendre sur la page "Gestion des plugins".
MediaSPIP est fourni par défaut avec l’ensemble des plugins dits "compatibles", ils ont été testés et intégrés afin de fonctionner parfaitement avec chaque (...) -
Activation de l’inscription des visiteurs
12 avril 2011, parIl est également possible d’activer l’inscription des visiteurs ce qui permettra à tout un chacun d’ouvrir soit même un compte sur le canal en question dans le cadre de projets ouverts par exemple.
Pour ce faire, il suffit d’aller dans l’espace de configuration du site en choisissant le sous menus "Gestion des utilisateurs". Le premier formulaire visible correspond à cette fonctionnalité.
Par défaut, MediaSPIP a créé lors de son initialisation un élément de menu dans le menu du haut de la page menant (...) -
Diogene : création de masques spécifiques de formulaires d’édition de contenus
26 octobre 2010, parDiogene est un des plugins ? SPIP activé par défaut (extension) lors de l’initialisation de MediaSPIP.
A quoi sert ce plugin
Création de masques de formulaires
Le plugin Diogène permet de créer des masques de formulaires spécifiques par secteur sur les trois objets spécifiques SPIP que sont : les articles ; les rubriques ; les sites
Il permet ainsi de définir en fonction d’un secteur particulier, un masque de formulaire par objet, ajoutant ou enlevant ainsi des champs afin de rendre le formulaire (...)
Sur d’autres sites (3812)
-
Anomalie #3675 : fsockopen => lenteur dans inc/queue
7 février 2016, par Nicolas RICQUEMAQUEIl semble tout d’abord que les problèmes rapportés d’extrême lenteur de la fonction fsockopen semblent être communs sur Internet. Voir par exemple le post qui propose des solutions : http://stackoverflow.com/questions/5211658/php-fsockopen-painfully-slow ; notamment la résolution dns directe ne semble pas très efficace, mais la solution proposée, via un gethostbyname(), ne fonctionnera pas en tls (qui vérifie la cohérence du certificat publique avec l’url à connecter).
En réfléchissant un peu, outre les différentes possibilités de mitigation des problèmes évoqués quant aux limitations de la fonction fsockopen ailleurs sur Internet, il semble que l’on est ici en face, de façon plus générale, d’une "fausse bonne idée". A savoir, la création d’une tâche asynchrone via l’ouverture d’une nouvelle connexion http sur le même serveur. Après 15 ans de travail dans les infrastructures télécom, je vois difficilement comment cela peut fonctionner à tous les coups. Une telle requête, effectuée du serveur vers lui-même en utilisant l’adresse IP récupérée dans un DNS va fonctionner très différemment en fonction de la structure technique du réseau de l’hébergeur. Où sont terminées les adresses publiques ? Le Firewall autorise-t-il la réentrance ? le DNS résout il différemment sur son réseau interne par rapport au réseau publique ? Comment est configuré et où se trouve le load-balancer ? La machine est elle une machine physique (mutualisée ou non) ou plutôt une machine virtuelle avec le NAT ou du bridging interne sur l’hôte ? Tout ceci va influer sur le fait que le fsockopen (ou curl) va fonctionner ou non. Il y a des bonnes pratiques dans l’industrie, mais à aucun moment vous pouvez être sûr, qu’un logiciel comme SPIP qui doit tenter de s’adapter partout, va fonctionner partout. Et le cURL n’est pas beaucoup plus rustique en la matière (un peu plus tout de même, c’est un appel unix hors php, les auteurs de cURL ont bien blindé leur code, mais je ne m’y fierai pas à 100%).
Le problème est donc, que parfois, en fonction de l’hébergeur, tout simplement, comme l’indique bien le commentaire dans le code existant de queue.php, "cela ne va par marcher".
Mais qu’est ce qui se passe quand cela ne fonctionne pas, et pourquoi cela ralenti autant l’affichage des pages web ?
- Si !function_exists(’fsockopen’) et !function_exists("curl_init"), alors c’est simple, on va appliquer l’astuce de l’image-background
- Si les fonctions existent bien, mais que "quelque chose" dans l’infrastructure "bloque" la connexion. Il y a 2 façons de bloquer. Un load balancer, un serveur, ou un routeur renverront probablement un TCP/RST immédiatement, fermant donc la connexion TCP, et 5 ms après on sort vers l’image background. Y’a pas de dégats.
- Si les fonctions existent bien, et que c’est un "firewall" qui ne laisse pas passer, il ne va rien répondre du tout, c’est à dire laisser tomber la connexion en timeout, qui est ici de 1s (très très très long pour un appel vers sois-même ! c’est un premier bug, il ne faudrait pas dépasser 20ms maximum). Donc, Curl ou fsockopen, l’utilisateur, dans l’affichage de la page, va perdre une première seconde. Pourquoi première ? parce que le code de la fonction semble être pouvoir être appelé plusieurs fois (commentaire dans le code "ne pas relancer si on vient de lancer dans la meme seconde par un hit concurent") et que le fichier est locké avant l’appel à fsockopen ou à curl, dès la sortie de la fonction, après un timeout de 1s de fsockopen par exemple, on aura déjà expiré le lock. Donc on peut probablement se retrouver dans un cas ou la fonction (qui échoue à chaque fois via un timeout de 1s) est appelée plusieurs fois de suite. Bofff ;-). Il faut donc décorréler cette valeur de check du lock avec le timeout de durée des appels réseaux au moins d’un facteur 10 pour éviter les effets d’avalanche...Conclusion : les appels asynchrones sont une très bonne idée en théorie, mais en pratique, je pense qu’ils risquent d’amener plus de problèmes que de solutions. Et cela semble se vérifier en regard des nombreux utilisateurs qui semblent avoir le problème sur le réseau, ou décident finalement de rester sur la 2.1, ou de changer de crémerie (hébergeur ou CMS). Pour les moins chanceux, de se contenter d’un site qui est devenu irresponsif...
Il est possible à mon avis toutefois de conserver intelligemment cette technique quand elle est applicable. Pourquoi réessayer et se remplanter d’une seconde comme les shadoks sur chaque page ? Si un hébergeur ne fonctionne pas, cela ne va pas fonctionner à tous les coups. Tout du moins jusqu’à ce qu’il change son infra ou le client déménage ailleurs. Je proposerai donc une approche "hybride", mais simple, en détectant d’un côté la bonne méthode à utiliser, et en l’appliqant simplement dans queue.php :
- Sur le site "privé", exécutée par exemple une fois par session d’un rédacteur, par appel asynchrone via une background image (pour ne pas ralentir le rédacteur), une fonction toute simple qui essaie de se connecter sur l’url cron, successivement avec les différentes méthodes (fsockopen, curl, pourquoi pas fopen directement qui accepte aussi les urls..., et 36 nouvelles méthodes qui apparaitront à l’avenir). Cette fonction détermine la méthode la plus rapide (qui pourrait très bien être fsockopen sur beaucoup d’hébergeurs !) par simple comparaison et stocke ce résultat dans une variable quelque part dans le site. Elle peut aussi déterminer que même si cela marche, les délais introduits (>100ms par exemple) ne justifient pas se passer de la technique de l’image background.
- quand le code de queue.php, on "n’essaie pas des méthodes jusqu’à en trouver une qui fonctionne en perdant du temps sur le dos du client", mais on utilise la méthode récupérée dans la variable avec un switch par exemple, et on est sûr d’utiliser la meilleure méthode :-) et la meilleure ! -
FFMPEG replace audio with new mp3 audio gives error Unrecognized option 'codec'
15 février 2016, par WaqlehI am trying to replace an audio in a video with another audio like so :
ffmpeg -i \/home\/test\/public_html\/ted\/videos\/c812e2423b6b5da2f4e00c62bf70d2f3.mp4 -i \/home\/test\/public_html\/ted\/app\/templates\/default\/sounds\/taj-express-30sec.mp3 -codec copy -shortest \/home\/test\/public_html\/ted\/videos\/55e5a21e111af1cc0bdb3637b601f64d_with_audio.mp4
FFmpeg version 0.6.5, Copyright (c) 2000-2010 the FFmpeg developers
built on Jan 29 2012 17:52:15 with gcc 4.4.5 20110214 (Red Hat 4.4.5-6)
configuration: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64 --mandir=/usr/share/man --incdir=/usr/include --disable-avisynth --extra-cflags='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fPIC' --enable-avfilter --enable-avfilter-lavf --enable-libdc1394 --enable-libdirac --enable-libfaac --enable-libfaad --enable-libfaadbin --enable-libgsm --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libx264 --enable-gpl --enable-nonfree --enable-postproc --enable-pthreads --enable-shared --enable-swscale --enable-vdpau --enable-version3 --enable-x11grab
libavutil 50.15. 1 / 50.15. 1
libavcodec 52.72. 2 / 52.72. 2
libavformat 52.64. 2 / 52.64. 2
libavdevice 52. 2. 0 / 52. 2. 0
libavfilter 1.19. 0 / 1.19. 0
libswscale 0.11. 0 / 0.11. 0
libpostproc 51. 2. 0 / 51. 2. 0
Seems stream 0 codec frame rate differs from container frame rate: 20.00 (20/1) -> 10.00 (20/2)
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/home/test/public_html/ted/videos/c812e2423b6b5da2f4e00c62bf70d2f3.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: mp41isom
Duration: 00:00:23.44, start: 0.000000, bitrate: 273 kb/s
Stream #0.0(und): Video: h264, yuv420p, 1364x698 [PAR 1:1 DAR 682:349], 268 kb/s, 9.98 fps, 10 tbr, 10k tbn, 20 tbc
Stream #0.1(und): Audio: aac, 44100 Hz, mono, s16, 1 kb/s
[mp3 @ 0x1c648a0]max_analyze_duration reached
Input #1, mp3, from '/home/test/public_html/ted/app/templates/default/sounds/taj-express-30sec.mp3':
Metadata:
comment : Description
TENC : BLUE PRODUCTION
originator_reference: CCOOONNNNNNNNNNNNHHMMSSRRRRRRRRR
TDRC : 2012:05:03
coding_history : A=PCM,F=44100,W=16,M=stereo,T=Nuendo
time_reference : 1601731
umid : 0x24FF296F2093409DA42CA66529FF7FA800000000000000000000000000000000
TSSE : Lavf57.23.101
Duration: 00:00:30.04, start: 0.000000, bitrate: 128 kb/s
Stream #1.0: Audio: mp3, 44100 Hz, 2 channels, s16, 128 kb/s
Unrecognized option 'codec'but I keep getting Unrecognized option ’codec’
It work local fine on ubuntu, but on the server centos 6 with WHM cPanel it is not ! why ?
-
Anomalie #3696 (Nouveau) : #PRODUIRE ne tien pas compte de marqueur et marqueur_skel
13 février 2016, par realet RealETDans SoyezCréateurs, je ne comprenais pas pourquoi alors que j’ai conditionné $GLOBALS[’marqueur’] à tenir compte d’une config concernant les couleurs, alors que la page était mise à jour, la CSS ne se metait pas à jour (il fallait un recalcul).
Avec Marcimat, sur IRC, on s’est demandé si #PRODUIRE tenait compte de ce marqueur.
Bingo !Dans ecrire/inc.filtres.php, la fonction produire_fond_statique contient :
$filename = $dir_var . $extension . "dyn-$nom_safe-" . substr(md5($fond . serialize($contexte) . $connect), 0, 8) . ".$extension";
En rajoutant les globales, le comportement attendu est obtenu : #PRODUIRE fait charger une CSS différente.
$filename = $dir_var . $extension . "dyn-$nom_safe-" . substr(md5($fond . serialize($contexte) . $GLOBALS['marqueur_skel'] . $GLOBALS['marqueur'] . $connect), 0, 8) . ".$extension";
Testé en 3.1 SVN