Recherche avancée

Médias (91)

Autres articles (58)

  • Les statuts des instances de mutualisation

    13 mars 2010, par

    Pour des raisons de compatibilité générale du plugin de gestion de mutualisations avec les fonctions originales de SPIP, les statuts des instances sont les mêmes que pour tout autre objets (articles...), seuls leurs noms dans l’interface change quelque peu.
    Les différents statuts possibles sont : prepa (demandé) qui correspond à une instance demandée par un utilisateur. Si le site a déjà été créé par le passé, il est passé en mode désactivé. publie (validé) qui correspond à une instance validée par un (...)

  • Problèmes fréquents

    10 mars 2010, par

    PHP et safe_mode activé
    Une des principales sources de problèmes relève de la configuration de PHP et notamment de l’activation du safe_mode
    La solution consiterait à soit désactiver le safe_mode soit placer le script dans un répertoire accessible par apache pour le site

  • ANNEXE : Les plugins utilisés spécifiquement pour la ferme

    5 mars 2010, par

    Le site central/maître de la ferme a besoin d’utiliser plusieurs plugins supplémentaires vis à vis des canaux pour son bon fonctionnement. le plugin Gestion de la mutualisation ; le plugin inscription3 pour gérer les inscriptions et les demandes de création d’instance de mutualisation dès l’inscription des utilisateurs ; le plugin verifier qui fournit une API de vérification des champs (utilisé par inscription3) ; le plugin champs extras v2 nécessité par inscription3 (...)

