Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

168 commentaire(s) de ManChesTer sur des sources sur tout CodeS-SourceS

Le : 12/09/2006 17:09:48
Source : REPRÉSENTATION D'UNE SPHÈRE EN 3D (FLAT SHADING)
BruNews,

Biensur certains compilateus permette une "bonne" obtimisation mais aucun ne vaudra jamais la maitrise des cycles machines que tu à en asm.

Certains compilateurs actuels sont memes "contre-performant", malheureusement, il n'y a pas que des bons compilos qui existent....

Mais je suis d'accord avec toi la plupart des compilos c permettent de généré un code assez obtimisé, mais il faut etre réaliste ce n'est pas le cas de tous les compilos (regarde le code que génere le compilo vb par exemple)....

Nasman,

Tu a raison les fonctions graphiques sont souvent "définies" dans des langages de haut nivau.

Prenons l'exemple de OpenGl que je connais bien, c'est bien une "boite noire" pour toi, bien que la doc détaillée du standard OpenGl se trouve sur le net et est accesible à tous mais peux de développeurs vont faire l'effort de lire les docs à se sujet, surtout qu'elle est énorme et tres réberbative.

Le principe de opengl:

le "cpu" de la carte graphique contiend des fonction opengl en interne, c'est du code 100% assembleur qui est traduit sous forme de shéma électronique et inclus dans la "partie opengl" de la puce de la carte graphique.

Ce systeme est donc hyper rapide, bien plus que nimporte quel code asm que tu pourrais pondre sur ton pc à cause notament des vitesses de transfert ram pc=>vidéo=>ram pc et de la vitesse des puces qui utilisnt des shemas "figés ou semi figés" et donc baucoups plus rapides que le code interpreté par un cpu.

Le développeur moyen utilise en fait une librairie qui définit et traduit les appels et les dialogues entre le langage dans lequel il développe et les fonctions internes de la puce.

Normalement ce code ne sert qu'au transfert de commandes et ne contiend aucune routines "low-level" puisque celles ci sont dans la puce de la carte écran.

Dans les faits les librairies contennent du code "low-level" pour garantir la compatibilité opengl de certaines cartes graphiques "non compatibles" ou ne respectant pas la norme opengl.

On parle dans ce cas d'une émulation opengl. Elle n'existe en réalité que pour garantir la compatibilité de l'application.

Il faut aussi savoir que des libs opengl existent en assembleur.

Dans tous les cas c'est au développeur de choisir la "boite noire" qu'il veut utiliser (opengl, directx &co, mmx et autres de plus haut nivau mais souvent portables et donc moins performants).

Bon Coding...

ManChesTer.


Le : 11/09/2006 16:07:26
Source : REPRÉSENTATION D'UNE SPHÈRE EN 3D (FLAT SHADING)
Nasman,

Je salue ton source qui est tres didactique.

Cependant il ne faut pas oublier que des outils permettent de réalisé ce genre d'objects 3d (opengl & directx) et de gerer les effets, déformations etc... Il est conseiller de les utiliser car ces outils garantissent une compatibilité à long teme et facilitent grandement le développement et les mise à jour.

Pour un dévelopement "pro", il est donc important d'utiliser un outil de ce type.

D'autre part ces outils sont fortement étudiés et obtimisés.
Certaines librairies permettent meme une compatibilité entre différents os/cpu.

Quand à l'utilisation d'une instruction "obsolete", pas de tracas, intel garantit la compatibilité dessandante des instructions.

Il est clair que l'instruction en question n'est pas obtimisée mais le but du source n'est-il pas didactique ?

D'autre part c'est bien plus obtimisé que le code généré par la majorité des compilateurs c, pascal ou autres....

Donc bravo pour ton source et continue sur cette voie qui me semble intéressante ;)

Bon Coding...

ManChesTer.


Le : 02/02/2006 15:33:34
Source : FAIRE SCROLLER VERTICALEMENT UN MÉMO
Biensur YvesSimon, c'est possible.

Ici le but du défilement est d'etre fluide, ce qui n'est pas le cas si on envoie les message windows, d'ou l'utilité de cette source....

Bon Coding....

ManChesTer.


Le : 31/01/2006 17:18:40
Source : FAIRE SCROLLER VERTICALEMENT UN MÉMO
YVESSIMON,

Pour ce genre de questions, je te conseille plutot le forum, tu auras plus de chance d'obtenir une réponce.....

Les commantaires des sources sont la pour faire des commentaires, pas pour poser des questions qui n'ont pas de rapport dirrect avec le source.

Bon Coding....

ManChesTer.


Le : 18/01/2006 18:48:46
Source : SAUVEGARDE DES PARAMETRES DE VOTRE APPLICATION
Tu peux faire :

procedure RestaureParametres;
begin
    // On crée l'objet
