XEROF

 

xlsgen 4.9.0.17 : Fix pack for XLSB files


Build 4.9.0.17 of xlsgen is a fix pack for issues related to XLSB files.

- under certain circumstances, array formulas were not written correctly and would corrupt the Excel file (XLSB).

- incorrect external reference index when reading from a XLSB file and converting to a XLSX file

- generation of external reference cache when converting a XLSX file to a XLSB file

- internal formula building for a number of conditional formattings when converting a XLSB file to a XLSX file

Posted on 29-October-2021 13:00 | Category: xlsgen, Excel generator | comment[0] | trackback[0]

 

xlsgen 4.9.0.16 : Other Lambda functions


Build 4.9.0.16 adds all other lambda functions introduced in Office 365 (reminder : xlsgen supports them, and they are not available in any installable Excel version other than the one associated to an Office 365 subscription).

BYROW()Applies a Lambda function to each row and returns an array of the results. For example, if the original array is 3 columns by 2 rows, the returned array is 1 column by 2 rows.
BYCOL()Applies a Lambda function to each column and returns an array of the results. For example, if the original array is 3 columns by 2 rows, the returned array is 3 columns by 1 row.
MAKEARRAY()Returns a calculated array of a specified row and column size, by applying a Lambda function.
SCAN()Scans an array by applying a Lambda function to each value and returns an array that has each intermediate value.
MAP()Returns an array formed by mapping each value in the array(s) to a new value by applying a Lambda function to create a new value.
REDUCE()Reduces an array to an accumulated value by applying a Lambda function to each value and returning the total value in the accumulator.
ISOMITTED()Checks whether the value in a Lambda function is missing and returns TRUE or FALSE.


Those functions basically iterate over the cells in a particular way, either cell by cell, row by row, and so on, and what they do is apply the lambda function on each cell value. The result is either written back to a new cell, with most functions above, or accumulated, as in functions SCAN() and REDUCE().


Example : =BYROW(A1:C2; LAMBDA(x;MAX(x)) )



Example : =BYCOL(A1:C2; LAMBDA(x;MAX(x)) )



Example : =MAKEARRAY(2; 3; LAMBDA(r; c; r*c) )



Example : =SCAN(""; A1:C2; LAMBDA(t; u; t&u) ). t is an accumulator with an initial value of "".



Example : =MAP(A1:C2; LAMBDA(a; IF(a>4;a*a;+a) ))



Example : =REDUCE(0; A1:C2; LAMBDA(t; u; IF(u>4; t+u; 0)) ). t is an accumulator with an initial value of 0.


As for the ISOMITTED() function, it works like this :

C++ code


xlsgen::IXlsWorksheetPtr worksheet = workbook->WorksheetByIndex[1];

// create a lambda function
xlsgen::IXlsDynamicRangePtr dynrange_xy = worksheet->NewDynamicRange(L"MyFuncXY");
dynrange_xy->Formula = L"=LAMBDA(x;y;IF(ISOMITTED(y);\"y param is omitted\";x&y))";
dynrange_xy->UserDefinedFunction = TRUE;
dynrange_xy->Description = L"(x,y) function";

worksheet->Formula[10][6] = L"=MyFuncXY(4;2)";
_bstr_t s106 = wksht->Label[10][6]; // returns "42"

worksheet->Formula[11][6] = L"=MyFuncXY(4)";
_bstr_t s116 = wksht->Label[11][6]; // returns "y param is omitted"




Posted on 12-October-2021 10:35 | Category: xlsgen, Excel generator | comment[0] | trackback[0]

 

xlsgen 4.9.0.15 : Lambda function


Build 4.9.0.15 of xlsgen introduces Lambda functions, a mechanism in Excel that is meant to reduce the complexity of spreadsheets. It was introduced in 2021 as part of Office 365 subscriptions, is not available in any downloadable Excel version, but xlsgen supports it.

