Օրական պահոցներ՝ 16 Հունիսի, 2025

Անդրանիկ Վարդանեան

16 Հունիսի, 2025

Մի քանի օր առաջ երբ որոշեցի BSides֊ի համար գրել events2ics ծրագիրը, հասկացայ որ մենք չունենք լոգ անելու գրադարան Օբերոնի համար։

Այդ պատճառով էլ գրեցի Logger գրադարանը։ մօտաւորապէս էս տեսքն ունի օգտագործելուց՝

MODULE LoggerTest;
  IMPORT Logger;
VAR log: Logger.Logger;
BEGIN
  log := Logger.New();

  log.SetLevel(Logger.DEBUG);
  log.Info("Program initialized");
  log.InfoInt("The answer to life, the universe, and everything: ", 42);

  log.SetPrefix("Web Server");
  log.Warn("Web Server is loading slowly");
  log.WarnInt("Current threads: ", 4)
END LoggerTest.

Բայց երբ վերջացրեցի Logger֊ը գրել, հասկացայ որ նաեւ չունենք Semantic Versioning֊ի գրադարան Օբերոնի համար։ Սա իրականում պէտք էր որ կարողանամ Վիշապ Օբերոնի գրադարանների համակարգը՝ Vipak֊ը աւելի լաւ օգտագործել։

Նաեւ գրեցի SemVer գրադարանը, որը այս պահին կարողանում ա միայն Parse անել, այսպէս՝

MODULE SemVerExample;
  IMPORT SemVer, Out;
VAR
  v: SemVer.Version;
  ok: BOOLEAN;
BEGIN
  SemVer.Parse("1.2.3-alpha.1+build.5", v, ok);
  IF ok THEN
    Out.String("major="); Out.Int(v.Major, 1); Out.String("; ");
    Out.String("minor="); Out.Int(v.Minor, 1); Out.String("; ");
    Out.String("patch="); Out.Int(v.Patch, 1); Out.String("; ");
    Out.String("preRelease="); Out.String(v.PreRelease); Out.String("; ");
    Out.String("build="); Out.String(v.Build); Out.String(";");
    Out.Ln;
  ELSE
    Out.String("Invalid version string."); Out.Ln;
  END;
END SemVerExample.
 $ voc ../src/SemVer.Mod -s SemVerExample.Mod -m 2>/dev/null && ./SemVerExample
../src/SemVer.Mod  Compiling SemVer.  New symbol file.  5302 chars.
SemVerExample.Mod  Compiling SemVerExample.  Main program.  1204 chars.
major=1; minor=2; patch=3; preRelease=alpha.1; build=build.5;

Բայց այլ բաներ էլ են պէտք, օրինակ Compare, Match, եւ այլն։ Մտածում եմ երեւի արժի Հաքերսփեյսի ժամանակ մարդիկ աշխատեն դրա վրայ, համ էլ լաւ ուսումնական մօտեցում կը լինի քանի որ հիմնականում ալգորիթմներ պէտք է գրել։

Էլ ի՞նչ գրադարան արժի գրել։