Opt-In Software Blog

Websites Loader 1.21

by Vitaly, Monday, December 16th, 2019

Version 1.21 of the Websites Loader 1.21 released.

What’s New

Replace Rules has been added. Replace rule applies to HTML content and allows, for example, replace one domain by another.

Each rule consist of the pattern, which is regular expression, and the replacement value. Matching text will be replaced with the replacement value.

Replacement value can contain references to matching groups. Example:

Pattern: (https?://)?(localhost/)
Replacement value: $2
Subject: http://localhost/aaa
Result: localhost/aaa

Tags: load, Regular Expression, website

Opt-In List Manager 1.3.95

by Vitaly, Thursday, December 12th, 2019

Version 1.3.95 of the Opt-In List Manager has been released.

What’s New

Extracting emails from the various sources has been improved. Now it can extract emails from:

  • Archive files. Supported formats (file extensions): ZIP, JAR, EXE (self-extracted archives), TAR, GZ, TGZ, CAB, BZ2, TBZ.
  • XLSX files (Microsoft Excel Open XML Format Spreadsheet).
  • XLS files (Excel 97/2003).

oilm-archive-processing

Tags: Archive, GZIP, TAR, XLS, XLSX, ZIP

MaxMind DB Reader for Delphi

by Vitaly, Friday, October 25th, 2019

The MaxMind DB file format is a database format that maps IPv4 and IPv6 addresses to data records using an efficient binary search tree.

MaxMind provides variety APIs for lookup IP information in their database: for C, C#, Go, Java. But, unfortunately, API for Delphi is missed. MMDB Reader project solves this omission.

Tags: Delphi, Geo IP, IP, MaxMind, MMDB, Reader

Double-asterisk

by Vitaly, Friday, September 21st, 2018

New versions of Copy Manager and ZIP Manager support the double asterisks in source patterns.

The double asterisk (**) followed by backslash (\) will cause to recursive inclusion of files from all subdirectories.

Example. Directory structure:

path\f1\
path\f1\a1\
path\e2\
path\e2\a1\
path\e2\b2\

Pattern path\*\*.txt matches *.txt files in subdiretories path\f1\ and path\e2\ (but NOT in path\, path\f1\a1, path\e2\a1\, path\e2\b2\).

Pattern path\**\*.txt matches *.txt files in path\ and in all subdirectories (path\f1\, path\f1\a1\, path\e2\, etc.).

Pattern path\f**\*.txt matches *.txt files in all subdirectories of path\ starting with f: path\f1\, path\f1\a1\ (but NOT in path\, path\e2\, etc.).

Pattern path\**\a1\*.txt matches *.txt files in path\f1\a1\ and path\e2\a1\.

Tags: Double-asterisk

RegExp List Generator

by Vitaly, Wednesday, December 21st, 2016

RegExp List Generator 1.16 has been released.

What’s New

1. New option: “Don’t output Columns that start with @”.

This option is useful for generate values that are used in several columns.
For example, if you want to generate the user name as a combination of the first name, last name, or initials, you can do that this way:

Columns:

@FI=[A-Z]
FirstName=%%=@FI%%[a-z]{5,12}
@LI=[A-Z]
LastName=%%=@LI%%[a-z]{5,15}
Username=(%%=@FI%%|%%=FirstName%%)[._-]?(%%=@LI%%|%%=LastName%%)

Example of the Output:

FirstName,LastName,Username
Bpeeahda,Gbkdtl,B_G
Hnnbov,Hocadrtjzyx,HnnbovHocadrtjzyx
Hojbxuinx,Okalcywmpxsczwjn,H-Okalcywmpxsczwjn
Pfrezeezto,Vkkagdqnobo,P.V
Dkncdbdkiatl,Uwcicfbo,DkncdbdkiatlUwcicfbo
Mkqyehiqxgdwp,Hqbbuaf,Mkqyehiqxgdwp-H
Buefvilfxyjyr,Uybtxynfiha,Buefvilfxyjyr-Uybtxynfiha
Amlbvlak,Jgmyurg,AmlbvlakJ
Moxmemuh,Abbmpfwkpg,M_A

2. Generate SQL Insert Statements.

Example of the generated SQL Insert Statements:

INSERT INTO "schema1"."table1" ("FirstName","LastName","Username") VALUES ('Xjbusbgffhgo','Zyzcmng','XZ');
INSERT INTO "schema1"."table1" ("FirstName","LastName","Username") VALUES ('Bcgdhbxsdxgnd','Kvcxgkrkbzg','Bcgdhbxsdxgnd.Kvcxgkrkbzg');
INSERT INTO "schema1"."table1" ("FirstName","LastName","Username") VALUES ('Umklpw','Crpehsl','UCrpehsl');
INSERT INTO "schema1"."table1" ("FirstName","LastName","Username") VALUES ('Subcwhyx','Gxjkfyrcc','Subcwhyx_Gxjkfyrcc');
INSERT INTO "schema1"."table1" ("FirstName","LastName","Username") VALUES ('Symupexprzm','Sossuifnbgieighh','SymupexprzmS');

3. Save, Load or Delete stored Columns

Tags: SQL