Usually, cell with calculations end up with multiple functions nested at multiple levels, making it hard to understand and maintain over time. The fix for this is usually to either factorize a static piece of it into a defined name, or to externalize it to a VBA macro function, both of which have limitations. The limitation of static defined names is that parameters can't be passed to the defined name so a dynamic call is impossible. A limitation which isn't in VBA macros, except that VBA is a different thing than Excel functions, a different language and that it's been years that running VBA macros has become a security problem.

So this lays down the path for something else, and that's lambda functions, that's how it is named in Excel. Lambda functions can be seen as a mechanism for overcoming the limit of not being able to pass arguments to defined names, while remaining in the Excel function context.

Introducing lambda functions is actually straight forward. Let's assume we have a mathematical function y = x + 3. We could specify this function like this as well : x ==> x + 3, or rather function(x; x+3). Back to Excel context, if we create a defined name that we shall call y, and whose definition is =lambda(x;x+3), that's all we need then to make a call anywhere in the spreadsheet of the form y(1) and it would return 4.

When we create that defined name, we can use the description to explain further details about what the function accomplishes, what the parameters are, etc. which carries a meaning to anyone who will be tasked to understand and maintain the spreadsheet over time.

Anywhere in the spreadsheet where this x + 3 calculation is stored in formulas, it can be replaced by the y(x) function call and doing so this removes complexity to formulas across the entire spreadsheet.

Here is another example. Assuming we have data layed down like this :



In C12, we have a calculation whose only point is to obtain the price of a coffee type of a given size. Allegedly, all what we want for this is a handy function of the form CalcCoffeePriceForSize(coffee_type; coffee_size), but in Excel we usually end up with a string of functions like this :

=VLOOKUP(A12;Table1_data;MATCH(B12;Table1_headers;0);FALSE)

where A12 is the coffee type and B12 the coffee size. The MATCH function is there to find the appropriate coffee size column, and the VLOOKUP finds the coffee price for the coffee type given its coffee size.
A string of Excel functions like this isn't particularly self-describing, and it would get far worse if we added error handling, etc.
And that's where the lambda function mechanism comes handy. Let's create a new defined name, called CalcCoffeePriceForSize, then paste the formula above in there.
Then edit this definition and replace it by :

=VLOOKUP(coffee_type;Table1_data;MATCH(coffee_size;Table1_headers;0);FALSE)

Then edit again and prefix the above with the =LAMBDA function call along with parameters :

=LAMBDA(coffee_type;coffee_size;VLOOKUP(coffee_type;Table1_data;MATCH(coffee_size;Table1_headers;0);FALSE))

Don't forget to describe this function and parameters in the Comment area. And click OK. Of course if you are doing this in Excel, this won't work unless a subscription-based Excel product is being used. In other words, it does not work with Excel 2016, Excel 2019 or Excel 2021.
What is being done here is pass the list of all function parameters, and then we have the calculation itself.



Now back in cell C12 where the calculation occurs, replace the previous string of formulas with :

=CalcCoffeePriceForSize(A12;B12)

That's it. Cell C12 is a calculated formula and the intention is self-describing. If the user needs to know more about the actual calculation, it's available, but not shown unless needed. Complexity has been lowered without compromising the maintainability of the spreadsheet.
So that's a brief introduction to lambda functions.

in xlsgen, creating the lambda function is done like this :

C++ code


xlsgen::IXlsWorksheetPtr worksheet = workbook->WorksheetByIndex[1];

// create a lambda function
xlsgen::IXlsDynamicRangePtr dynrange = worksheet->NewDynamicRange(L"CalcCoffeePriceForSize");
dynrange->Formula = L"=LAMBDA(coffee_type;coffee_size;VLOOKUP(coffee_type;Table1_data;MATCH(coffee_size;Table1_headers;0);FALSE))";
dynrange->UserDefinedFunction = TRUE;
dynrange->Description = L"CalcCoffeePriceForSize computes the price of a coffee for a given coffee type and a given coffee size.";

// use the lambda function
worksheet->Formula[12][3] = L"=CalcCoffeePriceForSize(A12;B12)";



Posted on 30-September-2021 15:48 | Category: xlsgen, Excel generator | comment[0] | trackback[0]

 

