Execute News

Des nouvelles fraîches de http://www.execute.frRSS « Avant | Après » | [3DEngine] [ARC] [Astuces] [Banque] [BugList] [Compression] [Delphi] [Expérience] [Features] [Firemonkey] [Games] [GDI+] [Github] [Hardware] [Kylix] [LF2016] [MAPI] [NF525] [OpenGL] [PHP] [Samsung] [Société]

Mais que fait nVidia avec des Go ?

Publié le 09/06/2018 [Hardware]
Je ne sais pas si vous avez déjà remarqué, mais si vous avez un ordinateur doté d'une carte nVidia (GTX 660M dans mon cas), les répertoires "nVidia" peuvent prendre plusieurs giga octets de disque !

Quand j'ai commencé l'informatique sous DOS, la gestion des cartes graphiques se faisait dans l'application...c'est avec Windows (et autres OS graphiques) que sont venus les drivers. Au départ quelque Ko suffisaient pour rendre le hardware exotique d'une nouvelle carte graphique compatible avec les fonctionnalités de l'OS. Certes les API ont grandement évoluées, mais je continue à me demander ce qui peut prendre plusieurs Go pour au final gérer une carte graphique...

Mais l'objet de ce billet n'est pas simplement de me plaindre de l'espace disque occupé; en effet, dernièrement je testais une démo fort sympathique - en partant de Tesseract.gg, je suis tombé sur le site de Lee Salzman et sa démo "Light Propagation Volumes" - lpv.exe qui tournait donc à 200fps sur la carte Intel de mon portable et seulement 60fps sur la GeForce ?!

Je me suis dit qu'il devait y avoir un problème, je commande donc par lancer "GeForce Experience" pour obtenir une mise à jour qui a planté mon PC (écran bleu, qui devient rare tout de même sous Windows)...j'ai donc supprimé le driver nVidia, téléchargé la dernière version et tenté de l'installer...sauf que là, le driver officiel de nVidia me dit que je ne possède pas la carte en question ! Aïe, moment de panique, ma carte aurait-elle cramé juste au moment ou je retire son pilote ?! Ce serait tout de même une étrange coïncidence...mais la carte n'était pas même visible dans le gestionnaire de matériel de Windows.

Après quelques recherches, je tombe alors sur DDU (Display Driver Uninstaller), je tente le coup, il me nettoie tout, mon PC redémarre et oh surprise, le gestionnaire de matériel m'affiche une carte graphique non reconnue...je lance le setup de nVidia qui est tout content de retrouver ma carte (et moi donc) !

Et les FPS ? toujours 60...sauf que maintenant que j'ai un panneau de contrôle nVidia qui fonctionne à nouveau, j'ai un curseur entre performance et qualité, au max de qualité je suis à 60fps, au max de performance je suis à 450fps :D

Ce n'est pas un peu dommage monsieur nVidia de devoir utiliser un logiciel externe pour gérer correctement le driver de votre carte graphique ?

J'adore quand un plan se déroule sans accroc !

Publié le 06/06/2018 [Delphi] [Expérience]
Depuis fort longtemps je bosse sur des base MySQL, notamment car elles sont disponibles chez OVH.

Depuis quelques années je bosse sur des bases Firebird avec Delphi, et bien il n'y a pas à dire...quand j'ai un problème de performance sur une requête SQL sous MySQL, je cherche les index en cause, je crée ceux qui manquent et hop c'est rapide ! Quand j'ai ce même problème sous Firebird, je cherche les index en cause, je crée les index et j'ai toujours un problème de performance :(

Alors c'est sans doute mon code, ma requête ou mes index qui sont inappropriés, mais n'empêche que c'est hyper frustrant !

Petite fonction de cryptage sous Windows

Publié le 06/06/2018 [Delphi]
On a toujours besoin d'une petite fonction de cryptage rapide pour sauvegarder une mot de passe ou autre...voici une petite unité sous Windows qui répond à ce besoin.

