Raphaël G. a écrit 1927 commentaires

  • [^] # Re: Richard Stallman

    Posté par  (site web personnel) . En réponse au journal Soirée Big Brother sur Arte. Évalué à 4.

    En fait cette mesure n'est valable qu'avec une durée de strockage longue comparé au temps depuis l'effacement.

    1 - A savoir tu conserves un document volé secret défense.
    2 - Les services secret te retrouve.
    3 - Tu efface avec shred les données (avec syncronisation des caches disque a chaque écriture par dessus, remonter le disque en sync).
    4 - Ils lancent la récupération par une équipe spécialisée.

    Dans ce cas tout dépend du rapport temps de stockage / (nombre d'effacement + temps depuis l'effacement).

    Bon comme en plus tu es malin, tu auras ajouté une chouche de chiffrement entre le support physique et les données.

    Ça te permet de gagner 4mois de temps de cassage de la clef, temps nécessaire a IBM pour casser de l'aes128 il y a 4ans.
    (J'arrive plus a remettre la main sur les articles de l'époque)

    Mais bon rassure toi, je doute fortement qu'il s'amusent a réquisitionner une forme de serveur pendant 4mois pour quelques fichiers musicaux.

    Petit rappel, si il ne te prennent pas en flagrant délit tu as encore la présomption d'innocence pour toi, avec un bon avocat et sans confession de ta part ils pourront pas faire grand chose...
  • [^] # Re: Richard Stallman

    Posté par  (site web personnel) . En réponse au journal Soirée Big Brother sur Arte. Évalué à 4.

    Faut-t-il encore qu'il puisse prouver que ce sont des données chiffrées et non pas un disque dur vide...
  • [^] # Re: Anglais

    Posté par  (site web personnel) . En réponse au journal USVN 0.6. Évalué à 3.

    Je pense qu'un texte comme ceci sera un peu plus en anglais.

    Il faudrais quand même vérifier la grammaire et conjugaison (c'est le principal défaut de mon anglais).

    Un petit conseil, dégage tout ce qui of, for, to quand tu les utilises pas correctement, a la place renverse l'ordre des mots et ça fera la même chose en mieux.

    Enfin, je trouve quand même inquiétant que vous n'arriviez pas a maitriser les rudiment d'anglais en informatique O_o
    J'ai fait a peine 2-3ans d'anglais dans toute ma vie (il y a 5ans maintenant) et je me débrouille mieux...
    (je compte pas deux année d'anglais avec un prof plus souvent absente que présente)

    La traduction :
    Userfriendly SVN is a PHP5 web interface to administrate and configure Subversion repositories.
    It allows users to create new projects without the command line SVN client, avoid SSH access requirement to manage SVN repositories.
    USVN manages your projects for you, and allow users to checkout source code only if they are allowed to.
    Dispatch administrators on different projects become easy and safe.
    During installation process, USVN show you an apache configuration bloc.
    After merging it with your apache configuration file, you don't need further root access.

    USVN enable an easy, fast and powerful repositories files access configuration.
    For exemple translators may only have translation files access.
    USVN is an open source project under CeCILL licence.
    (Remove CeCILL and put GPL here, CeCILL is in french and not suited for english people)
    Last USVN release include this features:
    Administrator and user management
    Group management
    Project management
    Repository browsing
    Repository file access management
  • [^] # Re: Mwais...

    Posté par  (site web personnel) . En réponse à la dépêche GNU Affero General Public License : la GPL des applications web. Évalué à 2.

    Pardon, en fait je pense qu'il faut séparer django et wikimedia de pear.

    Pear se veux une bibliothèque de librairie réutilisable par n'importe quel projet. contrairement aux deux autre qui sont des projets a part entière.

    Je pense que pour pear il n'y a pas d'intérêt a les mettre en AGPL (si ça oblige le projet qui se base dessus a devenir AGPL).
    Il y a plus d'intérêt a le mettre sous une licence type ALGPL (par exemple) qui autorise la ré-utilisation par des projets libre ou propriétaire mais oblige a redistribuer les améliorations faite a la librairie.
  • [^] # Re: Les autres distributions ..?

    Posté par  (site web personnel) . En réponse à la dépêche Atelier PKGBUILD : apprendre à empaqueter sous ArchLinux. Évalué à 1.

    J'ai installé ubuntu chez deux personnes que je connais et je dois dire que la ou j'ai le plus de mal c'est avec les paquets debian que je ne comprend pas, le système que je trouve très lourd a gérer ... Finalement, je ne vois pas ce qu'on leur trouve à ces paquets debian. Même les RPM semblent plus facile a créer.


    Tu n'es pas le seul a le penser (a raison AMHA).

    En fait les .deb n'ont pas de forme source, par exemple nom-version.src.rpm
    Ils ont a la place un fichier source + diff.

    En plus a cause de ça il est difficile de générer ce diff (pour moi c'est un beau bordel).

    A la place sur un rpm, tu as un src.rpm qui contiens la source en tar.bz2, tes patch, fichier spécifique au package et le fichier spec pour générer la forme binaire.

    Après c'est juste un squelette tout bête a remplir quand tu connais un peu.

    Sur les logiciels standard ça se règle vite fait avec un coup de configure, make et make install.

    En plus avec les nouvelles mouture sous mandriva il se charge tout seul de te générer les dépendances correctement...
    (même module perl et autre)
  • [^] # Re: Mwais...

    Posté par  (site web personnel) . En réponse à la dépêche GNU Affero General Public License : la GPL des applications web. Évalué à 2.

    Pour moi, ça n'en est pas. Le tout est de bien placer la limite. Mais pour des applis web telles django, pear, wikimedia, je pense que l'AGPL serait une bonne chose.

    ALGPL tu veux dire.

    Parce que si on met ces morceaux de librairie, les projets l'utilisant seront en obligation de tomber en AGPL aussi (vu qu'il sont lié avec).
  • [^] # Re: bien entendu nous parlons de versions où l'utilisateur INTERAGIT ave

    Posté par  (site web personnel) . En réponse à la dépêche GNU Affero General Public License : la GPL des applications web. Évalué à 3.

    De toute façon on s'en fout un peu que tu fasse un modif a la va-vite en AGPL.

    Le développeur original en a rien a faire de ton hack pour bloquer un exploit !

    Par contre ce que veux l'auteur c'est pouvoir récupérer les amélioration notable effectué au logiciel (exemple un module pour prendre en charge le payement par google checkout ou autre).

    Bien sur la différence entre la AGPL et les précédentes pas considérées comme libre est que cette clause de pouvoir récupérer le code doit être effective pour tous les utilisateurs (et pas que le dev inital).
    Ça garanti que si un utilisateur reprend le projet abandonné et l'améliore il ai le droit d'avoir les améliorations supplémentaires.

    Je suis dans le cas où je développe un moteur de site, mon moteur est révolutionnaire, tout ça...

    Prenons le cas actuel, je me repose sur deux trois classes PEAR (MDB2:BSD, Template_IT:MBSD, QuickForm:PHP), bon rien ne m'empêche de mettre mon code en AGPL.
    En effet, le code est distinct de ces librairies que j'utilise.
    Après les cas concret...

    Je diffuse la version 0.1 du site, une boite privée genre t1v0 trouve mon projet sympa, elle reprend le code, ajoute 3-4 modules puis lance un webservice de site internet personnel.

    Avec un site sous GPL je me retrouve comme un con, il peuvent rétorquer qu'il s'agit d'un site privé (l'utilisateur ne lance pas le code php).

    Avec de l'AGPL je suis garanti de pouvoir leur demande leur code source et ils doivent me le fournir dans un délais raisonnable.

    Franchement je comprend pas les soucis de "liaison" avec des librairies proprios.

    Si je veux ajouter un support XML ou autre a mon projet je peux utiliser une librairie de mon choix (même proprio).
    Car mon site repose sur cette librairie et n'en est pas une extension.

    Par contre si on étend les fonctionnalités et qu'il y a publication (interaction avec le public) ben on tombe dans l'obligation de redistribuer les modifications.

    En fait la seule possibilité que j'ai de pas récupérer quelque chose qui utilise mon projet est si cela est séparé.

    Par exemple une application QT/php/etc qui fait des requêtes XYZ sur le site sans utiliser le code du site.

    Franchement je comprend pas le problème des deux trolleurs plus haut (Éric et ragoutoutou).

    ps : perso ça me dérange pas qu'on ré-utilise mon boulot, par contre je compte créer du service payant autour, donc il est HORS DE QUESTION qu'une société t1v0 s'amène améliore mon service et ramasse la mise sans que je puisse aussi en profiter.
  • # Deux solution

    Posté par  (site web personnel) . En réponse au message Ctrl-c ne fonctionne pas. Évalué à 3.

    Bon normalement le Ctrl+c est en fait un envoi de SIGINT au programme si mes souvenirs sont bon.

    Je sais pas exactement comment ça marche mais normalement c'est ton interpréteur qui dois l'envoyer au programme j'imagine.
    (donc si tu as un interpréteur limité ça peux ne pas marcher)

    Après dans ton programme il faut rajouter un masque pour intercepter cet appel et lancer la procédure d'extinction du programme.

    Pour de plus ample voir :
    $ man sigaction

    Bonne chance ;)
  • # Bonne émission

    Posté par  (site web personnel) . En réponse au journal Un petite émission interessante. Évalué à 2.

    Bon voila une émission très intéressante.

    Par contre je suis un peu dégoûté, encore une fois on vois ubuntu de partout, et point de mandriva :'(

    Avec une dose de patriotisme ils auraient quand même pu les citer au minimum...
  • [^] # Re: Bayrou

    Posté par  (site web personnel) . En réponse au journal BAYROU PRAISIDENT. Évalué à 1.

    L'enlace en pleurant...
  • [^] # Re: et pourquoi...

    Posté par  (site web personnel) . En réponse au message Polydoc, la documentation globale et libre. Évalué à 3.

    Laisse moi le répéter !

    Documenter php ou QT n'a AUCUN intérêt !!!

    Pour php ça n'a aucun intérêt car la doc existe déjà et est déjà bien complète.
    (honnêtement je n'ai pas trouvé de trou)
    Ensuite leur système de recherche marche déjà très bien !
    Exemple : http://fr.php.net/ksort
    (ksort étant un nom de fonction)

    Pour qt c'est la même chose, a part que la traduction de la doc en français est peut-être non disponible.
    (Donc il suffit de reprendre la doc de trolltech et de la traduire + ré-envoyer)

    Pour le reste je sais pas, mais en tout cas pour php et qt il n'y a pas de grand intérêt.

    En fait la doc des fonctions de php elle est disponible un peu partout, en revanche ce qui manque, c'est des guides par la pratique de l'utilisation de fonctions avancées.
  • [^] # Re: et pourquoi...

    Posté par  (site web personnel) . En réponse au message Polydoc, la documentation globale et libre. Évalué à 2.

    J'ai oublié un petit truc.

    Quand tu auras fait ces changements, si tu veux facilement monter dans les stats google (car cela aura un intérêt alors) :
    - met des liens direct en page d'accueil vers une full liste des articles (sinon google moulinera pas ton site)
    - met tes articles avec le titre dans l'url si tu peux le faire

    Une fois ces changements cosmétiques fait pour ton site, reviens ici et fait un journal public !!!
    (pas un forum qui disparaît super vite et fera pas monter ton rang)

    Bon sinon dans les sites avec du contenu sympa il y a le http://www.siteduzero.com/ mais il n'est pas assez poussé je trouve.

    Après si tu veux trouver des articles de qualité va chez ibm, c'est en anglais et très haut niveau, mais toujours très intéressant :
    http://www.ibm.com/developerworks/search/searchResults.jsp?s(...)
    http://www.ibm.com/developerworks/search/searchResults.jsp?s(...)

    Article sur les modèles de conceptions :
    http://www.ibm.com/developerworks/opensource/library/os-php-(...)

    Sinon y a pas mal de truc dans le site de zend, mais c'est pareil que chez ibm, une quantité d'article en anglais de très haut niveau dans un univers de documents pas tous très intéressant...
  • [^] # Re: et pourquoi...

    Posté par  (site web personnel) . En réponse au message Polydoc, la documentation globale et libre. Évalué à 3.

    Bon étant un connaisseur (enfin pas mal) de php et sql, je pense que ton projet a pas vraiment d'intérêt...

    Oui je sais c'est rude...

    Enfin une doc similaire a la doc officielle de php n'a aucun intérêt (le seul serait de traduire les commentaires et de virer ceux en double).

    Par contre il serait nettement plus intéressant que vous repreniez des documentations et articles sur php en anglais pour en faire une bonne traduction.

    Par exemple :
    - Conception MVC
    - Factory, Singleton
    - Création d'objet
    - Utilisation de classe d'abstraction : PDO, MDB2, etc...
    - Conception de base de donnée (quel type, quelle clef, etc)

    Parce que documenter l'api bon ben ça a pas vraiment d'intérêt...
    (autant aller faire les bugs report pour le faire ajouter dans la doc officielle)
  • [^] # Re: Auto-increment

    Posté par  (site web personnel) . En réponse au message while boucle + 1. Évalué à 2.

    Franchement je comprend pas pourquoi tu as besoin de l'élément suivant ou précédent.

    Mais si j'étais toi, je me prendrais pas le chou...

    Tu t'arrange pour récupérer le bloc de donnée dans un tableau associatif.
    Je connais pas trop les commandes mysql parce que j'utilise mdb2 mais ça dois être possible.

    Ensuite tu te fait une boucle autour du tableau.

    Créer l'objet mdb2 :
    $dsn = array(
    //SQL type database
    'phptype' => 'mysqli',
    //SQL hostname
    'hostspec' => 'localhost',
    //SQL login
    'username' => 'username',
    //SQL password
    'password' => 'password',
    //SQL database name
    'database' => 'database',
    //SQL charset
    'charset' => 'UTF8'
    );
    $options = array(
    'debug' => 2,
    'portability' => MDB2_PORTABILITY_ALL
    );
    $db = MDB2::singleton($dsn, $options);

    Exemple :
    $sql = 'SELECT * FROM '.$table.' WHERE rubrique LIKE \''.$rubrique.'\' ORDER BY position';

    Ensuite tu fait un :
    $res = $db->getAll($sql, null, array(), null, MDB2_FETCHMODE_ASSOC);
    if (MDB2::isError($res))
    trigger_error('sql error: '.$res->getMessage(), E_USER_ERROR);

    Ensuite :
    foreach($res as $key => $value)
    {
    echo $value['id'].' => '.$value['blabla'].'';
    if (isset($res[$key-1]))
    //ton précédent est $res[$key-1]
    ;
    if (isset($res[$key+1]))
    //ton suivant est $res[$key+1]
    ;
    }

    Bon après regarde si tu as pas la même chose en commande mysql direct.
  • # Auto-increment

    Posté par  (site web personnel) . En réponse au message while boucle + 1. Évalué à 2.

    Si c'est pour connaître l'id pour la prochaine ligne a insérer te fait pas chier.

    Exemple ta table :

    id nom fonction
    1 test test
    2 bla bla
    3 taga da
    ...
    4012 car ambar


    Tu met l'attribut auto-increment a ton champ id et le problème est réglé.

    Tu auras just a faire une requête comme ça pour ajouter une ligne a la fin :
    INSERT `nom_table` (`nom`, `fonction`) VALUES ('trou', 'badour');
  • # Attention.

    Posté par  (site web personnel) . En réponse au message se debarrasser d'un trojan. Évalué à 2.

    Bon fait gaffe a un truc, c'est chkrootkit, il va générer un certain nombre de faux positifs !

    Pour être sur que tu n'es pas infecté par un trojan (ce qui est fort peu probable si tu n'as pas créé de faille de sécurité), tu dois vérifier la signature de tes binaires.

    A savoir, va sur google et cherche comment savoir a quel paquet appartient ce fichier.
    Sous mandriva ça serait :
    $ rpm -qf /usr/lib/chkrootkit/chkproc

    Ensuite vérifie la signature des fichiers de ce paquet.
    Sous mandriva ça serait :
    $ rpm -V chkrootkit

    Bon il faut faire de même pour tes fichiers debian/ubuntu.

    Mais bon il y a peu de chance que tu sois infecté, linux n'est pas une passoire comme windows (quoique ubuntu avec son sudo automatique pour l'user si)
  • [^] # Re: Hum

    Posté par  (site web personnel) . En réponse au message Constructeur, destructeur, et autre.... Évalué à 4.

    Je viens de relire tes fonctions plus sérieusement, maintenant j'ai ta réponse.

    Dans le cas 1 tu alloue un objet et fait pointer un pointeur dessus.
    A la fin de ta fonction le pointeur sera détruit tout seul (variable locale), mais pas ton objet qui a été aloué.

    Dans le cas 2 tu crée ton objet localement, ton obj est une variable locale (comme un int, float, string, char, etc) et sera libéré tout seul a la fin de la fonction.
  • # Hum

    Posté par  (site web personnel) . En réponse au message Constructeur, destructeur, et autre.... Évalué à 2.

    Normalement tes ressources allouées sont automatiquement détruite a la fin de l'exécution de la fonction.

    A savoir :
    void fonction()
    {
    char tab[5] = ['a','b','c','d','e'];
    }

    Le tableau sera vidé a la fin de l'exécution de la fonction.

    Après tu as le cas de des objets.

    Quand tu utilises ton new, tu instancies ton objet (la place mémoire est prise), une fois que tu quitte la fonction il devrais être dé-alloué automatiquement.

    En fait le delete explicite va libérer la mémoire pour cet objet là où tu l'appelles.

    Bon je suis plus trop sur du fait que tu doives faire un appel explicite a ton delete dans une fonction pour dé-allouer l'objet.
    (Je sort de trop de php pour te répondre)

    Mais c'est le même soucis que ton allocation de zone mémoire via un appel malloc, tu alloues ta zone mémoire, ensuite tu dois la détruire, sinon c'est une fuite de mémoire.
    (en fait a la fin du programme elle sera libérée de toute façon).

    Je te conseille d'aller relire le comportement des fonctions en C++ de plus prêt, tu trouvera une réponse a ce problème sure.
  • [^] # Re: euh !

    Posté par  (site web personnel) . En réponse au journal Bestiole dans l'écran. Évalué à 6.

    Ça m'est arrivé sur mon précédent écran acer 17"
    (comme il étais plus sous garanti et avait été cassé en partie par un coup métallique suite a une mauvaise manip j'ai démonté)

    Pour le démontage c'est la galère, prend des photos si tu peux pour savoir replacer TOUS les éléments !

    Prend une boite a casier ou une feuille avec crayon pour savoir replacer TOUTES les vis !
    (J'en ai sorti une 50aine et crois moi c'est la galère pour remonter après !)

    J'ai du déclipser la coque en plastique, c'est assez galère mais avec quelques tourne-vis plat et de la patience tu y arrive...

    Ensuite passage au démontage de l'armature métalique et de la coque arrière, ensuite désolidarisation de la partie électronique de la dalle :
    - FAIT GAFFE AU CONNECTEUR QUI PEUVENT CASSER !!!
    - FAIT GAFFE AU NAPPE QUI PEUVENT CASSER !!!

    Ensuite passage au démontage de la dalle en elle-même, fait gaffe, il y a une dizaine de feuille filtre a ne pas abimer et a ne pas interverser !

    J'ai fait une connerie a ce point là, j'ai eu le malheur de vouloir nettoyer la vitre, il ne faut pas !!!
    Dès que tu as viré l'insect (avec gants blanc en coton propre si possible) replace le bloc et remonte le tout.
    Si jamais tu as une seule poussière tu es bon pour avoir des pixels morts a la sortie !

    Pour le remontage c'est la galère, méfie toi du sens de connecteurs du rétro-éclairage, j'en avais un qui sautais donc ma dalle fonctionnait 5secondes avant de s'éteindre en mode veille.
    (J'ai mis 2jours avant de me rendre compte de ce soucis !)

    Bon au final j'ai racheté un nouveau 17" acer pour 200¤, le premier m'avait coûté 450¤ si mes souvenirs sont bon et m'a fait 4ans.
    (Donc je regrette pas).
  • [^] # Re: Ça doit être la procédure standard ...

    Posté par  (site web personnel) . En réponse au journal Topachat ca devient n'importe quoi. Évalué à 2.

    C'est quoi leur url de ce formulaire ?

    Parce que bon il sont franchement lourd d'avoir viré tout support par mail ou autre !
    (numéro surtaxé quand tu nous tiens...)
  • [^] # Re: Autre solution

    Posté par  (site web personnel) . En réponse au message Redimensionner une partion racine sans la démonter. Évalué à 2.

    Ça marchera pas.

    Pour faire simple, lvm est un conteneur de partition.

    A savoir tu crée un volume lvm qui prend tous les disque dur, et après tu peux créer des partitions comme tu l'entends dessus.
    MAIS ça va pas marcher car ext3 et autre ne supporte pas le redimentionement parfaitement (seulement en agrandissement)

    Bref, tu n'as aucune solution qui marche a chaud (a partir du système booté) sans faire tout planter...
    (ou écrire les outils)

    La solution la plus simple est :
    - livecd + accès réseau : tu déplaces tout, repartitionnement, replace tout
    - débrancher + remonter sur un pc fixe et faire pareil

    Après le ZFS permettrais a terme de pouvoir faire ce que tu cherches, mais point de salut dans le noyau linux tant qu'il sera pas en GPLv3 et solaris de même...
  • [^] # Re: Sinon ...

    Posté par  (site web personnel) . En réponse au journal Divergence Numérique On TV et Bookinfo (nouvelle émission). Évalué à 3.

    Une petite question stupide :
    Serait-il enfin possible d'avoir les enregistrements en mp3/ogg/mp4/etc ?

    Parce que personnellement je n'ai pas free donc pas freetv.
    Je n'ai pas la possibilité de programmer d'être libre a ces moments de diffusion.

    Bref, ça m'arrangerais grandement d'avoir ces enregistrements.

    ps : si vous me dumpez les enregistrement numérisé dans un coin, même mal coupé ou autre je ferais les .ogg qui vont bien.
  • [^] # Re: j'ai du mal m'exprimer

    Posté par  (site web personnel) . En réponse au message Acceder au contenu d'un dépôt Subversion en lecture. Évalué à 2.

    Hum, normalement tu dois pouvoir te débrouiller en utilisant les scripts inclus dans le dépôt svn.

    Regarde les scripts dans ce rep :
    /ton_dépôt/hooks/

    Surtout celui ci :
    /ton_dépôt/hooks/post-commit.tmpl

    En fait un script exécutable mis sous ce nom fera le boulot :
    /ton_dépôt/hooks/post-commit

    Dans ce script met un truc comme ça :
    # !/bin/sh
    cd /var/www/html
    svn update

    Et ça devrais faire l'affaire.

    Voir un petit :
    perl -pne 's/ton_pass_sql/pass_sql/' -i config.ini
  • [^] # Re: Grah

    Posté par  (site web personnel) . En réponse à la dépêche Trophées du libre 2007 : vous pouvez postuler dès maintenant !. Évalué à 2.

    Justement je suis dégoûté, je voulais justement proposer un projet cette année :'(
  • [^] # Re: Besoin d'aide

    Posté par  (site web personnel) . En réponse au journal IPv6 en amateur en France, comment faire ?. Évalué à 3.

    Tu télé-charge ce script :
    http://guillaume.romagny.free.fr/evaldo/csr.sh

    Ensuite tu ajoutes un a un tes domaines pour la demande de certificat :
    example.com
    example.example.com
    www.example.com
    etc.example.com

    Ça va te sortir un .csr et un .pem (ta clef privée).

    Tu t'inscrit sur cacert.org, tu ajoutes ton domaine.
    Ensuite tu copie colle ta demande de certificat et tu recevra ton certificat final utilisable.

    Bon pour un vrai certificat qui dégage pas 100% de info a part les common name et autres domaines faut te faire enregistrer correctement auprès de cacert ou acheter un vrai certificat auprès de cacert.

    Chezmoiçamarche, mon pseudo + .eu et vous avez un example.

    Après tu auras besoin d'un mod_rewrite et des règles qui vont bien dans ton virtualhost ssl.
    Petit example :
    # This is a VirtualHosts configuration.

    <IfModule mod_ssl.c>
    <VirtualHost _default_:443>
    # Rewrite url depending on requested domain name
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteOptions inherit

    # etc domain
    RewriteCond %{HTTP_HOST} ^etc\.
    RewriteCond %{REQUEST_URI} !^/icons.*
    RewriteCond %{REQUEST_URI} !^/error.*
    RewriteRule ^/(.*) /var/www/etc/$1 [L]

    # phpmyadmin domain
    RewriteCond %{HTTP_HOST} ^phpmyadmin\.
    RewriteRule ^/(.*) /var/www/phpMyAdmin/$1 [L]

    # example domain
    RewriteCond %{HTTP_HOST} ^example\.
    RewriteCond %{HTTP_HOST} !^example\.com$
    RewriteRule ^/(.*) /var/www/example/$1 [L]
    </IfModule>
    # Document root
    DocumentRoot "/var/www/yaorte2"

    # Error log
    ErrorLog logs/ssl_error_log

    <IfModule mod_log_config.c>
    TransferLog logs/ssl_access_log
    </IfModule>

    # SSL Engine Switch:
    # Enable/Disable SSL for this virtual host.
    SSLEngine on

    # SSL Cipher Suite:
    # List the ciphers that the client is permitted to negotiate.
    # See the mod_ssl documentation for a complete list.
    SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW

    # SSL Protocol support:
    # List the enable protocol levels with which clients will be able to
    # connect. Disable SSLv2 access by default:
    SSLProtocol all -SSLv2

    # Server Certificate:
    # Point SSLCertificateFile at a PEM encoded certificate. If
    # the certificate is encrypted, then you will be prompted for a
    # pass phrase. Note that a kill -HUP will prompt again. Keep
    # in mind that if you have both an RSA and a DSA certificate you
    # can configure both in parallel (to also allow the use of DSA
    # ciphers, etc.)
    SSLCertificateFile /etc/pki/tls/certs/localhost.crt

    # Server Private Key:
    # If the key is not combined with the certificate, use this
    # directive to point at the key file. Keep in mind that if
    # you've both a RSA and a DSA private key you can configure
    # both in parallel (to also allow the use of DSA ciphers, etc.)
    SSLCertificateKeyFile /etc/pki/tls/private/localhost.key

    # Server Certificate Chain:
    # Point SSLCertificateChainFile at a file containing the
    # concatenation of PEM encoded CA certificates which form the
    # certificate chain for the server certificate. Alternatively
    # the referenced file can be the same as SSLCertificateFile
    # when the CA certificates are directly appended to the server
    # certificate for convinience.
    #SSLCertificateChainFile /etc/pki/tls/certs/server-chain.crt

    # Certificate Authority (CA):
    # Set the CA certificate verification path where to find CA
    # certificates for client authentication or alternatively one
    # huge file containing all of them (file must be PEM encoded)
    # Note: Inside SSLCACertificatePath you need hash symlinks
    # to point to the certificate files. Use the provided
    # Makefile to update the hash symlinks after changes.
    #SSLCACertificateFile /etc/pki/tls/certs/ca-bundle.crt

    # Certificate Revocation Lists (CRL):
    # Set the CA revocation path where to find CA CRLs for client
    # authentication or alternatively one huge file containing all
    # of them (file must be PEM encoded)
    # Note: Inside SSLCARevocationPath you need hash symlinks
    # to point to the certificate files. Use the provided
    # Makefile to update the hash symlinks after changes.
    #SSLCARevocationPath /etc/pki/tls/certs/ssl.crl
    #SSLCARevocationFile /etc/pki/tls/certs/ca-bundle.crl

    # Client Authentication (Type):
    # Client certificate verification type and depth. Types are
    # none, optional, require and optional_no_ca. Depth is a
    # number which specifies how deeply to verify the certificate
    # issuer chain before deciding the certificate is not valid.
    #SSLVerifyClient require
    #SSLVerifyDepth 10

    # Access Control:
    # With SSLRequire you can do per-directory access control based
    # on arbitrary complex boolean expressions containing server
    # variable checks and other lookup directives. The syntax is a
    # mixture between C and Perl. See the mod_ssl documentation
    # for more details.
    #<Location />
    #SSLRequire ( %{SSL_CIPHER} !~ m/^(EXP|NULL)/ \
    # and %{SSL_CLIENT_S_DN_O} eq "Snake Oil, Ltd." \
    # and %{SSL_CLIENT_S_DN_OU} in {"Staff", "CA", "Dev"} \
    # and %{TIME_WDAY} >= 1 and %{TIME_WDAY} <= 5 \
    # and %{TIME_HOUR} >= 8 and %{TIME_HOUR} <= 20 ) \
    # or %{REMOTE_ADDR} =~ m/^192\.76\.162\.[0-9]+$/
    #</Location>

    # SSL Engine Options:
    # Set various options for the SSL engine.
    # o FakeBasicAuth:
    # Translate the client X.509 into a Basic Authorisation. This means that
    # the standard Auth/DBMAuth methods can be used for access control. The
    # user name is the `one line' version of the client's X.509 certificate.
    # Note that no password is obtained from the user. Every entry in the user
    # file needs this password: `xxj31ZMTZzkVA'.
    # o ExportCertData:
    # This exports two additional environment variables: SSL_CLIENT_CERT and
    # SSL_SERVER_CERT. These contain the PEM-encoded certificates of the
    # server (always existing) and the client (only existing when client
    # authentication is used). This can be used to import the certificates
    # into CGI scripts.
    # o StdEnvVars:
    # This exports the standard SSL/TLS related `SSL_*' environment variables.
    # Per default this exportation is switched off for performance reasons,
    # because the extraction step is an expensive operation and is usually
    # useless for serving static content. So one usually enables the
    # exportation for CGI and SSI requests only.
    # o StrictRequire:
    # This denies access when "SSLRequireSSL" or "SSLRequire" applied even
    # under a "Satisfy any" situation, i.e. when it applies access is denied
    # and no other module can change it.
    # o OptRenegotiate:
    # This enables optimized SSL connection renegotiation handling when SSL
    # directives are used in per-directory context.
    #SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire

    <FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
    </FilesMatch>

    <Directory "/var/www/cgi-bin">
    SSLOptions +StdEnvVars
    </Directory>

    # SSL Protocol Adjustments:
    # The safe and default but still SSL/TLS standard compliant shutdown
    # approach is that mod_ssl sends the close notify alert but doesn't wait for
    # the close notify alert from client. When you need a different shutdown
    # approach you can use one of the following variables:
    # o ssl-unclean-shutdown:
    # This forces an unclean shutdown when the connection is closed, i.e. no
    # SSL close notify alert is send or allowed to received. This violates
    # the SSL/TLS standard but is needed for some brain-dead browsers. Use
    # this when you receive I/O errors because of the standard approach where
    # mod_ssl sends the close notify alert.
    # o ssl-accurate-shutdown:
    # This forces an accurate shutdown when the connection is closed, i.e. a
    # SSL close notify alert is send and mod_ssl waits for the close notify
    # alert of the client. This is 100% SSL/TLS standard compliant, but in
    # practice often causes hanging connections with brain-dead browsers. Use
    # this only for browsers where you know that their SSL implementation
    # works correctly.
    # Notice: Most problems of broken clients are also related to the HTTP
    # keep-alive facility, so you usually additionally want to disable
    # keep-alive for those clients, too. Use variable "nokeepalive" for this.
    # Similarly, one has to force some clients to use HTTP/1.0 to workaround
    # their broken HTTP/1.1 implementation. Use variables "downgrade-1.0" and
    # "force-response-1.0" for this.

    <IfModule mod_setenvif.c>
    BrowserMatch ".*MSIE.*" nokeepalive ssl-unclean-shutdown \
    downgrade-1.0 force-response-1.0
    </IfModule>

    # Per-Server Logging:
    # The home of a custom SSL log file. Use this when you want a
    # compact non-error SSL logfile on a virtual host basis.
    <IfModule mod_log_config.c>
    CustomLog logs/ssl_request_log \
    "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
    </IfModule>
    </VirtualHost>
    </IfModule>