Notations opthalmiques et opticiennes

L'opthmalogiste indique sur l'ordonnance de correction des yeux une notation qui n'est pas celle que l'on trouve ensuite chez le professionnel opticien qui fabrique ensuite les verres, sur son devis comme sur sa facture. Fort heureusement, les deux notations sont équivalentes et il est possible de passer de l'une à l'autre.

D'ailleurs la première chose à faire est de savoir si une notation est celle indiquée par un ophtalmologue ou celle indiquée par un opticien.
La notation comporte trois éléments, pour chaque oeil :

S (C) A


Par exemple, -2.5 (-1.75) 165°. Que l'on peut lire comme -2.5 dioptries de correction pour la sphère qui sert de modèle pour la myopie (d'où la lettre S), -1.75 dioptrie de correction pour le cylindre qui sert de modèle pour l'astigmatisme (d'où la lettre C), et 165 degrés sur le cylindre qui sert de modèle pour la correction de l'astigmatisme, d'où la lettre A.
Lorsque la valeur pour le cylindre est négative, il s'agit de la notation de l'ophtalmologue. Lorsque le cylindre est positif, il s'agit de la notation du professionnel qui fabrique vos verres.

La notation de l'ophtalmologue est notée Soph (Coph) Aoph, avec Coph < 0.

La notation du professionnel opticien est notée Soptic (Coptic) Aoptic avec Coptic > 0.

Notation ophtalmologique à partir de la notation du professionnel opticien :



Soph = Soptic + Coptic
Coph = -Coptic
Aoph = (Aoptic + 90) modulo 180


Par exemple, -4.25 (+1.75) 75° devient -2.5 (-1.75) 165°.

Notation du professionnel opticien à partir de la notation de l'ophtalmologue :



Soptic = Soph + Coph
Coptic = -Coph
Aoptic = (Aoph - 90) modulo 180


Par exemple, -2.25 (-1.25) 10° devient-3.50 (+1.25) 100°.

Posted on 23-September-2021 22:16 | Category: France | comment[0] | trackback[0]

 

Apple event : should you be curious ?


It's been at least 5 years that Apple hasn't announced any ground breaking innovation, so past events from this era I was already barely curious and motivated to learn about their new stuff. But now that I know Apple has no problem running a file checker on your device for, and reporting what it finds to law enforcement, all without your consentment, the little I cared about Apple has now faded away. I will simply snob their announcements because, said otherwise, if the device I purchase isn't going to be under my control, I'm not doing this, period. What should you do ? The same, I guess. For your sanity at least.

Posted on 13-September-2021 17:26 | Category: News | comment[0] | trackback[0]

 

xlsgen 4.9.0.14 : Fix for header/footer


Build 4.9.0.14 of xlsgen improves the positioning and sizing of sheet headers and footers in rendering scenarios (print, PDF, ...). This has particular effect when the content of such blocks is large.

Posted on 10-September-2021 12:14 | Category: xlsgen, Excel generator | comment[0] | trackback[0]

 

Microsoft Azure flaw : very reassuring...


Microsoft is making the news again.

extrait : "(Sep 9, 2021) - Microsoft warned some of its Azure cloud computing customers that a flaw discovered by security researchers could have allowed hackers access to their data.

It said it had notified some customers they should change their login credentials as a precaution.

Palo Alto reported the issue to Microsoft in July.
"



Everything in this sounds very reassuring from Microsoft.

Posted on 09-September-2021 16:50 | Category: anti-Microsoft | comment[0] | trackback[0]

 

xlsgen 4.9.0.13 : Fix pack


Build 4.9.0.13 of xlsgen is a fix pack :

- sheet header/footer : check that the length is no more than 255 characters (Excel limit).

- HTML import : fix for parser

- HTML import : import &nbsp; cells differently, assumes no content

- HTML import : import XML-type markup in HTML streams

- HTML import : uninitialized pointer.

- HTML import : improved number mapping resolutions. For instance, a number candidate cannot be seen as an integer in Excel if it has more than 11 digits : imported as a string.

