6 mois jour pour jour que j’ai acheté ma cigarette électronique et que je n’ai pas fumé de cigarette. Petit bilan perso, technique, moral, avantages, inconvénients…
Continuer la lecture
Archives mensuelles : décembre 2013
Byzanz – Créer un GIF animé de votre bureau
À mi-chemin entre capture d’écran et screencast byzanz
permet de démontrer très facilement une fonctionnalité ou un bug avec un fichier léger, visible sur n’importe quel système (via le navigateur par exemple).
Continuer la lecture
Stop aux idées fausses
ATD Quart Monde rétablit quelques vérités sur la pauvreté et les minima sociaux.
Google : big brother n’était qu’un prototype
Ça fait des mois, des années qu’on vous le dit, Google ne vous veut pas du bien, Google vous espionne, Google est un danger pour votre vie privée, pour celle de vos proches, amis, contacts, collègues, etc. Et plus on laisse faire, plus c’est difficile d’effacer ses traces (c’est même à peu près impossible).
L’idée est donc de recenser sur cette page (qui je mettrai à jour au fur et à mesure de mes découvertes) :
- ce que Google sait de vous (de cette façon, ce sera plus concret)
- comment continuer à vivre normalement (connecté au monde) en utilisant des services alternatifs.
Ce que Google sait de vous
Services alternatifs
- Baïkal
Migration de NexusDB à PostgreSQL avec pgDAC
Ce projet est énorme : il vise à remplacer NexusDB par PostgreSQL dans toutes mes applications (déployées en clientèle) en utilisant les composants pgDAC (qui sont fabuleux). Je recense ici toutes les astuces, trucs à ne pas oublier, etc.
TPgConnection
Ne pas oublier de définir :
Options / UseUnicode = True
Conversion des données
Conversion des DDL (définitions des tables)
Je joue la simplicité : j’ai acquis, il y a quelques années, Database Workbench qui permet de faire Extract DDL
et récupérer ainsi les définitions de toutes les tables. Reste à convertir certains types de données :
+-------------+--------------------+
| Type Nexus | Type PostgreSQL |
+-------------+--------------------+
| AutoInc | Serial primary key |
| ShortString | VarChar |
| DWord | Int |
+-------------+--------------------+
Conversion des données
J’utilise le composant TCRBatchMove
(dans l’onglet Data Access
). Je définis 2 tables, nxMigration reliée à la nxDatabase, l’autre pour pgMigration reliée à la PGConnection.
Dans CRBatchMove1, la source est la table NXmigration, la destination est PGmigration. Attention à définir FieldMappingsMode
à mmFieldName
au cas où l’ordre ne serait pas rigoureusement le même.
Puis le code suivant pour transférer les données :
procedure TFmain.Button1Click(Sender: TObject);
var sl:TStringList;
i: Integer;
begin
sl:=TStringList.Create;
Try
DM.dbclefs.GetTableNames(sl);
for i := 0 to sl.Count - 1 do begin
DM.nxMigration.TableName:=sl[i];
DM.pgMigration.TableName:=sl[i];
DM.CRBatchMove1.Execute;
end;
ShowMessage('Done !');
Finally
sl.free;
End;
end;
À peaufiner un peu pour mettre à jour les séquences :
alter sequence clilog_id_seq restart with 81;
Accélérer Locate
pgQuery.IndexFieldNames:='champ1;champ2';
Réparer la complétion dans Delphi
Initialement publié sur StackOverflow
Vérifier que la ligne DCCUnitAlias ne manque pas dans le fichier .dproj du projet :
<PropertyGroup Condition="'$(Base)'!=''">
<DCC_DependencyCheckOutputName>aida.exe</DCC_DependencyCheckOutputName>
<DCC_UnitAlias>WinTypes=Windows;WinProcs=Windows;$(DCC_UnitAlias)</DCC_UnitAlias>
</PropertyGroup>
Si vous ne la voyez pas, faites une sauvegarde du fichier .dproj
et ajoutez la ligne manquante au bon endroit : <PropertyGroup Condition="'$(Base)'!=''">