unit Execute.Win.CryptString;

{
  (c)2018 Execute SARL 
}

interface

uses
  Winapi.Windows,
  System.SysUtils;

function CryptString(const Str: string): TBytes;
function DecryptString(const Data: TBytes): string;

implementation

type
  DATA_BLOB = record
    cbData :DWORD;
    pbData :PAnsiChar; // PBYTE but PAnsiChar is better for debug purpose
  end;
  PDATA_BLOB = ^DATA_BLOB;

function CryptProtectData(
  var pDataIn         : DATA_BLOB;
      ppszDataDescr   : PChar;
      pOptionalEntropy: PDATA_BLOB;
      pvReserved      : Integer;
      pPromptStruct   : Pointer; // PCRYPTPROTECT_PROMPTSTRUCT;
      dwFlags         : DWORD;
  var pDataOut        : DATA_BLOB
): BOOL; stdcall; external 'crypt32.dll';

function CryptUnprotectData(
  var pDataIn         : DATA_BLOB;
      ppszDataDescr   : PPChar;
      pOptionalEntropy: PDATA_BLOB;
      pvReserved      : Integer;
      pPromptStruct   : Pointer; // PCRYPTPROTECT_PROMPTSTRUCT;
      dwFlags         : DWORD;
  var pDataOut        : DATA_BLOB
): BOOL; stdcall; external 'crypt32.dll';

function CryptString(const Str: string): TBytes;
var
  DataIn  : DATA_BLOB;
  DataOut : DATA_BLOB;
begin
  if Str = '' then
    Exit(nil);

  DataIn.cbData := Length(Str) * SizeOf(Char);
  DataIn.pbData := Pointer(Str);

  if CryptProtectData(DataIn, 'Execute.Win.CryptString', nil, 0, nil, 0, DataOut) = False then
    RaiseLastOSError;

  SetLength(Result, DataOut.cbData);
  Move(DataOut.pbData^, Result[0], DataOut.cbData);
  LocalFree(NativeUInt(DataOut.pbData));
end;

function DecryptString(const Data: TBytes): string;
var
  DataIn  : DATA_BLOB;
  DataOut : DATA_BLOB;
begin
  if Data = nil then
    Exit('');

  DataIn.cbData := Length(Data);
  DataIn.pbData := Pointer(Data);

  if CryptUnprotectData(DataIn, nil, nil, 0, nil, 0, DataOut) = False then
    RaiseLastOSError;

  SetLength(Result, DataOut.cbData div SizeOf(Char));
  Move(DataOut.pbData^, Pointer(Result)^, DataOut.cbData);
  LocalFree(NativeUInt(DataOut.pbData));
end;

end.

TFormatSettings Windows 7 et un suisse sont dans un bateau

Publié le 01/06/2018 [Delphi] [BugList]
Bonjour,

Un petite info sur un bug Delphi référencé par Olivier sur lequel je suis tombé (le bug, pas Olivier).

J'ai une appli développée sous Delphi XE3 dans une machine virtuelle Windows 7 qui a été déployée chez des suisses sous Windows 10...et là grosse blague, les suisses utilisent le point comme séparateur de date et non le slash...vu que le code n'y prenait garde je n'étais pas étonné que ça ne marche pas, mais quand j'ai basculé la préférences locales de ma machine en Suisse, mon appli continuait à utiliser des slash...car, en effet il y a un bug dans Delphi qui fait que ça ne fonctionne pas sous Windows 7.

Bon à savoir !

Du plaisirs de faire un backup au bon moment

Publié le 01/03/2018
Ah combien de fois ai-je pu regretter de ne pas avoir fait un backup assez souvent...et voilà que ce matin, je Shift+Delete un fichier qui ...oh non ! c'est le répertoire qui était sélectionné ! 500 fichiers au moins ont disparus !

Mais non ! pas de panique, j'ai fait un backup complet de ma machine pas plus tard que cette nuit, et il a parfaitement fonctionné. Jouissif :)