Posted on 09-September-2021 07:39 | Category: xlsgen, Excel generator | comment[0] | trackback[0]

 

Firefox about to die


It's pretty clear for me that after all those years all utter nonsensical Firefox updates, the journey has to come to an end. How to get my trust back ? Introduce a "no prompt" option where never will I be disturbed again during my web site visit to have to deal with all this annoying scam shits known as prompt dialog boxes (location, form save, ...).

Oh and by the way, if the Firefox guys wanted to regain the trust of users immediately, it's pretty simple : handle GDPR banners for us automatically. Let me preconfigure a "accept all" or "deny all" option in settings and then make sure that my screen is never obstructed by this shit ever again.

Do a damn thing Firefox guys. Or 2021 is your last year of existence. Act! Now!!

Posted on 12-August-2021 19:35 | Category: News | comment[0] | trackback[0]

 

xlsgen 4.9.0.12 : Improved JSON, HTML and XML imports


Build 4.9.0.12 of xlsgen adds to JSON data import, HTML data import and XML data import the same properties added to CSV data import in the previous build. Namely,

- AutoFormatMapping (boolean) : enable or disable the automatic pattern matching algorithm. It needs to be disabled in cases where the algorithm tries hard too much finding patterns and ends up creating more number formats than Excel actually accepts (200).

- FirstRow : as the name implies this allows to tell at which first row the CSV content should be inserted. Before this, row could be specified on a per column basis, but this property is for all columns in a single statement.

- FirstColumn : same than FirstRow, except for columns.


Sample :


// importing a sample JSON file

xlsgen::IXlsWorksheetPtr worksheet = workbook->AddWorksheet(L"Sheet1");

xlsgen::IXlsJSONImportPtr json = worksheet->Import->JSON;

json->Options->AutoFormatMapping = FALSE;
json->Options->FirstRow = worksheet->HorizontalPane->SplitLimit; // insert the data right after the split

json->ImportFile(L"input\\jsonfile3.json");


Posted on 12-August-2021 17:42 | Category: xlsgen, Excel generator | comment[0] | trackback[0]

 

Why websites still have a password lost feature ?


As I see that hacking an account typically involves obtaining someone's account password, I'm reminded that almost all websites out there have a password lost feature which allows to send you either a new password, or equivalently the right to save a new password, usually using the same vehicle (your computer), by far the most egregious scenario, or a 2nd factor vehicle such as SMS. This feature is useful, I understand. If you lose your password, you're glad this feature is at your disposal. But should it ? Is it the best we can do to protect your account ? Or should we perhaps defer on you to make sure to never lose your password and avoid this password lost feature in the first place ? Why you ask !! because if your socially hacked, your hacker will simply use this feature to obtain a password, then own your account, and from there you don't know what happens. In a nutshell, this feature is nice, but it should not be available anymore. Don't reward account hackers! ASAP.

Posted on 12-August-2021 15:11 | Category: News | comment[0] | trackback[0]

 

Firefox 91 : proton config ignored



Firefox 91 is ignoring the proton UI settings made earlier (past versions) in about:config

Your only resort is to re-introduce a pseudo compact mode for tabs. Here is how



Posted on 11-August-2021 22:03 | Category: News | comment[0] | trackback[0]

 

xlsgen 4.9.0.11 : Improved CSV import


xlsgen 4.9.0.11 adds 3 new properties to CSV import :

- AutoFormatMapping (boolean) : enable or disable the automatic pattern matching algorithm. It needs to be disabled in cases where the algorithm tries hard too much finding patterns and ends up creating more number formats than Excel actually accepts (200).

- FirstRow : as the name implies this allows to tell at which first row the CSV content should be inserted. Before this, row could be specified on a per column basis, but this property is for all columns in a single statement.

- FirstColumn : same than FirstRow, except for columns.


Posted on 11-August-2021 09:23 | Category: xlsgen, Excel generator | comment[0] | trackback[0]

 

A quoi sert la CNIL ?


A propos de la mise en oeuvre de l'obligation vaccinale des personnels soignants,

