Leaderboard
Popular Content
Showing content with the highest reputation on 06/09/2014 in Messages
-
Hey ! Voila une petit guide qui vous permettra de distinguer les formats sonores FIRST .WAV (qualité CD) 1411 kbps CBR – Poids: 3466 Ko / 20 secondes THE BEST. Meilleure qualité vendu sur le marché. 2em place .MP3 320 kbps CBR – Poids: 787 Ko / 20 secondes. L'avantage du mp3 c'est qu'il est compatible avec presque tous les appareils, mais il faut pas oublier que la qualité de ce dernier est l'une des plus médiocre. 3em place .WMA 320 kbps CBR - Poids: 849 Ko / 20 secondes En terme de qualité c'est la même chose que le mp3 voir même, encore plus médiocre. Par contre il est légèrement plus lourd que le mp3 donc c'est pas trop interessant. 4em place .AAC LC 320 kbps VBR - Poids: 712 Ko / 20 secondes Le format le plus léger possible, mais de mauvaise qualité, à peu près pareil que les 2 de dessus. Mieux que le wav ? ouais, y a la qualité studio, c'est supérieur à la qualité cd. Il faut évidemment du bon matériel pour entendre la différence, et une oreille de mélomane. Certaines personnes ne sont pas satisfaits avec une qualité cd .. c'est ceux qui chipotent sur les graves et les aigus, ou la différence est presque invisible pour une personne normale Bon les formats en qualité studio sont aussi en format .wav mais tout à l'heure on parlait de formats audio encodés en 320kbps (320kbps 16b 44khz pour le .wav). Ce qui est différent du format studio étant donné que là c'est du WAV 24 bits 192khz (meilleure qualité possible). Je vais pas m'étendre sur la qualité studio à par si certains veulent plus d'infos mais ça ne me semble pas nécessaire vu que c'est presque introuvable sur le web. En espérant que ce petit guide vous sera utile ! Si vous avez des questions n'hésitez surtout pas. Akimace.1 point
-
Le deepweb Suite à certaines demandes, je vais faire une introduction au deepweb, afin de vous expliquer le principe sur lequel celui-ci fonctionne et les moyens pour s'y connecter. Avant tout, j'apporte quelques petites précisions : je vais très certainement m'inspirer d'autres sites pour rédiger ce guide, les sources seront cités en bas de page. D'autres part, je ne prétends pas tout connaître sur le sujet, alors si quelque chose vous gêne ou si vous préférez que je parle d'un point : spécifiez-le moi. 1 - Introduction Pour commencer, si vous souhaitez comprendre intégralement et de manière plus complexe le fonctionnement du deepweb, ses explications et détails techniques, je vous invite à rechercher des thèses sur internet ou même consulter son wikipédia (http://www.fr.wikipedia.org/wiki/Web_profond, qui est cependant extrêmement peu rigoureux). Je vais néanmoins vous parler un peu du deepweb avant d'expliquer comment s'y rendre, donc si vous souhaitez juste aller dessus sans vraiment comprendre, allez directement en bas de ce guide. Afin de clarifier la chose, ce qu'on appelle deepweb est une partie d'internet bien spécifique. Son nom, littéralement "web profond" vient du fait qu'il est nécessaire pour y accéder de passer par un navigateur spécifique, intégrant une technologie de chiffrage des données* et d'un algorithme de redirection des connexions spécial : Tor. Tor est un réseau internet (acronyme de The Onion Router) décentralisé qui permet une connexion (plutôt sécurisée) à des serveurs en passant auparavant par d'autres utilisateurs de ce réseau. Pour simplifier les choses, sur internet "normal" -dit le surfaceweb- votre navigateur se connecte directement sur un serveur hébergeant un site et réceptionne les informations de celui-ci (c'est en fait un peu plus complexe, il passe par le FAI, des serveurs DNS, des CDN, etc... Mais l'idée est là). Sur le deepweb, où plutôt sur le réseau Tor (ce qui revient à la même chose), votre navigateur va tout d'abord transiter par plusieurs dizaines d'autres navigateurs d'utilisateurs pour finalement arriver sur le site en question : le but étant d'anonymiser la connexion au serveur, puisque l'information sera relayée par plusieurs dizaines d'adresses IP (ce qui vous protège un peu). On appelle ce réseau "onion" (le O de Tor) grâce à l'image de plusieurs couches d'un oignon superposées. Couches par lesquelles vous transiterez à la fin de ce tutoriel si vous vous rendez sur le deepweb. Pour votre information, Tor est le nom de ce réseau internet permettant l'accès au deepweb, mais dans 90% des discussions lorsqu'on vous parlera du deepweb, Tor sera en fait Tor browser, le navigateur nécessaire pour se rendre sur le deepweb qui inclut les protocoles et les algorithmes correspondant. Si vous souhaitez vous renseigner sur les transistions des packet, je vous laisse consulter la page wikipédia lié à ces détails techniques. Également, les URL du deepweb sont chiffrées. Déjà, celles-ci finissent toutes en .onion, et le contenu du nom de domaine est une suite de caractère sans signification (et oui, c'est pas comme le surface web), vous aurez par exemple une adresse web du style : https://gfe45a98uj4o4lclsmq7h98r9sdg.onion. J'essaierais de dresser un petit annuaire par la suite, pour vous aider à démarrer la dedans. Enfin, une dernière chose de l'introduction, vous avez peut-être déjà entendu parler du fait que le deepweb est la partie cachée de l'iceberg, et qu'il représente 96% de l'internet. Ceci est évidemment faux, c'est un mythe. Le deepweb est une partie d'internet à part entière mais elle absolument minoritaire de part ses fréquentations et d'un point de vue technique. Commençons par ses fréquentations : le deepweb, vous l'aurez compris, n'est pas disponible dans le premier starbucks en centre-ville sur un iPad fournit pendant que vous dégusterez un jus de chaussette amer fait à base de graines de cacao moisies en container, obtenues en martyrisant des régions entières... Je m'emporte. Satanés hipsters. Bref, le deepweb est peu accessible, et d'après la loi de l'offre et de la demande : Peu d'offre = Peu de demande. Simplement. De plus, vous trouverez sans doute un annuaire des sites sur le hiddenwiki (retenez ce nom). Vous découvrirez vite que les sites dessus sont exponentiellement plus hardcore, si vous me passez l'expression, mais aussi exponentiellement moins nombreux. Ensuite, le point de vue technique : le deepweb est une infrastructure couteuse et complexe à mettre en place aux yeux de ce que demande une simple page au réseau (en terme de capacité). Les ressources financières nécessaires au réseau Tor sont les suivantes (sources wikipédia) : 60 % proviennent du gouvernement américain (soutien à la liberté d'expression et à la recherche scientifique) 18 % proviennent de fondations et autres donateurs (John S. and James L. Knight Foundation (en), SRI International, Google, Swedish International Development Cooperation Agency (en)) 18 % proviennent de la valorisation des contributions des bénévoles. Toujours par la même source, le réseau coûte 2 millions de dollar annuellement. En comparaison, internet (= le surfaceweb) est une économie coutant plusieurs milliards de dollar annuellement (mais oui, les gains sont plus élevés). Vous installerez difficilement un nœud de connexion Tor par vos soins sur un serveur mutualisé web, alors qu'un site normal peut l'être facilement. Pour information, ce mythe (à présent démystifié) provient d'un article datant de 2001 (13 ans actuellement), que vous pouvez consulter ici. A cette époque, la bulle internet venait d'exploser et tout le monde (surtout la finance, cf. la crise) spéculait sur cette nouvelle technologie. L'article parle donc du deepweb MAIS ajoute également dans la balance les bases de données des sites, donc pas accessibles au publique (normalement) ET les sites web (indexables ou non) qui n'ont pas été répertoriés par des moteurs de recherches. Vous comprendrez d'où vient ce mythe : un internet ancien et peu développé, sur lequel on compare les pages web accessibles contre les pages web non accessibles et les bases de données (l'article précise que certaines pèsent plusieurs centaines de GO, déjà en 2001). Voilà, vous avez eu une explication sur le fonctionnement du deepweb, assez sommaire ma foi mais je pense qu'elle suffira pour commencer. Si vous êtes curieux, internet sera toujours plus rigoureux que moi. Ah, et un dernier mythe : le deepweb n'est pas illégal, pas du tout. Visiter la majorité des sites et totalement légale, cependant l'achat sur certains sites ne l'est peut-être pas, par contre. 1 - Utilisation C'est dans cette partie que je vais vous expliquer comment accéder à ce réseau privé, qui malgré les croyances populaires est somme toute pas franchement compliqué d'accès. Avertissements nécessaires : Le deepweb a la réputation d'être inhumain et d'être l'antre des malades mentaux. Globalement c'est faux. La majorités de ce réseau est tout aussi normal que la société dans laquelle nous vivons, on y trouve même des forums comme Melinyel.net, donc ce n'est pas le cas. CEPENDANT : il existe bel et bien des sites DANGEREUX et malsains dont je ne souhaite pas encourager le partage. J'interdis donc le partage de liens sans m'avoir consulté au préalable, et j’interdis évidemment de poster les médias trouvés là-bas. 2 - Sur le deepweb, vous trouverez pleins de personnes différentes, et notamment des sites de piratages / hacking. Ces sites comportent souvent des virus pouvant s'installer directement sur votre PC par une simple visite, ça ressemble à un récit d'un kikoo qui ne s'y connait pas je vous le concède, et pourtant cela existe (je n'ai pas réussi à comprendre ce fonctionnement -le javascript n'est pas activé-). Donc protégez-vous malgré tout : je recommande fortement l'utilisation de Tor browser sur une machine virtuelle plutôt que directement sur votre système d'exploitation à nu. 3 - Faites attention où vous allez. Sans risquer quoique ce soit aux yeux de la loi ou pour la sécurité de votre ordinateur, certaines choses sur le deepweb sont marquantes et ne sont pas tout publique. Je vous considère donc comme prévenu. Donc voilà, maintenant que vous savez tout ça, vous êtes prêt pour vous rendre sur le deepweb. Commencez par télécharger la dernière version du logiciel Tor Brower : https://www.torproject.org/download/download-easy.html.en Téléchargez la version correspondante à votre système d'exploitation, installez-là Lancez Tor Browser, vous aurez une interface vous demandant le type de votre connexion comme spécifié ci-dessous, cliquez simplement sur "Se connecter" Voilà, vous arrivez sur la page principale du navigateur. Il ne vous reste qu'une seule chose à faire : cliquez sur le petit (S) en haut à gauche, et désactivez le JavaScript. C'est une mesure de sécurité et augmente le temps de chargement des pages web du deepweb, qui seraient incroyablement longues sinon. Voilà, votre aventure commence ici, je vous donne cette adresse, qui est l'adresse du hiddenwiki : l'annuaire du deepweb. Faites attention où vous irez. http://kpvz7ki2v5agwt35.onion/wiki/index.php/Main_Page * : L'algorithme de Tor a été mis à mal une seule fois, par un enseignement chercher d'une école française d'ingénieure française (en plus !) : ESIEA (source) Sources : Connaissance / expérience personnelle http://fr.wikipedia.org/wiki/Tor_(réseau) http://fr.wikipedia.org/wiki/Web_profond http://quod.lib.umich.edu/cgi/t/text/text-idx?c=jep;view=text;rgn=main;idno=3336451.0007.104 https://www.torproject.org/about/overview.html.en Ce guide / tutoriel touche à sa fin, si besoin je l'éditerais. Si vous avez des questions, n'hésitez pas !1 point
-
Une application windows phone que je viens de découvrir aujourd'hui est j'ai trouvé le gameplay assez bien. En faite il faut enfermer une ou plusieurs billes dans des clôtures en utilisant le maximum d'espace possible (c'est ce qui va valorisé le nombre d'étoile à la fin de la partie, exemple si j'ai utilisé 87% de l'espace comme dans la vidéo, j'obtiens 2 étoiles, si j'avais utiliser plus de 90%, j'aurai eu 3 étoiles). Vidéo Download (pour les wp)1 point
-
Cours de mathématiques de 1S Vous avez besoin d'aide en mathématiques ? Vous trouverez ici des cours de première série S pour vous aider en cas de besoin : Le Second Degré.zip : Un chapitre très important de première qui vous servira de nombreuses fois dans l'année et les années suivantes. Généralités sur les fonctions.zip : Un rappel sur les fonctions de référence et les fonctions associées. Géométrie vectorielle plane.zip : A la suite du cours sur les vecteurs de Seconde, la géométrie vectorielle plane vient compléter celui-ci avec de nouvelles notions. La suite arrivera au fur et à mesure que je scannerai mes cours.1 point
-
En général je donne pas une seule pièce aux démunis, pourquoi ? Quand je vois que la personne qui mendie a une veste en cuire, je me pose des questions ... La personne a les yeux rouge limite qui pleurent, c'est pas la peine. Des fois le mendiant et carrément entrain de fumer. Ou alors que j'ai déjà vu aussi, la personne démunit est mal polit et est limite provocante lorsqu'elle demande de l'argent. Á chaque fois il y a un de ces facteurs qui rentre en scène du coup, j'ai pas envie de l'aider. C'est bien de vouloir "sauver" en quelque sorte ces personnes mais si elles ne font aucun effort pour s'en sortir c'est pas la peine de les aider. Après on est pas obligé de leur donner de l'argent on peut aussi leurs donner des conseils, des moyens de gagner quelques sous... c'est tout aussi bien.1 point
-
Et voila la fin de la création d'un moteur physique ! Il ne nous restent plus qu'a détecter les collisions et les corriger, et le moteur est finit. :lol: Détection des collisions : La théorie : Pour que deux rectangles soit en collisions, il faut qu'ils se "rentrent" dedans. Pour cela, la distance (sur un seul axe pour l'instant) entre les deux points doit être inférieur à la somme de la moitié de leur largueur (dans le cas de l'axe x, la hauteur pour l'axe y). C'est pour cela que dans le précédent tuto ( lors de la création de corps, on ne gardait que la moitié de la largueur et de la hauteur. Ont peut ainsi tester chaque axe pour voir s'il y a une collision sur celui-ci. S'il n'y a une collision que sur un seul axe, alors l'objet n'est pas en collision avec l'autre, il est simplement à coté. Une magnifique image qui résume cela : La pratique : En code, on teste chaque axe l'un après l'autre. Si sur le premier axe il n'y a pas de collision, alors on a pas besoin de tester le deuxième. float mlb_abs(float number) { if (number < 0) { number *= -1; } return (number); } float penetration_x(t_body *f_body, t_body *s_body) { return (mlb_abs(f_body->box.x - s_body->box.x) - (f_body->box.w + s_body->box.w)); } float penetration_y(t_body *f_body, t_body *s_body) { return (mlb_abs(f_body->box.y - s_body->box.y) - (f_body->box.h + s_body->box.h)); } char is_collide(t_body *f_body, t_body *s_body) { if (penetration_x(f_body, s_body) <= 0. && penetration_y(f_body, s_body) <= 0.) { return (1); } return (0); } La fonction mlb_abs est strictement équivalente a abs() de math.h, mais à chaque fois que le moteur serait inclus dans un projet, il faudrait linker la biblio, et c'est pas pratique, donc créer la fonction est pour moi plus simple. Vous pouvez évidement la remplacer par celle de math.h si cela vous arrange. On calcule donc les collisions sur chaque axe, et la fonction renvoie 1 en cas de collision. Correction des collisions : Il faut tester tout les corps entre eux pour savoir s'il y a une collision. Je vous rappelle que deux corps statiques ne seront jamais en collisions, donc on ne vas pas les tester entre eux. void check_collision(t_physic_world *world) { t_body *update = world->dynamic_body; t_body *collide_with = world->static_body;; update = world->dynamic_body; while (update != NULL) { /*collide with static body*/ while (collide_with != NULL) { if (is_collide(update, collide_with)) { correct_collision(update, collide_with); } collide_with = collide_with->next; } /*collide with dynamic body*/ collide_with = update->next; while (collide_with != NULL) { if (is_collide(update, collide_with)) { correct_collision(update, collide_with); } collide_with = collide_with->next; } update = update->next; } } On teste d'abord les collisions avec les corps statiques, car cela permet d'éviter que le corps soit repoussé a travers un mur s'il est poussé par un corps dynamique, ce qu'il ne faut surtout pas. Et maintenant, il faut pouvoir corriger ces collisions une fois quelle sont détectées ! Tout d'abord, les corrections ne seront pas les mêmes en cas de collisions dynamique / statique que des collisions dynamique / dynamique. Les première collisions pousseront le corps dynamique hors du corps statique alors que les deuxième collisions, les deux corps se pousseront mutuellement, et celui avec la plus grande force l'emportera. Il faut d'abord dispatcher les corps dans les bonnes collisions : void correct_collision(t_body *f_body, t_body *s_body) { if (f_body->dynamic && !s_body->dynamic) { correct_static_collision(s_body, f_body); } else if (!f_body->dynamic && s_body->dynamic) { correct_static_collision(f_body, s_body); } else if (f_body->dynamic && s_body->dynamic) { correct_dynamic_collision(f_body, s_body); } } Normalement, les collisions entre corps statique et dynamique se font dans cette ordre dans la fonction, mais cela permet de tester les collisions entre un corps qui n'appartient pas a la structure physic_world avec ce que vous voulez, sans vous souciez de l'ordre dans lequel les corps doivent être mis. On va commencer avec les collisions avec des corps statiques : void correct_static_collision(t_body *static_body, t_body *dynamic_body) { if (penetration_x(static_body, dynamic_body) > penetration_y(static_body, dynamic_body)) { /*x axis penetration*/ float direction = dynamic_body->force.total_force.x / mlb_abs(dynamic_body->force.total_force.x); dynamic_body->box.x = static_body->box.x - (dynamic_body->box.w + static_body->box.w) * direction; add_contact_force(&(dynamic_body->force), -dynamic_body->force.total_force.x, static_body->force.contact_force.y); } else { /*y axis penetration*/ float direction = dynamic_body->force.total_force.y / mlb_abs(dynamic_body->force.total_force.y); dynamic_body->box.y = static_body->box.y - ((dynamic_body->box.h + static_body->box.h) * direction); add_contact_force(&(dynamic_body->force), static_body->force.contact_force.x, -dynamic_body->force.total_force.y); } } On corrige la collision en fonction de l'axe ou le corps est le moins en collision, afin de ne pas voir un corps se faire repousser violemment alors que l'on peut faire une chose moins visible. La fonction est simple : 1ere ligne ont calcule la direction de la collision, deuxième ligne, on la corrige, et troisième ligne, on met la force contraire de l'axe ou il y a eut la collisions dans le corps dynamique afin de l’empêcher de passer a travers. Mais pourquoi le faire, si on corrige simplement, il ne passera pas non plus non ? Ce qu'il faut savoir, c'est que le moteur physique ne peut pas être sur qu'il va être appelé suffisamment pour éviter l’effet "tunnel", le corps passe alors a travers alors qu'il aurait du y avoir une collisions. Si l'ont ajoute une force contraire mais de contact, elle ne disparaîtra que lorsque le moteur physique sera remis a jour, donc on pourra alors recorriger la collision. De plus on peut voir que dans l'axe ou il n'y a pas de colliisons, on rajoute un force. Mais qu'est ce que c'est ? C'est le méga truc de la mort qui tue du deuxième tuto ! Grâce a cela, on peut rajouter facilement des tapis roulant et des plate-formes mobiles, alors que sinon, dans les autres moteurs physique, ont doit tricher en rajoutant une force lorsque le personnage se trouve sur celui-ci. Evidemment, la force de contact n'est là que si vous l'ajouter, elle est de base à 0. Et maintenant, la correction la plus difficile : les collisions dynamiques / dynamiques dont voici la fonction : void correct_dynamic_collision(t_body *f_body, t_body *s_body) { t_force common_force; t_force total_force; float weight; if (penetration_x(f_body, s_body) > penetration_y(f_body, s_body)) { /*x axis penetration*/ /*calculate the total force for the total body and divise it*/ calc_total_force(&(f_body->force)); calc_total_force(&(s_body->force)); total_force.x = f_body->force.total_force.x; total_force.y = s_body->force.total_force.x; common_force.x = total_force.x + total_force.y; weight = f_body->weight + s_body->weight; common_force.y = common_force.x / weight * s_body->weight; common_force.x = common_force.x / weight * f_body->weight; add_contact_force(&(f_body->force), common_force.x - total_force.x, 0); add_contact_force(&(s_body->force), common_force.y - total_force.y, 0); /*correct collision*/ float average_x = (f_body->box.y * s_body->weight + s_body->box.y * f_body->weight) / weight; float direction = average_x - f_body->box.x; if (direction < 0) { direction = -1; } else { direction = 1; } f_body->box.x = average_x - (f_body->box.w * direction); s_body->box.x = average_x + (s_body->box.w * direction); } else { /*y axis penetration*/ /*calculate the total force for the total body and divise it*/ calc_total_force(&(f_body->force)); calc_total_force(&(s_body->force)); total_force.x = f_body->force.total_force.y; total_force.y = s_body->force.total_force.y; common_force.y = total_force.x + total_force.y; weight = f_body->weight + s_body->weight; common_force.x = common_force.y / weight * f_body->weight; common_force.y = common_force.y / weight * s_body->weight; add_contact_force(&(f_body->force), 0, common_force.x - total_force.x); add_contact_force(&(s_body->force), 0, common_force.y - total_force.y); /*correct collision*/ float average_y = (f_body->box.y * s_body->weight + s_body->box.y * f_body->weight) / weight; float direction = average_y - f_body->box.y; if (direction < 0) { direction = -1; } else { direction = 1; } f_body->box.y = average_y - (f_body->box.h * direction); s_body->box.y = average_y + (s_body->box.h * direction); } } Les fonctions sont exactement les mêmes sur les deux axes, il n'y a que des ajustement au niveau des axes a faire. La fonction marche comme cela : elle calcule les forces des deux corps, calcule la moyenne de l'endroit de leur collisions en fonctions de la force de l'autre corps (car plus un corps aura de force, moins il devra être bougé car c'est lui le plus fort). On transfère les forces dans les deux corps afin qu'ils aient la même vitesse en sortie, le tout dans des forces de contact, cela permet de faire des caisses que l'ont pourra pousser ! Et ont corrige a la fin la collision, et c'est bon. Malgré que la fonction soit longue, elle reste relativement simple. Et voila, le moteur physique est fini ! J'espère qu'il vous aura plus, et que vous vous en servirez1 point