with TRegistre.Create do
begin
  Try
   LireCle( 'CheckCle',    CheckBox1 );
   LireCle( 'EditCle',     Edit1 );
   LireCle( 'ComboCle',     ComboBox1 );
   LireListe( REG_KEY_LISTBOX,      ListBox1 );
   LireListe( REG_KEY_CHECKLISTBOX, CheckListBox1 );
  finally
   Free;
  end;
end;
end;

Idem un peut partout...

Bon Coding....

ManChesTer.


Le : 21/10/2005 00:42:38
Source : GRAVITATION
Voici un "truc" pour faire une gravitation plus ou moins réaliste

faire un form mettre un bouton dessus copier le code.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

Type TGraviteAnim = class(TThread) // Un thread pour l'anim
     Private
      DestHdc : HDC;
      Image   : Tbitmap;
      Px      : Integer;
      Py      : Integer;
      Force   : Integer;
      Xmax    : Integer;
      Ymax    : Integer;
      Dw      : Integer;
      Dh      : Integer;
      Procedure DrawBouncingBall;
     Public
      Procedure Execute;Override;
     end;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button1Click(Sender: TObject);
  private
   MonAnim : TGraviteAnim;
  public
  end;


var
  Form1: TForm1;

implementation

{$R *.dfm}
var xd : boolean=True;
    yd : Boolean=False;
Function Gravite(var x,y:Integer;f,Xm,Ym:Integer):Integer;
var pax,pay:Real;
begin
pax:=((x+1)/(xm/F))/2;
pay:=((y+1)/(ym/F))/2;

if (pax<1) and (not(xd)) then
begin
  xd:=true;
end
else
if (x>Xm-10) and (xd) then
begin
  x:=Xm-10;
  xd:=false;
end;

if (pay<1) and (not(yd)) then
begin
  yd:=True;
end
else
if y>ym-10 then
begin
  y:=ym-10;
  yd:=False;
end;

if xd then
  X:=round(x+pax)
else
  X:=round(x-pax);
if yd then
  y:=round(y+pay)
else
  y:=round(y-pay);
end;

Procedure TGraviteAnim.DrawBouncingBall;
begin
  Image.Width:=dw;
  Image.Height:=dh;
  Image.Canvas.FillRect(Rect(0,0,dw,dh));
  Ellipse(image.Canvas.Handle,px,py,px+10,py+10);
  BitBlt(form1.Canvas.Handle,0,0,dw,dh,Image.Canvas.Handle,0,0,SRCCOPY);
end;

Procedure TGraviteAnim.Execute;
begin
Image:=Tbitmap.Create;
While not terminated do
begin
  Gravite(px,py,Force,Xmax,Ymax);
  Synchronize(DrawBouncingBall);
  sleep(15);
end;
Image.Free;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
MonAnim.Terminate;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if not assigned(MonAnim) then
MonAnim:=TGraviteAnim.Create(True);
  MonAnim.px:=20;
  MonAnim.py:=height;
  MonAnim.Force:=50;
  MonAnim.XMax:=Width;
  MonAnim.YMax:=Height;
  MonAnim.DestHdc:=getdc(Handle);
  MonAnim.Dw:=Width;
  MonAnim.Dh:=Height;
  MonAnim.Resume;
end;

end.

Bon Coding....

ManChesTer.


Le : 03/10/2005 01:56:14
Source : FLAMMES VERSION 2
je sais, je suis un "chipotteur" mais bon....

dans le feux il y a aussi du bleu, puis pour rester dans l'esprit du livre il faut obtimiser donc voici la palette "Made in Manchi", lol