extrait : "(Ouest France) La Commission nationale de l’informatique et des libertés (Cnil) a rendu public ce matin, son avis sur plusieurs éléments de la loi du 5 août.

Concernant "l'accès aux données de vaccination des professionnels soumis à une obligation vaccinale" rendu possible aux Agences régionales de santé (ARS), la Cnil insiste sur deux points : "informer les personnes concernées" par le Fichier national des professionnels de santé (FNPS) qui sera croisé avec les listes de professionnels non vaccinés et "donner la possibilité pour ces personnes d'exercer les droits relatifs à la protection de leurs données".

Elle souligne enfin l'importance de laisser "la possibilité de conserver ces listes seulement jusqu’à la fin de l’obligation vaccinale", de procéder à "un effacement des listes par les organismes d’assurance maladie dès leur accusé de réception par les ARS" et "une transmission régulière et une conservation par les ARS uniquement de la liste la plus récente".
"


Dois-je conclure qu'il n'y a plus de secret médical ?
A quoi bon ériger des principes qui sont bafouées au premier évènement venu ?
Qu'on ne vienne plus faire chier les français avec le secret des données personnelles. Car tout ça n'est pas protégé, pas même les données médicales.
La CNIL doit cesser d'exister. J'espère qu'au moins la moitié de leurs employés auront démissionner d'ici à ce soir. Ils ne servent à rien d'utile, ou plutôt si, mais pour le pouvoir en place, pas pour les libertés et la protection des données, un comble.

Posted on 09-August-2021 12:44 | Category: France | comment[0] | trackback[0]

 

On Apple police work


Apple's announcement that beginning in iOS 15 they'll scan photos on your device before you can upload them to their host service (iCloud), hash them, and report them to the government police if the hash matches an existing database of hashes, means that Apple cannot be trusted anymore. It's not a surprise. In fact it shouldn't be a surprise to anyone worth it's salt. But it was written on the wall already. Very scary surveillance world we are getting in, guys.
Of course, you can simply stop using iCloud if you did. But the repercussions of those principles are so wide that it questions whether owning such a device makes sense anymore.

Posted on 06-August-2021 20:29 | Category: News | comment[0] | trackback[0]

 

Projet Pegasus : désolé mais tout le monde est responsable


Projet Pegasus : désolé mais tout le monde est responsable


- Apple : qui est dûr avec les faibles et faible avec les dûrs. Je vous vois vous tous emplyés de Apple en train de chier dans votre froc pensant qu'empêcher un software israélien de fonctionner ferait peut-être monter l'accusation d'anti-sémitisme.

- les possesseurs de smartphone : pour leur stupidité maximale, n'ayant pas la capacité de comprendre que ces appareils sont hors de leur contrôle.

- le producteur de ce software israélien : il devrait être poursuivi pour tentative massive d'infiltration dans des systèmes informatiques. Tous les gouvernements de ce monde "libre" devraient faire voter des sanctions en conséquence.

- les médias : forts complaisants à mon goût. Pas la moindre critique. Imaginez que Pegasus ait été fabriqué par des Russes, imaginez un instant la couverture médiatique d'un tel fait.


Disclaimer : je n'ai pas de smartphone, n'en aurait jamais. Ingénieur, formé, éduqué, c'est l'évidence-même pour moi.

Posted on 22-July-2021 09:37 | Category: France | comment[0] | trackback[0]

 

Pegasus remet en selle tous les petits gauchos de la sphère IT.



Pegasus remet en selle tous les petits gauchos de la sphère IT. Les edward Snowden, les Bayart, les Ebelpoin, etc.

Beurk, beurk, beurk.

Posted on 19-July-2021 23:04 | Category: France | comment[0] | trackback[0]

 

Pascal Praud dans toute sa cohérence idéologique


On le sait l'émission fourre-tout de Pascal Praud sur CNews milite pour le droit de tout dire, pour le politiquement incorrect, ou prétendu tel.

Mais pourtant dans les faits, voici le verbatim de ce que vient de dire Pascal Praud aujourd'hui mercredi 7 juillet 2021 à 10h15 :

