Archive for the ‘Software Development’ Category
Posted by jpluimers on 2018/05/01
Via [WayBack] Limits on Everything – The Isoblog.:
A posting at Brave New Geek about limits on everything, for example limits on message sizes and numbers of in-flight messages in message queues. Interesting read.
Very interesting read indeed: [WayBack] Take It to the Limit: Considerations for Building Reliable Systems – Brave New Geek
You have to set limits, which begs for a few questions:
- how to find out which limits and at what levels
- how to enforce these limits
Food for thought…
The first can be done with benchmarking, see for instance these from the same blogs above:
Enforcing limits depends in your infrastructure and your communication stacks.
–jeroen
Posted in Cloud, Development, Infrastructure, Opinions, Software Development | Leave a Comment »
Posted by jpluimers on 2018/04/26
On my research list: Home – Outpan as it is a key-value store of EAN (actually GTIN, so including GS1 UPC, EAN which means barcodes like UPC-12, EAN-8, EAN-13 and ITF-14).
- [WayBack] Global Trade Item Number – Wikipedia
- [WayBack] API Documentation – Outpan Developers
Legacy API
Get Product Information
GET https://api.outpan.com/v2/products/[GTIN]?apikey=[YOUR API KEY]
Add Product Name
POST https://api.outpan.com/v2/products/[GTIN]/name?apikey=[YOUR API KEY]
Required POST parameters:
name: The name you would like to add for this product.
Add Product Attribute
POST https://api.outpan.com/v2/products/[GTIN]/attribute?apikey=[YOUR API KEY]
Required POST parameters:
name: Name of the attribute you would like to add for this product.
value: Value for the attribute you would like to add for this product.
- [GTIN] is the barcode number (ISBN, EAN, UPC, …) of the product you’re looking up.
- All API calls must be done via HTTPS. Plain HTTP calls will be rejected.
–jeroen
via [WayBack] [How To] Scan a barcode and add the product name to Wunderlist : tasker
Posted in Barcode, Cloud, Cloud Apps, Cloud Development, Development, EAN, Infrastructure, Internet, Power User, Software Development | Leave a Comment »
Posted by jpluimers on 2018/04/26
A change of FetchOptions.CursorKind from ckAutomatic to ckDynamic does the trick.
did fix this issue:
I stumbled about a problem regarding FireDAC and MSSQL 2016. The table has four fields, one being of type varbinary(max). When I omit this blob field from the SELECT, I can update any field without problems using the edit and post methods of TFDQuery. It is only when I include that blob field in the SELECT, I cannot update the other fields anymore (the blob is not changed). The post runs into a timeout. It seems that the table is somehow locked. That guess is backed by the fact that even a simple UPDATE query executed from Management Studio is also blocked until I reset my application inside the debugger.Interestingly an INSERT runs without problems.
Via: [WayBack] I stumbled about a problem regarding FireDAC and MSSQL 2016…. G+ Uwe Raabe
–jeroen
Posted in Delphi, Development, Software Development | Leave a Comment »
Posted by jpluimers on 2018/04/25
For my research list:
–jeroen
Posted in .NET, Delphi, Development, Software Development | 4 Comments »
Posted by jpluimers on 2018/04/24
Posted in Delphi, Delphi 10 Seattle, Delphi 2010, Delphi XE, Delphi XE2, Delphi XE3, Delphi XE4, Delphi XE5, Delphi XE6, Delphi XE7, Delphi XE8, Development, Software Development | 1 Comment »
Posted by jpluimers on 2018/04/24
Thomas Pfister came with a nice solution to this question:
[WayBack] Does anyone know how to embed a superscript Registered symbol in a Rave memo buffer? – Phillip Woon – Google+
Since Google has such bad indexing of G+, here is the solution:
procedure TForm4.RvSystem1Print(Sender: TObject);
const
SuperscriptOn = RPTFPrefix + RPTFSuperscript + RPTFOn + RPTFSuffix; // from RpDefine.pas
SuperscriptOff = RPTFPrefix + RPTFSuperscript + RPTFOff + RPTFSuffix;
var
MemoBuf: TMemoBuf;
begin
MemoBuf := TMemoBuf.Create;
try
MemoBuf.Text := 'Test' + SuperscriptOn + '®' + SuperscriptOff + ' Test';
MemoBuf.PrintStart := 0.5;
MemoBuf.PrintEnd := 8.0;
with Sender as TBaseReport do begin
PrintMemo(MemoBuf, 1, true);
end;
finally
FreeAndNil(MemoBuf);
end;
end;
–jeroen
Source: Does anyone know how to embed a superscript Registered symbol in a Rave memo …
Posted in Delphi, Delphi 10 Seattle, Delphi 10.1 Berlin (BigBen), Delphi 2007, Delphi 2009, Delphi 2010, Delphi XE, Delphi XE2, Delphi XE3, Delphi XE4, Delphi XE5, Delphi XE6, Delphi XE7, Delphi XE8, Development, Software Development | Leave a Comment »
Posted by jpluimers on 2018/04/19
Even when the Delphi team was large, the documentation was lacking, so with the reduced Delphi team size, I don’t have high expectations of the below to get fixed.
But since much of the post Delphi 7 run-time library looks a lot like the .NET core, you can usually fallback to the Microsoft documentation.
Tip for the doc team: make http://docwiki.embarcadero.com/Libraries/en/System.TMonitor.Enter more clear. Especially that if the same thread calls TMonitor.Enter more than one time, it will allow entry without blocking as per System.Threading.Monitor.Enter Method (Object) documentation https://msdn.microsoft.com/en-us/library/de0542zz
(note that this got introduced in Delphi XE3: http://docwiki.embarcadero.com/Libraries/XE3/en/System.TMonitor.Enter)
–jeroen
via: [WayBack] Tip for the doc team: make http://docwiki.embarcadero.com/Libraries/Seattle/e…
Posted in Delphi, Delphi 10 Seattle, Delphi 10.1 Berlin (BigBen), Delphi XE3, Delphi XE4, Delphi XE5, Delphi XE6, Delphi XE7, Delphi XE8, Development, Software Development | 2 Comments »
Posted by jpluimers on 2018/04/19
I knew that methods on interfaces were not compatible with the procedure of object (like [WayBack] TProc)or function of object construct, but they are also not compatible with the reference to procedure or reference to function construct.
Via: [WayBack] I try to call an Interface method from TThread.Syncrhonize()…and Berlin don’t accept that… – Paul TOTH – Google+
If you want it fixed, vote for [RSP-13007] Interface methods are not assignable to anonymous method variable – Embarcadero Technologies (Thanks Stefan Glienke).
You can work around it with an anonymous method.
This won’t work:
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
type
ITest = interface
['{B5AD87E8-A3DF-4B83-BE14-997C2E76A06C}']
procedure Run;
end;
TTest = class(TInterfacedObject, ITest)
procedure Run;
end;
procedure TTest.Run;
begin
Writeln('PASS')
end;
var
test: ITest; // <- change this to TTest and it compiles
proc: TProc;
begin
test := TTest.Create;
proc := procedure begin test.Run; end; // <- this compiles
proc := test.Run; // E2010 Incompatible types: 'TProc' and 'procedure, untyped pointer or untyped parameter'
proc();
Readln;
end.
–jeroen
Posted in Delphi, Delphi 10 Seattle, Delphi 10.1 Berlin (BigBen), Delphi XE, Delphi XE2, Delphi XE3, Delphi XE4, Delphi XE5, Delphi XE6, Delphi XE7, Delphi XE8, Development, Software Development | Leave a Comment »