Sur d’autres sites (9863)

  • Piwik 3 Development Update #1 – New UI design, API changes & release date

    1er septembre 2016, par Thomas Steur — Community, Development

    Over the last months, we have been actively working on the Piwik 3 release and we want to introduce you to the changes that we have done so far. They include a new and modern UI redesign, new widgets for your dashboard, and technical improvements under the hood.

    New Piwik 3 UI

    Based on Material Design we have revamped the user interface which is now more responsive, more usable and faster. While the UI is not yet finished, we invite you to check it out already and to let us know what you think.

    This new Piwik material design is a visual language that synthesizes classic principles of good design with the innovation and possibility of technology and science.

    More responsive

    Piwik 3 will look and feel much better on your mobile phone and tablet. Many elements have been improved : the menus, the segment editor and dashboard selector, the widgets, the settings pages and most other pages so you can fully experience and enjoy Piwik on any device !

    Improved usability

    We have updated the menu structure, the dashboard selector as well as the footer in reports to make your life easier when using Piwik. We love to keep these complicated things simple. There are also many other tiny improvements that you will appreciate.

    The Zen Mode lets you view in full screen your analytics reports and dashboards. Users love this feature and it can now be accessed by pressing “z” key.

    Faster

    To make the Piwik interface faster, we have refactored most of our CSS, HTML and JavaScript and moved more and more of our code into the client. As a result, Piwik now needs to reload the page much less often ! For example when you change the date or change the segment, Piwik will now load the reports instantly. To improve performance even further, Piwik will now load multiple reports on a single page in parallel.

    Native fonts

    Over the last months more and more web services have started using system fonts, and so will Piwik 3. System fonts look better, improve language support and give you a more native, familiar feeling.

    For more details and screenshots have a look at the pull request for the Piwik 3 UI update.

    New widgets

    With the “Latest Piwik Plugin Updates” widget you won’t miss any newly added or updated plugin anymore. This will help you learn about and discover the useful plugins and themes available on the Marketplace.

    Super users can now see at a glance the current state of the Piwik system, thanks to the new “System Check” and “System Summary” widgets.

    API Changes

    Piwik is the leading open analytics platform, highly customisable and extensible thanks to a flexible plugins architecture and a design based on APIs. In this new major Piwik 3 release, we significantly improve the foundation of our open platform and several of its core APIs.

    The new Widgets and Reporting API makes it possible to add reports and widgets to any existing reporting page. In the past, reporting pages had to be created manually which was time consuming and it was hard to maintain a consistent look across different reporting pages. Now reporting pages are generated automatically by the Piwik platform.

    The Plugin Settings API was changed to improve performance and to let plugin developers customize the Websites Manager. This is one step towards our goal to let users not only manage websites but also mobile apps, cars, coffee machines or any other thing.

    To see a full list of changes in the Piwik 3 analytics platform, have a look at the developer changelog.

    Developer docs

    The Piwik Developer Zone is full of guides and API references to help developers understand, integrate and extend Piwik. As some APIs have changed in the Piwik 3 release it is now possible to select the Piwik version in the top right corner of the developer zone.

    We are updating guides for Piwik 3 and added a Piwik 2 -> Piwik 3 Migration Guide for plugin developers. Many other guides were updated such as Menus, Custom Report and Widgets.

    Release date

    The first Piwik 3 beta release will be available in the next four weeks. Beta testers automatically receive the update if they are subscribed to the “Latest Beta” release channel. The final Piwik 3 release will be ready before the end of the year. If you want to give it a try, you can either use Piwik from Git and check out the “3.x-dev” branch, or download Piwik 3 from GitHub.

    Closing thoughts

    With faster & more beautiful reports, better APIs and more stability, Piwik 3 is a big step forward for all Piwik users. As our mission is to create, as a community, the leading international open source web analytics platform that gives every user full control of their data, we are very excited to introduce you to this upcoming release.

    We now offer Custom Development services if you like to sponsor a new feature or bug fix, or if you have any custom requirements. And if you use Piwik Analytics to grow your business and need quality help, contact the Piwik analytics experts to get started.

    Until our next Piwik 3 dev update, Happy analysis !

  • OpenCV and Cloud Cameras

    8 mai 2014, par Alexander

    So as a bit of context ; this program was built originally to work with USB cameras - but a few things changed. I’m trying to convert it to work with networked cameras, but my presence here should make it quite apparent what my level of success has been. I still consider myself somewhat new at programming, and definately new at visual processing/OpenCV - so please forgive a few blunders if I make them. I’m going to try to provide as much detail as possible, so apologies for the length below.


    I’m using :

    • OpenCV 2.4.6.0
    • Microsoft Visual Studio Express 2012
    • C++
    • D-Link Cloud Camera 7100

    I am trying to access the DLink camera’s video feed through OpenCV.

    I can access the camera through it’s IP address with a browser without any issues. Unfourtunately ; my program is less cooperative. I’ve put it on two computers (excluding the computer it gets compiled on, which for unrelated/unchangable reasons cannot be placed on the same network the network camera is on) which both fail to grant my program access to the camera. One computer gives the OpenCV-generated error :

    warning : Error opening file (../../modules/highgui/src/cap_ffmpeg_impl.hpp:529)

    This error occurs with just about everything I try that doesn’t somehow generate more problems. The other computer (same code) generates no such error - it just doesn’t get the camera’s output either.

    For reference - the code in OpenCV’s cap_ffmpeg_impl.hpp around line 529 is as follows :

    522    bool CvCapture_FFMPEG::open( const char* _filename )
    523    {
    524        unsigned i;
    525        bool valid = false;
    526
    527        close();
    528
    529    #if LIBAVFORMAT_BUILD >= CALC_FFMPEG_VERSION(52, 111, 0)
    530        int err = avformat_open_input(&ic, _filename, NULL, NULL);
    531    #else
    532        int err = av_open_input_file(&ic, _filename, NULL, 0, NULL);
    533    #endif
    ...
    616    }

    ...for which I have no idea what I’m looking at.

    My entire program is rather large, so I’m editing it down as much as possible to help keep this readable - if I miss something you think is important please leave a comment telling me as much so I can throw it in...

    First up - this is one of the first things in main() so I don’t have to recompile every time I want to try a different value :

    3380    cout << "Please Enter Video Location: ";
    3381    cin >> videoFeedAddress;
    3382    cout << "videoFeedAddress: " << videoFeedAddress << endl;

    Just a simple string value.
    Next up - the actual place we’re having the problem ! Probably...

    Note that in the below code - if networkCam is false and a USB camera is connected there is no problem. The error here is caused by line 153.

    121    void displayCameraView()
    122    {
    123     if(camviewOn) // displayCameraView is triggered by a button the user can press as often as they want. Doesn't mean we want to let them break everything.
    124     {return;}
    125     else
    126     {
    127         CvCapture* cv_cap;
    128         VideoCapture cv_cap_IP;
    129         Mat color_img_IP;
    130         camviewOn = true;
    131         int capture;
    132         IplImage* color_img;
    133         if(!networkCam)
    134         {
    135             cv_cap = cvCaptureFromCAM(0);
    136             Sleep(100);
    137             if(!cv_cap)
    138             {
    139                 setExitError(1002);
    140                 if(textOutput){cout << "Video Error: Video input will not work.\n";}
    141                 MessageBox(hwnd, "Error opening camera.", "Error", MB_ICONEXCLAMATION);
    142                 cvReleaseCapture( &cv_cap );
    143                 cvDestroyWindow("Camera View");
    144                 return;
    145             }
    146             color_img = cvQueryFrame(cv_cap);
    147             clickPointStorage.create(((Mat)color_img).rows, ((Mat)color_img).cols, CV_8UC3);
    148         }
    149         else
    150         {
    151             ///*\
    152            
    153             cv_cap_IP.open(videoFeedAddress);
    154             Sleep(100);
    155             if(!cv_cap_IP.isOpened())
    156             {
    157                 setExitError(1002);
    158                 if(textOutput){cout << "Video Error: Video input will not work.\n";}
    159                 MessageBox(hwnd, "Error opening camera.", "Error", MB_ICONEXCLAMATION);
    160                 cvDestroyWindow("Camera View");
    161                 return;
    162             }
    163             clickPointStorage.create(color_img_IP.rows, color_img_IP.cols, CV_8UC3);
    164    
    165             //\*/
    166         }
    167         clickPointStorage.setTo(Scalar(0, 0, 0));
    168         cvNamedWindow("Camera View", 0); // create window
    169         cvSetMouseCallback("Camera View", CallBackFunc, NULL);
    170         IplImage* IplClickPointStorage = new IplImage(clickPointStorage);
    171         IplImage* Ipl_IP_Img;
    172        
    173         if(!networkCam)
    174         {
    175             for(;;)
    176             {
    177                 IplClickPointStorage = new IplImage(clickPointStorage);
    178                 cvAdd(cvQueryFrame(cv_cap), IplClickPointStorage, color_img); // get frame
    181                 cvShowImage("Camera View", color_img); // show frame
    182                 capture = cvWaitKey(10); // wait 10 ms or for key stroke
    183                 if(capture == 27 || capture == 13 || capture == 32){break;} // if ESC, Return, or space; close window.
    184             }
    185             /* clean up */
    186             cvReleaseCapture( &cv_cap );
    187             delete cv_cap;
    188             delete IplClickPointStorage;
    189         }
    190         else
    191         {
    192             ///*\
    193    
    194             for(;;)
    195             {
    196                 cv_cap_IP.read(color_img_IP);
    197                 IplClickPointStorage = new IplImage(clickPointStorage);
    198                 Ipl_IP_Img = new IplImage(color_img_IP);
    199                 cvAdd(Ipl_IP_Img, IplClickPointStorage, color_img);
    200                 cvShowImage("Camera View", color_img); // show frame
    201                 capture = cvWaitKey(10); // wait 10 ms or for key stroke
    202                 if(capture == 27 || capture == 13 || capture == 32){break;} // if ESC, Return, or space; close window.
    203             }
    204             cv_cap_IP.release();
    205             delete Ipl_IP_Img;
    206             delete IplClickPointStorage;
    207    
    208             //\*/
    209         }
    210         cvDestroyWindow("Camera View");
    211         camviewOn = false;
    212     }
    213     return;
    214    }

    As I said, on one computer I get the above error - both of them give me my own error from here :

    155             if(!cv_cap_IP.isOpened())
    156             {
    157                 setExitError(1002);
    158                 if(textOutput){cout << "Video Error: Video input will not work.\n";}
    159                 MessageBox(hwnd, "Error opening camera.", "Error", MB_ICONEXCLAMATION);
    160                 cvDestroyWindow("Camera View");
    161                 return;
    162             }

    ...which of course tells me cv_cap_IP is not open. One of my primary concerns is with the videoFeedAddress variable. No value I enter seems to get a different result.

    I searched the Googles - and come across a number of different "possible" answers - but none of them seem to work for me. If you attempt to google it yourself you may come across some of these :

    1. This is one of the first configurations my code was in. No dice.
    2. This one is talking about files - not cameras. It also mentions codecs - but I wouldn’t be able to watch it in a web browser if that were the problem, right ? (Correct me if I’m wrong here...)
    3. This one has the wrong error code/points to the wrong line of code !
    4. This one mentions compiling OpenCV with ffmpeg support - but I believe 2.4.6.0 already comes with that all set and ready ! Otherwise it’s not that different from what I’ve already tried.
    5. Now THIS one appears to be very similar to what I have, but the only proposed solution doesn’t really help as I had already located a list of connections. I do not believe this is a duplicate, because as per THIS meta discussion I had a lot more information and so didn’t feel comfortable taking over someone else’s question - especially if I end up needing to add even more information later.

    Back to the videoFeedAddress variable : I found THIS site that lists a number of possible addresses to connect to it. since there exists no 7100 anywhere in the list - and the install is the same for the DCS-7010L I used the addresses found next to the DCS-7010L listings. Most of them can be reached through the browser, confirming that they reach the camera - but they don’t seem to affect the outcome when I change them.

    As per many of the above links, I’ve tried many of them both with any without username:password, port number (554), and variations on ?.mjpg (the format) at the end.

    Any ideas ?

  • Anomalie #4562 : Suite #4468 : Unification des CSS pour les boutons et les icônes

    17 février 2021

    Bon bon bon, on a pas mal réfléchi au sujet avec rastapopoulos, et je crois qu’on est arrivé à une solution satisfaisante.
    En tout cas une solution qui répond complètement aux problèmes et besoins soulevés dans ce ticket, en ce qui me concerne.

    Le problème était de ne traiter des icônes que sous l’angle d’une utilisation dans des boutons, de ne le faire qu’à moitié en proposant un jeu d’icônes très restreint, et avec des icônes pas toutes prévues pour cette utilisation qui plus est.

    Dans l’immédiat, pour clôturer ce ticket au plus vite, il s’agirait de faire ça :

    • dans le CSS, retirer complètement les variantes de boutons avec icônes : .bouton_add, .bouton_supprimer, etc. (ça sera fait différemment et mieux).
    • renommer la classe .bouton en .btn : c’est moins verbeux et on comprend aussi bien.
    • préfixer les variantes génériques qui restent : .btn_mini au lieu de .btn mini, etc.
    • finir les derniers petits ajustement visuels.

    Avec ça le ticket pourra enfin être fermé.

    Mais alors comment fait-on pour avoir des icônes dans les boutons ?
    C’est l’étape suivante.

    Des icônes

    On s’est dit, tant qu’à faire, autant proposer tout de suite un jeu complet d’icônes symboliques.

    Les besoins sont multiples pour pleins d’éléments d’interface, dans les plugins et dans le core : plier/déplier des trucs, dupliquer un contenu, afficher un menu, remonter dans la hiérarchie, etc., etc. (je fais vite).
    Et chacun doit réimplémenter ça un peu à sa sauce.

    On reprendrait un jeu d’icônes existant, qu’on n’aura pas à maintenir, optimisé, et qui fournit des icônes cohérentes visuellement, utilisables dans tous les contextes.
    Il y a plusieurs choix de jeux d’icônes libres : Bootstrap-icons, Octicon, Material, Entypo, etc.

    Ces icônes seraient utilisables de 2 façons :

    1. Des classes

    Quand il s’agit d’icônes purement décoratives, des classes que l’on peut ajouter à n’importe quel élément inline.
    Pour éviter les conflits, on propose la contraption de spip + icon = spicon.
    Cette solution utilise une fontface, l’icône hérite de la taille et de la couleur du texte.

    Pour les boutons, même principe : la classe signifie « ajoute une icône dans cet élément »

    Exemples :

    <span class="CodeRay"><span class="tag">span> <span class="attribute-name">class</span>=<span class="string"><span class="delimiter">"</span><span class="content">spicon_menu</span><span class="delimiter">"</span></span><span class="tag">></span>Ouvrir le menu<span class="tag"></span>
    <span class="tag">span> <span class="attribute-name">class</span>=<span class="string"><span class="delimiter">"</span><span class="content">spicon_truc</span><span class="delimiter">"</span></span><span class="tag">></span><span class="tag"></span> Du texte
    <span class="tag">span> <span class="attribute-name">class</span>=<span class="string"><span class="delimiter">"</span><span class="content">titrem spicon_machin</span><span class="delimiter">"</span></span><span class="tag">></span>Mon titre<span class="tag"></span>
    </span></span></span></span>

    2. Une balise #ICON

    En complément, on peut vouloir embarquer une icône svg dans le HTML.

    On propose de reprendre et d’adapter la super balise #ICON du plugin Zcore, qui fait ça très bien.
    Cette balise permet d’embarquer une icône du set par défaut, mais également n’importe quelle autre (je rentre pas dans les détails).

    Un modèle correspondant permettra aussi d’inclure des icônes svg dans les textes :

    <span class="CodeRay">#ICONE{identifiant}
    #ICONE{chemin/vers/mon_icone.svg}
    #ICONE{#identifiant_autre_set}
    </span>

    Identifiants sémantiques

    Les identifiants des icônes seront directement ceux du jeu d’icônes choisi.
    Mais ils peuvent avoir des noms un peu barbares : chevron-double-right, eye-slash, grip-vertical, etc.

    Dans tous les cas on pourra les utiliser tels quels, mais en plus de ça, on propose de faire une correspondance sémantique pour les icônes correspondants aux actions les plus courantes. Par exemple au lieu de faire #ICONE{chevron-double-down} on pourra faire #ICONE{deplier}.

    La liste initiale est visible ici : https://demo.hedgedoc.org/3zIXkcFLTVSwV0nKC1_qcA?both

    Voilà, je crois que c’est tout, rastapopoulos tu complètera si j’ai oublié des trucs.
    Peut-être qu’on peut partir sur un nouveau ticket pour ce sujet et la branche dev qui ira avec.

    À vous les studios.