"Twitter devrait lever l'anonymat de ceux qui s'expriment, car lorsqu'on s'exprime à visage découvert, on ne dit pas la même chose".

Pas la même chose ? On serait plus nuancé, plus feutré. Est-ce que par hasard ce ne serait pas la définition même du politiquement correct ? Celui-là même contre lequel il a créé cette émission ?

Posted on 07-July-2021 10:18 | Category: France | comment[0] | trackback[0]

 

Windows 11 et l'obsolescence programmée


Selon des annonces qui restent à confirmer, mais officielles, Microsoft compte élever à un niveau très élevé les contraintes matérielles nécessaires pour utiliser Windows 11, de telle sorte qu'un ordinateur même récent, qu'il soit de bureau, portable, ou autre, à toutes les chances de ne pas satisfaire les dites contraintes.

J'espère que des autorités, peu importe qu'elles soient françaises ou européennes, ne laisseront pas faire cette obsolescence programmée. La chose que je n'aimerai pas voir, c'est que le contrôle contre l'obsolescence programmée en pratique ne touche que de petites entreprises. De cette façon ces autorités feraient ainsi le travail que ne peut même pas espérer faire le service marketing de ces grandes entreprises.

C'est quand on en arrive là qu'on se dit qu'il est peut-être temps de lâcher l'affaire, de faire autre chose que de l'informatique car le niveau de pourrissement des normes et autorités de contrôle produisent l'inverse de leur but affiché. Et particulièrement en Europe, réputé être un marché de concurrence libre et non faussée.

Posted on 03-July-2021 20:04 | Category: France | comment[0] | trackback[0]

 

Hypocrisie habituelle


Présentation dythyrambique de la part des médias sur cet accord fiscal quasi mondial :

extrait : "Accord historique à l’OCDE pour taxer les multinationales «d’au moins 15%» sur les bénéfices. 140 pays se sont mis d’accord pour la mise en place d’un impôt minimum « d’au moins 15% » sur les bénéfices des plus grandes entreprises mondiales."


extrait : "« Je salue cette avancée majeure », un « accord ambitieux global novateur ». « Nous allons mettre fin à l’optimisation fiscale et à la course au moins-disant fiscal », qui est « une impasse pour l’Europe et le reste du monde », a mis en avant Bruno Le Maire, ministre français de l’Economie sur son compte Twitter."


extrait : "La secrétaire américaine au Trésor a salué jeudi l’accord trouvé, y voyant un « jour historique pour la diplomatie économique. L’Allemagne a de son côté évoqué un « pas colossal » vers une plus grande justice fiscale. "


Et évidemment, le clou du spectacle,

extrait : "En revanche, l’Irlande et la Hongrie n’ont pas adhéré à l’accord conclu à l’OCDE."


Je rappelle que 100% des multinationales du numérique, qui sont celles qui posent problème et qui sont à l'origine de cet "accord historique" sont domiciliées en Irlande. Par conséquent, cet accord va s'appliquer au monde entier, sauf à eux. A toutes les entreprises sauf celles qui étaient ciblées par l'accord.

C'est un beau jour pour la politique internationale je trouve...

Posted on 01-July-2021 22:35 | Category: France | comment[0] | trackback[0]

 

 

<-- previous page

< April >
0102030405
0607080910
1112131415
1617181920
2122232425
2627282930



 

 

This site
Home
Articles

DevTools
CPU-Z
EditPlus
ExplorerXP
Kill.exe
OllyDbg
DependencyWalker
Process Explorer
autoruns.exe
Araxis
COM Trace injection
CodeStats
NetBrute
FileMon/Regmon
BoundsChecker
AQTime profiler
Source monitor
GDI leaks tracking
Rootkit revealer
Rootkit removal
RunAsLimitedUser(1)
RunAsLimitedUser(2)

 

 

Liens
Le Plan B
Un jour à Paris
Meneame
Rezo.net (aggr)
Reseau voltaire
Cuba solidarity project
Le grand soir
L'autre journal
Le courrier suisse
L'Orient, le jour
Agoravox (aggr)