You are not logged in.
I wish mpv will see this discussion and will reply.
ab, I wish mpv is well. Has the .dll source code of mozjs-24.dll wrapper been published yet? If we don't have that, we'll be stuck.
Hi Arnaud,
I'm not sure what's happening, but I think I'd report the phenomenon here:
The GUI tool for Sqlite called Sqlite Expert (http://www.sqliteexpert.com/) had an error:
Error: no such collation sequence:_SYSTEMNOCASE
SQL Statement:
select fieldA,fieldB,fieldC, count(*)
from myTable
group by fieldA,fieldB,fieldC
having count(*) > 1.Note: sqlite expert is ok with simple sql select statement.
But another called SqliteSpy (http://www.yunqa.de/delphi/doku.php/pro … espy/index) is Ok with the sql query.
What do you think might caused this? I assume sqlite export's sqlite3 engine is too old?
This would need the enhanced RTTI, so would work only with Delphi 2010 and up.
Arnaud, I'm not sure, but from the past discussions I remember mpv had such a plan, or has this feature (as demonstrated by tueddy above) been implemented?
Hi Arnaud,
Good weekend!
Since UInt64 (unassigned) isn't listed in the "5.1. TSQLRecord fields definition" section of pdf manual, I'd like to know if it's supported?
The fact that Delphi's StrToInt64() doesn't support Uint64 made me fearing and wanted to ask about mORMot's support ![]()
Hi Folks, any news on this ![]()
Great! I haven't used html front end yet, so didn't notice that!
Yes, I thought of that... I really can't wait to use mORMot on my Linode Linux VPS!
Thanks for the info ab, the price seems to be reasonable .
FPC/Lazarus is very promising!
Hi Folks,
Before mORMot is FPC and Linux ready, I might need to write and deploy a little app on a public Windows server, so if you use any non-expensive Windows VPS (means you have real experience ) and you think it's OK, would you share your experience here? That'll also benefit others too ![]()
A side note for ab, I long have had the idea of suggesting you to put the sqlite3fts3.obj (also the pdf manual) to the source repository, these files are not big and nowadays network speed and disk space are more than enough to handle them, right?
By putting these necessary files into the source repo, will let new users get started with mORMot much easier, as opposed to having to find out where and then download these files separately. It's about user experience.
Python's Flask has a dedicated example showing how to access the web server using jQuery, I WISH mORMot can provide similar easiness and similar example:
https://github.com/mitsuhiko/flask/blob … index.html
<script type=text/javascript>
$(function() {
var submit_form = function(e) {
$.getJSON($SCRIPT_ROOT + '/_add_numbers', {
a: $('input[name="a"]').val(),
b: $('input[name="b"]').val()
}, function(data) {
$('#result').text(data.result);
$('input[name=a]').focus().select();
});
return false;
};
});
</script>@silvioprog, that .obj file can be downloaded here: http://synopse.info/fossil/wiki?name=Downloads
Thanks for the clarification, ab!
Hello Arnaud,
In a TThread object (TMainThread) I have a TSynLog object (not class):
TMainThread = class
FLogObj: TSynLog;
...
end;And when this TMainThread object is executed, it'll spawn 'sub-threads'.
My question is, is it considered to be safe if those 'sub-threads' also using the FLogObj object of their 'parent-threads'? For example:
//We use OmniThreadLibrary in this example
Parallel.ParallelTask.NumTasks(aTaskCount);
myTasks.Execute(
//The following anonymous method will be executed in sub-threads and will have multiple instances determined by the aTaskCount param.
procedure (const task: IOmniTask)
begin
//note: here FLogObj is a field of the parent thread.
FLogObj.Log(sllInfo, 'testing');
end
)I read that TSynLog is thread-safe, but I'm not sure if the way I use is thread-safe or not, I appreciate your help!
Edit 1: Some basic tests shows that the above code runs OK without any access violation errors, but I have not done massive (stress) tests.
@ab, Thanks for the explanation, I was just doing some "housekeeping" tasks while the program is under development.
Dear Arnaud,
In my app that uses mORMot (with sqlite3 as the dB), in the following situation it doesn't "see" changes by other processes:
1 - Start the app and does some Retrieve() operations against a table;
2 - In another process (called SqliteSPY, a sqlite3 manager program), delete all records in that table;
3 - Do some Retrieve() operations same as step #1 above, retrieve() still returns the records that were already deleted by SqliteSpy, unless I restart the app.
I have tried both TSQLRestClientURINamedPipe.ServerCacheFlush and TSQLRestClientURINamedPipe.Cache.Flush() after step #2 and before step #3, but they didn't help.
Any hints? Thanks in advance.
PS, the source version is 2014-06-01 203737 -edefb1afafa84ad3
Hi Arnaud,
There are 200 tests for TSynTable failed in TestSQL3.dpr on my computer. The following are the first 15 of log messages generated by TestSQL3.exe, let me know if you want me to send you the log file.
D:\RadStudioComponents\Synopse Framework\SQLite3\TestSQL3.exe 0.0.0.0 (2014-06-06 12:52:00)
2014-06-06T12:57:26
20140606 12572632 warn Test failed
20140606 12572632 fail TTestLowLevelCommon(029E6840) Low level common: TSynTable "" stack trace API 002EA594 SynSelfTests.TTestLowLevelCommon._TSynTable (2899) 0033E587 mORMotSelfTests.SQLite3ConsoleTests (204)
20140606 12572632 warn Test failed
20140606 12572632 fail TTestLowLevelCommon(029E6840) Low level common: TSynTable "" stack trace API 002EA594 SynSelfTests.TTestLowLevelCommon._TSynTable (2899) 0033E587 mORMotSelfTests.SQLite3ConsoleTests (204)
20140606 12572632 warn Test failed
20140606 12572632 fail TTestLowLevelCommon(029E6840) Low level common: TSynTable "" stack trace API 002EA594 SynSelfTests.TTestLowLevelCommon._TSynTable (2899) 0033E587 mORMotSelfTests.SQLite3ConsoleTests (204)
20140606 12572632 warn Test failed
20140606 12572632 fail TTestLowLevelCommon(029E6840) Low level common: TSynTable "" stack trace API 002EA594 SynSelfTests.TTestLowLevelCommon._TSynTable (2899) 0033E587 mORMotSelfTests.SQLite3ConsoleTests (204)
20140606 12572632 warn Test failed
20140606 12572632 fail TTestLowLevelCommon(029E6840) Low level common: TSynTable "" stack trace API 002EA594 SynSelfTests.TTestLowLevelCommon._TSynTable (2899) 0033E587 mORMotSelfTests.SQLite3ConsoleTests (204)
20140606 12572632 warn Test failed
20140606 12572632 fail TTestLowLevelCommon(029E6840) Low level common: TSynTable "" stack trace API 002EA594 SynSelfTests.TTestLowLevelCommon._TSynTable (2899) 0033E587 mORMotSelfTests.SQLite3ConsoleTests (204)
20140606 12572632 warn Test failed
20140606 12572632 fail TTestLowLevelCommon(029E6840) Low level common: TSynTable "" stack trace API 002EA594 SynSelfTests.TTestLowLevelCommon._TSynTable (2899) 0033E587 mORMotSelfTests.SQLite3ConsoleTests (204)
20140606 12572632 warn Test failed And that will be one of the biggest things for Delphi developer who does web apps in the near future!
A side note - you must realized that many people use html as the front end when using mormot, and the more much benefit of mORMot if it can build web app server for Linux ![]()
yes, I use a TSynLog instance, but not directly the class.
ab, angularJS itself doesn't provide styling abilities, in order to make your web app look good, you'll still have to use a UI library (including any of the above mentioned), or you code the style yourself.
Anyways, angularJS is the only popular web front end framework that I know and think a Delphi or a .Net developer might feel familiar.
A further comment to ab, when auto-appending stack trace is enabled in TSynLog, I expect the log reader, TSynLogFile.EventText[aIndex] to return only the log message, but not with the very long stack trace, and this behavior is why I asked this question at the first place. Is this by design, or a bug or anything I misunderstood? Thanks.
For those who have the same question, here is the solution.
FLogger.GenericFamily.LevelStackTrace := [];PS,
FLogger.Family.LevelStackTrace := [];doesn't work, what's the difference between
TSynLog.Familyand
TSynLog.GenericFamily, how do I know when to use which one?
Thanks, Arnaud.
well, tested the latest source downloaded ten minutes ago, it's the same problem.
Apart from the price, from the demo it seems quite good.
An alternative is http://jeasyui.com/index.php
Hello Arnaud,
I'm using the source downloaded less than 2 weeks ago, and noticed that code like this:
TSynLog.Log(sllError, 'a test msg')always add very long stack trace after the log msg? Example result:
20140603 20491541 a test msg, stack trace API 006A0063 BaseBackgroundWorker.TBaseBackgroundWorker.SendLogToFile (109) 0069FFA9 Note the above log message and the stack trace are in the same line.
I have tried adding NOEXCEPTIONINTERCEPT conditional define to the project option, the result is the same.
How to disable these stack traces? Thanks.
ab, There must be HUGE work and it must take some time to get the entire mORMot compiled with FPC...
As you all know the prefered systems of the most clients in the world are Windows, Android, iOS, i don't know anyone who is using LINUX in practice.
You must meant desktop systems, otherwise you must be joking
In the server world, Linux at least has "double" the market share of Windows, and yes, it's the cost that caused this market share. Here is a reference: http://en.wikipedia.org/wiki/Usage_shar … e_Internet
That being said, I think the main benefit of Linux support for mORMot would be being a Free Pascal web server framework that serves the web browsers, or any Windows/Android/iOS clients in a RESTful way.
Sorry, the comments were here at the FPC G+ community, not that Delphi G+ community:
https://plus.google.com/115143382472228 … kuSzWB7HQL
PS, I guess you can see the potential needs of 'mORMot for Linux' in that 'discussion branch'.
@Ab, in order to help 'idea sparkling', this discussion also has a 'branch' here: https://plus.google.com/115143382472228 … ZrMK9BB9Vg
And there are already comments I guess you'd want to reply ![]()
@silvioprog, looks like this discussion got your attention, the Pascal/Delphi community is not very big, I guess ![]()
It's me who mentioned AB's Mustache Delphi port in that github issue
And, well, Mustache it's a just a template engine - think the Format() function in Pascal, whilst AngularJS is a all-in-one web front end framework.
You and Arnaud (ab) are both great guys - You made the best web framework for FPC, and Arnaud made the best web framework for Delphi - this is just my own opinion, but I'm ready to defend my opinion if somebody doesn't agree ![]()
By reading Arnaud's blog posts and forum posts, and by looking at the projects and documents he's accomplished , people can know that he is a very passionated guy, sometimes he is opinionated (and most of the time I agree with his opinions), and he seems like to use strong languages sometimes, otherwise you won't be posting here, would you
But he is still are very nice guy, and I wish some nice things will be sparkled by this communication.
You too are making the Delphi and Pascal world better, thanks!
Yes. For now until you are adding any new additions to the logging library, looks like I can override TSynLog.CreateLogWriter() to archive what I need...
Arnaud, I suggest to move TestSQL3Register.dpr to a subfolder inside the 'Samples' folder for easier discovering.
Hi Arnaud,
The way (so called per-family) the TSynLog class works is somehow confusing, and that way is not suitable in some cases. Is there a way to control the target file name and the instantiation of a TSynLog object?
What I want is something like this:
var
myLog: TSynLog;
begin
myLog := TSynLog.Create();
myLog.FileName := 'my log file for this operation at this time';
myLog.Log(sllInfo, 'starting...');
//...
myLog.Release;Arnaud, I didn't know that, definitely will check it out!
@warleyalex, had a look of your video, nice! One or two weeks ago I started using mORMot, the more I get to know about it, the more I like it, it really can be stated as 'powerful yet simple'. Well done, Arnaud!
Yes, cross-platform apps without platform-specific GUI should be much easier.
To be clear, full OSX support (client+server) is not even on the roadmap.
Hi Ab, if at the end mormot is able to be compiled for Linux with FPC, than it's supposed to be very close to MAC OSX-compatible, right?
Have you thought of that, when mORMot become cross-platform, it will enabled Pascal developers to deliver not only general 'http server applications', but also 'small server application for desktop with HTML5 UI'? Ie. Use run the mORMot-powered application on Windows/MacOSX/Linux desktop, and the users default web browser will language and pointing to something like http://localhost:/888
Hi Folks,
If we use recent versions of Delphi and would like to keep the code compatible with FPC, seems that we should not utilize some of new language features introduced since D2009, such as anonymous methods, record helper, etc.
@itSDS, everybody's coding style's different, but there are common conventions too ;P
All after all, it's just a nice-to-have suggestion ![]()
Be aware that, in your case, I suppose each client thread should have its own TSQLRestClientURI instance, otherwise any shared instance will be blocking, so you will not benefit of multi-threading.
Sure, and thanks!
thanks for the info, that approach is not suitable for my case, I'll use threads on the client side.
wow! Arnaud is really fast! He is highly productive.
IMHO, CrossKylix / Kylix has no future and not sure if it worths to support them. FPC/Lazarus it the future of Pascal cross-platform development, especially for server-side development where mORMot is well fit.
Arnaud,
If you don't mind, maybe I suggest you to use more blank lines in the source code? I think it will increase the readability of the code ![]()
Arnaud,
Thanks for all your open source offorts!
RE fame, I DO believe you have gain great reputation in the Delphi community, for sure!
Well, looks I can use threads on the client side too...
Oops, looks I myself is a little confused with my own question - with TSQLRestServerDB.AcquireExecutionMode[execORMWrite] := amBackgroundThread, the client still have to wait for the result of that background thread...
I already know the OTL threading library, but I want to make my program ready for inter-machine/process client/server architecture. I still need some thoughts...