procedure GenPalette;
var
i:integer;
begin
getmem(Mypalette,(256 shl 3)+sizeof(Tlogpalette));
fillchar(Mypalette^,(256 shl 3)+sizeof(Tlogpalette),0);
with Mypalette^ do
begin
palVersion:=$300;
palNumEntries:=256;
for i:=0 to 7 do
begin
             palPalEntry[i].peBlue:=i shl 3;
             palPalEntry[i+8].peBlue:=64-(i shl 3);
             palPalEntry[i+8].peRed:=i*255 div 23;
             palPalEntry[i+16].peRed:=(i+8)*255 div 23;
             palPalEntry[i+24].peRed:=(i+16)*255 div 23;
             palPalEntry[i+32]:=MyRGB(255,i*255 div 23,0);
             palPalEntry[i+40]:=MyRGB(255,(i+8)*255 div 23,0);
             palPalEntry[i+48]:=MyRGB(255,(i+16)*255 div 23,0);
             palPalEntry[i+56]:=MyRGB(255,255,i*255 div 23);
             palPalEntry[i+64]:=MyRGB(255,255,(i+8)*255 div 23);
             palPalEntry[i+72]:=MyRGB(255,255,(i+16)*255 div 23);
             palPalEntry[i+80]:=MyRGB(255,255,255);
             palPalEntry[i+88]:=MyRGB(255,255,255);
             palPalEntry[i+96]:=MyRGB(255,255,255);
             palPalEntry[i+104]:=MyRGB(0,0,255);
             palPalEntry[i+112]:=MyRGB(0,0,240);
             palPalEntry[i+120]:=MyRGB(0,0,225);
             palPalEntry[i+128]:=MyRGB(0,0,210);
             palPalEntry[i+136]:=MyRGB(0,0,195);
             palPalEntry[i+144]:=MyRGB(0,0,180);
             palPalEntry[i+152]:=MyRGB(0,0,165);
             palPalEntry[i+160]:=MyRGB(0,0,150);
             palPalEntry[i+168]:=MyRGB(0,0,135);
             palPalEntry[i+176]:=MyRGB(0,0,120);
             palPalEntry[i+184]:=MyRGB(0,0,105);
             palPalEntry[i+196]:=MyRGB(0,0,90);
             palPalEntry[i+204]:=MyRGB(0,0,75);
             palPalEntry[i+212]:=MyRGB(0,0,60);
             palPalEntry[i+220]:=MyRGB(0,0,45);
             palPalEntry[i+228]:=MyRGB(0,0,20);
             palPalEntry[i+236]:=MyRGB(0,0,5);
             palPalEntry[i+244]:=MyRGB(0,0,0);
            end;

end;

end;

Bon Coding....

ManChesTer.


Le : 28/07/2005 12:55:11
Source : UN KEYGEN EN LOSING BYTE UNE ALTERNATIVE A MD5
"il faut le tester. Et c'est là qu'il faut de l'information..."

Le source ce n'est pas une inforation ?

Moi, il me semble que c'est la plus importante, pour moi, le coder qui ne pige pas cet algo, n'est pas capable de le maitrisé et donc ne doit pas jouer avec.

D'autre part, j'ai pondu cet algo en 1989 et cette technique et ses dérivée est utilisée depuis 1992 par une sociètè spècialisèe en sècuritè informatique, jusque ici, aucun de leurs clients ne s'est plaint d'une quelconque infiabilité de cette routine.

La seule chose que j'ai changé à mon algo, c'est juste de le traduire de l'assembleur en delphi et de passer du 16bits au 32bits.

Mais bon, pour le tester , tu a le source, tu à un pass à retrouvé ('m1db-OcTg-yI2i-2wih'), fais le (en C++ c'est mieux, mptdr)!

D'autre part, je ne suis pas le seul a dire que md5 est Hackable et hacké, si tu avais pris la peine de lire le forum dont je donne l'adresse si dessus tu le saurais, mais peut etre ne comprenons nous pas le meme anglais ?, pourtant l'exemple des tables est frappant et permet de reduire le nombre de "tests" en bruteforce, ce qui rend justement md5 infaible pour les mot de passe...

Bon Coding....

ManChesTer


Le : 27/07/2005 19:44:57
Source : UN KEYGEN EN LOSING BYTE UNE ALTERNATIVE A MD5
Arf j'oubiais...

Depuis quand les clef de win xp par exemple sont en hexa, t'a jamais enregisté ton xp ?

Bon Coding...

ManChesTer.


Le : 27/07/2005 19:39:49
Source : UN KEYGEN EN LOSING BYTE UNE ALTERNATIVE A MD5
Cher grandvizir,

Puisque la sécurité d'un algo viens de sa complexité, et de sa documentation (enfin c'est ce que tu dit), tu vas sans peine nous retrouver le mot de passe qui correspond à la clé 'm1db-OcTg-yI2i-2wih' comme je le propose dans le code et comme tu le propose si bien dans ta phrase "un bruteforce C++ pulvériserait des records de vitesse au niveau de la tentative de décodage" bien que je n'ai pas compris pour quoi en c++ et pas en Asm, m'enfin c'est que je dois etre con.

Il faut savoir que md5 est craké depuis quelques temps, mais ca tu le savais déja en grand pro du sujet, evidament...

voir sur ton forumpréféré :

http://www.governmentsecurity.org/forum/index.php?showtopic=10777

Je ne préténd pas que se code est plus inviolable que md5 mais, que comme tous le monde utilise md5 pour le stockage de mot de passe, il me semblais interessant pour la sécurité de publier une mèthode aussi fiable, bien plus simple, et surtout modifiable et compréhensible par tout programmeur un peux "intelligent", qui si il le désire peut facilement ajouter les xor &co bien que je n'en vois pas l'utilité.

La raison pour laquelle l'algo proposé ici est sécure est simplement du au fait que la clef ne reflete pas le mot de passe, on perd des infos au passage d'ou le "losing bytes", donc retrouver le pass depuis la clef est vraiment hard. Enfin on attend quand meme ta solution.

Bon Coding....

ManChesTer.



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,218 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.