Re: [Pharo-users] Exchanging information between 2 pharo applications (2 images running on two different computers)

2017-11-16 Thread Ben Coman
On 26 October 2017 at 18:37, Dimitris Chloupis 
wrote:

> Nothing complex about two images exchanging messages, its not even complex
> to transmit objects via fuel, you even transmit a debugger or any part of
> the live environment or even make an "internet" of images that join objects
> together. Sky is the limit. Pharo already provides you will all the
> tools/libraries to do this.
>
> A streamsocket (not to be confused with regular sockets) will delay the
> messages (a collection of bytes) until they arrive to the receiver or until
> they have reached the timeout period. Offline mode is pretty much
> obligatory even for plain old internet web apps because of drops in
> connection or the plain fact a connection can become slow.
>
> I used streamsockets in my Pharo to Python bridge (Atlas) because the
> execution was not necessary synchronous , I was sending Python command to a
> 3d application from Pharo and I had to make sure that the bridge was
> working even in the case of a command that could take hours to execute like
> a rendering process.
>

And others are finding similar results...
"Inter-process communication is a (surprisingly) effective way to
couple two programming languages "
R into Go...  http://user2015.math.aau.dk/presentations/236.pdf

cheers -ben


Re: [Pharo-users] Exchanging information between 2 pharo applications (2 images running on two different computers)

2017-11-02 Thread Denis Kudriashov
To load such code switch to old compiler in settings browser. It supports
old FFI syntax. Then you can manually adopt all ffi calls to UFFI and
commit new version.

2017-10-29 15:09 GMT+01:00 Paulo R. Dellani <dell...@pobox.com>:

> Dear all,
>
> I would like to give ZeroMQ a try in Smalltalk, but am unable to
> load it on a new image successfully. In Pharo 5, I loaded the package
> ConfigurationOfZeroMQ from the repository in smalltalkhub
> <http://smalltalkhub.com/#%21/%7Epanuw/zeromq> and
> evaluated the following to load the code:
>
> ConfigurationOfZeroMQ loadBleedingEdge
>
> It seems to load everything well, but when I try to look at the source
> code of the methods that call the C routines from libzmq using the
> system browser, the system exhibits the following error message:
>
> UndefinedObject(Object)>>doesNotUnderstand: #keywords
> RBFFICallPragma(RBPragmaNode)>>selectorParts
> RubSHTextStylerST80(SHRBTextStyler)>>visitPragmaNode:
> RBFFICallPragma(RBPragmaNode)>>acceptVisitor:
> RubSHTextStylerST80(SHRBTextStyler)>>visitNode:
> [ :each | self visitNode: each ] in RubSHTextStylerST80>>visitMethodNode:
> in Block: [ :each | self visitNode: each ]
> OrderedCollection>>do:
>
> (its a long stack, cutting here)
>
> When loading ZeroMQ on Pharo 6, a window pops-up with the title
> 'Syntax Error: Literal constant expected' showing the source code
> of a method defining a call to a routine from a C library:
>
> apiDeleteDC: aHDC
>  bool 'DeleteDC' (Win32HDC)
> module:'gdi32.dll'>
> ^self externalCallFailed
>
> If I update the syntax, re-writing the code above as
>
> apiDeleteDC: aHDC
> ^self ffiCall: #( bool DeleteDC (Win32HDC aHDC) ) module:'gdi32.dll'
>
> the compiler accepts it and the process can go on, but eventually
> the system will become unstable...
>
> Any ideas on how to solve this problems? Is this syntax still supported
> in Pharo5 & 6?
>
> Cheers,
>
> Paulo
>
> On 10/25/2017 03:47 PM, Sebastian Heidbrink via Pharo-users wrote:
>
> ForwardedMessage.eml
>
> Subject:
> Re: [Pharo-users] Exchanging information between 2 pharo applications (2
> images running on two different computers)
>
> From:
> Sebastian Heidbrink <shei...@yahoo.de> <shei...@yahoo.de>
>
> Date:
> 10/25/2017 03:47 PM
>
> To:
> pharo-users@lists.pharo.org
> Hi Cederik,
>
> you should have a look at http://smalltalkhub.com/#!/~panuw/zeromq
> ZeroMQ is a networking library. Nice thing about it is that all the
> networking related workload is dealt with in a second process. That can
> save you some resources within Smalltalk.
>
>
>


Re: [Pharo-users] Exchanging information between 2 pharo applications (2 images running on two different computers)

2017-10-29 Thread Paulo R. Dellani
well, I downloaded the .mcz package
<http://smalltalkhub.com/mc/panuw/zeromq/main/ZeroMQ-PanuWetterstrand.31.mcz>,
unzipped it and changed the
source code accordingly using a text editor (Smalltalkers can use
text editors to edit code too!). Later on I could successfully file-in
the file in a new Pharo 6 image. The code need more changes to work,
however. Lets see how long it takes to get a few ZeroMQ examples
running. I will publish my "fork".

Cheers,

Paulo

On 10/29/2017 03:09 PM, Paulo R. Dellani wrote:
> Dear all,
>
> I would like to give ZeroMQ a try in Smalltalk, but am unable to
> load it on a new image successfully. In Pharo 5, I loaded the package
> ConfigurationOfZeroMQ from therepository in smalltalkhub
> <http://smalltalkhub.com/#%21/%7Epanuw/zeromq> and
> evaluated the following to load the code:
>
> ConfigurationOfZeroMQ loadBleedingEdge
>
> It seems to load everything well, but when I try to look at the source
> code of the methods that call the C routines from libzmq using the
> system browser, the system exhibits the following error message:
>
> UndefinedObject(Object)>>doesNotUnderstand: #keywords
> RBFFICallPragma(RBPragmaNode)>>selectorParts
> RubSHTextStylerST80(SHRBTextStyler)>>visitPragmaNode:
> RBFFICallPragma(RBPragmaNode)>>acceptVisitor:
> RubSHTextStylerST80(SHRBTextStyler)>>visitNode:
> [ :each | self visitNode: each ] in
> RubSHTextStylerST80>>visitMethodNode: in Block: [ :each | self
> visitNode: each ]
> OrderedCollection>>do:
>
> (its a long stack, cutting here)
>
> When loading ZeroMQ on Pharo 6, a window pops-up with the title
> 'Syntax Error: Literal constant expected' showing the source code
> of a method defining a call to a routine from a C library:
>
> apiDeleteDC: aHDC
>      bool 'DeleteDC' (Win32HDC)
> module:'gdi32.dll'>
>     ^self externalCallFailed
>
> If I update the syntax, re-writing the code above as
>
> apiDeleteDC: aHDC
>     ^self ffiCall: #( bool DeleteDC (Win32HDC aHDC) ) module:'gdi32.dll'
>
> the compiler accepts it and the process can go on, but eventually
> the system will become unstable...
>
> Any ideas on how to solve this problems? Is this syntax still supported
> in Pharo5 & 6?
>
> Cheers,
>
> Paulo
>
> On 10/25/2017 03:47 PM, Sebastian Heidbrink via Pharo-users wrote:
>> ForwardedMessage.eml
>>
>> Subject:
>> Re: [Pharo-users] Exchanging information between 2 pharo applications
>> (2 images running on two different computers)
>> From:
>> Sebastian Heidbrink <shei...@yahoo.de>
>> Date:
>> 10/25/2017 03:47 PM
>>
>> To:
>> pharo-users@lists.pharo.org
>>
>>
>> Hi Cederik,
>>
>> you should have a look at http://smalltalkhub.com/#!/~panuw/zeromq
>> ZeroMQ is a networking library. Nice thing about it is that all the
>> networking related workload is dealt with in a second process. That
>> can save you some resources within Smalltalk.
>



Re: [Pharo-users] Exchanging information between 2 pharo applications (2 images running on two different computers)

2017-10-29 Thread Paulo R. Dellani
Dear all,

I would like to give ZeroMQ a try in Smalltalk, but am unable to
load it on a new image successfully. In Pharo 5, I loaded the package
ConfigurationOfZeroMQ from therepository in smalltalkhub
<http://smalltalkhub.com/#%21/%7Epanuw/zeromq> and
evaluated the following to load the code:

ConfigurationOfZeroMQ loadBleedingEdge

It seems to load everything well, but when I try to look at the source
code of the methods that call the C routines from libzmq using the
system browser, the system exhibits the following error message:

UndefinedObject(Object)>>doesNotUnderstand: #keywords
RBFFICallPragma(RBPragmaNode)>>selectorParts
RubSHTextStylerST80(SHRBTextStyler)>>visitPragmaNode:
RBFFICallPragma(RBPragmaNode)>>acceptVisitor:
RubSHTextStylerST80(SHRBTextStyler)>>visitNode:
[ :each | self visitNode: each ] in
RubSHTextStylerST80>>visitMethodNode: in Block: [ :each | self
visitNode: each ]
OrderedCollection>>do:

(its a long stack, cutting here)

When loading ZeroMQ on Pharo 6, a window pops-up with the title
'Syntax Error: Literal constant expected' showing the source code
of a method defining a call to a routine from a C library:

apiDeleteDC: aHDC
     bool 'DeleteDC' (Win32HDC)
module:'gdi32.dll'>
    ^self externalCallFailed

If I update the syntax, re-writing the code above as

apiDeleteDC: aHDC
    ^self ffiCall: #( bool DeleteDC (Win32HDC aHDC) ) module:'gdi32.dll'

the compiler accepts it and the process can go on, but eventually
the system will become unstable...

Any ideas on how to solve this problems? Is this syntax still supported
in Pharo5 & 6?

Cheers,

Paulo

On 10/25/2017 03:47 PM, Sebastian Heidbrink via Pharo-users wrote:
> ForwardedMessage.eml
>
> Subject:
> Re: [Pharo-users] Exchanging information between 2 pharo applications
> (2 images running on two different computers)
> From:
> Sebastian Heidbrink <shei...@yahoo.de>
> Date:
> 10/25/2017 03:47 PM
>
> To:
> pharo-users@lists.pharo.org
>
>
> Hi Cederik,
>
> you should have a look at http://smalltalkhub.com/#!/~panuw/zeromq
> ZeroMQ is a networking library. Nice thing about it is that all the
> networking related workload is dealt with in a second process. That
> can save you some resources within Smalltalk.



Re: [Pharo-users] Exchanging information between 2 pharo applications (2 images running on two different computers)

2017-10-27 Thread Cédrick Béler

> 
> Existing implementations out there seems to uses whatever nodes on the 
> network to replicate the information.
> 
> Yes, because that makes them decentralized :)

Yes :)

But couldn't we limit the decentralized networks to some nodes (my node + nodes 
of persons/organization I trust) + eventually node they trusts.

I have the feeling that limiting the networks would simplify the implementation 
cost as the underlying cryptographic system (I have a very naive understanding 
of such systems but I know I need them to sign/crypt information).

I have no idea of a minimal node number that is acceptable to do content 
addressing. 

>  
> 
> I’d like to control nodes where it is replicated. My nodes (all my app 
> instances + nodes of person I’m exchanging information with + eventually 
> friend of friend).
> 
> We've done recent work on capability-based content adressing, but, first it's 
> very slow (so you use a two level cryptosystem: the crypted header contains 
> the key to decrypt the content, and the crypted header can only be decrypted 
> if your private key has the right level of capabilities on the data item.

Interesting !  I need to get more knowledge on that. BTW, I found these 
introduction courses well done on cryptography in information theory 
(https://khanacademy.org/computing/computer-science 
)

Just thinking loud:

I don’t actually need a quick implementation as the default is to have not 
synced version that get synchronized on opportunistic connection.

What if each node has by default private keys and all public key of the 
external node I have relation with ?
Wouldn’t it be simpler ?

To prototype stuff, I think I can consider naive crypto and even do symmetric 
cryptography (and use Cryptography package or NaCL binding). 
I think I’ll do a very naive approach to sign and encrypt. If you know some 
existing applications that could help, please, let me know.


>  
> 
> What hash function would you use ?
> 
> Anything that is fast, bonus points if it uses CPU special instructions (that 
> you can't use from Pharo, of course ;)), and has the right cryptographic 
> properties. Unless you go into a specific cryptosystem, I'd say that it is 
> not important.

:)   ok

>  
> 
> To get something compatible with ipfs, I’d need something like: 
> https://github.com/multiformats/multihash 
>  
> It looks to me quite universal as self describing. But any (existing) hash 
> method compatible with content hashing would do the job.
> 
> Interesting, but it looks like a minor issue in the overall scheme. Makes 
> some of your system robust to evolution in the hash used, but, since first 
> bytes are not well distributed, can you use it safely to build a multi-hash 
> function system? Probably not.

Yes  I agree. 

One idea was to use only ipfs for public information shared with everybody 
(even outside of nodes I have relation with). Clearly, not a central point.

>  
> 
> 
>> I wouldn't be against a slightly higher granularity when dealing with object 
>> transfers, however.
> 
> You mean at the pharo level ? Higher granularity means having more control on 
> the exchange/merge ?
> 
> No, just that the content-based address scheme is costly... and that a 
> practical implementation would probably look to provide addresses only to 
> large enough entities (a page containing objects, for example, or a large 
> objects containing smaller ones). So that you donc create an address for each 
> character of the string object describing the name of a person, say).


Oh ok. I think this is how I was seeing it… says I exchange my phone number 
with somebody, the content hashed would be the full information (full content + 
version number + (maybe) its model hash + its geolocalized timestamp).

Thanks a lot for the exchange,

Cédrick


> 
> Regards,
> 
> Thierry
>  
> 
> Cheers,
> 
> Cédrick
> 



Re: [Pharo-users] Exchanging information between 2 pharo applications (2 images running on two different computers)

2017-10-27 Thread Thierry Goubier
2017-10-27 11:28 GMT+02:00 Cédrick Béler :

>
> Hi Cedric,
>
> a short answer: some of what you're trying to do has been traditionnally
> handled by object databases - multiple images retrieving and updating
> objects on a central store ensuring lots of good properties : see Gemstone.
>
>
> Yes , I’d like to avoid this centralized approach.
>

I mean that they have already some of the mechanisms in place, even if
centralized.


>
>
> Another answer, since you're looking at content-addressable distributed
> file systems. You can resolve the offline mode with object duplications
> (duplicate all objects in the images using them), and, when coming back
> online, have a merge approach to reconcile changes between versions of
> shared objects. Content-based hashes as identifiers in a distributed store
> have very nice properties for that purpose, because, if image C has
> modified object 0xcdaff3, then that object has in fact become object
> 0xee345d for that image (and the unmodified object is still 0xcdaff3 for
> images A and B).
>
>
> You nailed it. This is what I’d like to reproduce.
>
> Existing implementations out there seems to uses whatever nodes on the
> network to replicate the information.
>

Yes, because that makes them decentralized :)


>
> I’d like to control nodes where it is replicated. My nodes (all my app
> instances + nodes of person I’m exchanging information with + eventually
> friend of friend).
>

We've done recent work on capability-based content adressing, but, first
it's very slow (so you use a two level cryptosystem: the crypted header
contains the key to decrypt the content, and the crypted header can only be
decrypted if your private key has the right level of capabilities on the
data item.


>
> What hash function would you use ?
>

Anything that is fast, bonus points if it uses CPU special instructions
(that you can't use from Pharo, of course ;)), and has the right
cryptographic properties. Unless you go into a specific cryptosystem, I'd
say that it is not important.


>
> To get something compatible with ipfs, I’d need something like:
> https://github.com/multiformats/multihash
> It looks to me quite universal as self describing. But any (existing) hash
> method compatible with content hashing would do the job.
>

Interesting, but it looks like a minor issue in the overall scheme. Makes
some of your system robust to evolution in the hash used, but, since first
bytes are not well distributed, can you use it safely to build a multi-hash
function system? Probably not.


>
>
> I wouldn't be against a slightly higher granularity when dealing with
> object transfers, however.
>
>
> You mean at the pharo level ? Higher granularity means having more control
> on the exchange/merge ?
>

No, just that the content-based address scheme is costly... and that a
practical implementation would probably look to provide addresses only to
large enough entities (a page containing objects, for example, or a large
objects containing smaller ones). So that you donc create an address for
each character of the string object describing the name of a person, say).

Regards,

Thierry


>
> Cheers,
>
> Cédrick
>


Re: [Pharo-users] Exchanging information between 2 pharo applications (2 images running on two different computers)

2017-10-27 Thread Cédrick Béler
> 
> Hi Cedric,
> 
> a short answer: some of what you're trying to do has been traditionnally 
> handled by object databases - multiple images retrieving and updating objects 
> on a central store ensuring lots of good properties : see Gemstone.

Yes , I’d like to avoid this centralized approach.

> 
> Another answer, since you're looking at content-addressable distributed file 
> systems. You can resolve the offline mode with object duplications (duplicate 
> all objects in the images using them), and, when coming back online, have a 
> merge approach to reconcile changes between versions of shared objects. 
> Content-based hashes as identifiers in a distributed store have very nice 
> properties for that purpose, because, if image C has modified object 
> 0xcdaff3, then that object has in fact become object 0xee345d for that image 
> (and the unmodified object is still 0xcdaff3 for images A and B).

You nailed it. This is what I’d like to reproduce.

Existing implementations out there seems to uses whatever nodes on the network 
to replicate the information.

I’d like to control nodes where it is replicated. My nodes (all my app 
instances + nodes of person I’m exchanging information with + eventually friend 
of friend).

What hash function would you use ?

To get something compatible with ipfs, I’d need something like: 
https://github.com/multiformats/multihash 
 
It looks to me quite universal as self describing. But any (existing) hash 
method compatible with content hashing would do the job.


> I wouldn't be against a slightly higher granularity when dealing with object 
> transfers, however.

You mean at the pharo level ? Higher granularity means having more control on 
the exchange/merge ?

Cheers,

Cédrick

Re: [Pharo-users] Exchanging information between 2 pharo applications (2 images running on two different computers)

2017-10-27 Thread Thierry Goubier
Hi Cedric,

a short answer: some of what you're trying to do has been traditionnally
handled by object databases - multiple images retrieving and updating
objects on a central store ensuring lots of good properties : see Gemstone.

Another answer, since you're looking at content-addressable distributed
file systems. You can resolve the offline mode with object duplications
(duplicate all objects in the images using them), and, when coming back
online, have a merge approach to reconcile changes between versions of
shared objects. Content-based hashes as identifiers in a distributed store
have very nice properties for that purpose, because, if image C has
modified object 0xcdaff3, then that object has in fact become object
0xee345d for that image (and the unmodified object is still 0xcdaff3 for
images A and B).

I wouldn't be against a slightly higher granularity when dealing with
object transfers, however.

Regards,

Thierry

2017-10-27 10:43 GMT+02:00 Cédrick Béler :

>
> Nothing complex about two images exchanging messages, its not even complex
> to transmit objects via fuel, you even transmit a debugger or any part of
> the live environment or even make an "internet" of images that join objects
> together. Sky is the limit. Pharo already provides you will all the
> tools/libraries to do this.
>
>
> Yes. That’s why I asked for better practices.
>
>
> A streamsocket (not to be confused with regular sockets) will delay the
> messages (a collection of bytes) until they arrive to the receiver or until
> they have reached the timeout period. Offline mode is pretty much
> obligatory even for plain old internet web apps because of drops in
> connection or the plain fact a connection can become slow.
>
>
> Offline mode is to me of first importance.
>
> Let’s say I have a sets of Pharo app (nodes).
> Each one are independent running on different devices/computers.
>
> I want to exchange information between  them according to some kind of
> contracts and also on connection availability.
>
> What I find different from usual message exchanges between two images is
> that I want to have full control on it. Plus I consider images offline by
> default (meaning two images have different versions of the same info). So
> conflict is the norm.
>
> Also, I don’t want to send message remotely (with behavior), I just want
> to send/share an information and sync them (when possible).
>
> Connection between 2 images can be through a network but eventually
> through a serial connection (usb cable, Bluetooth,...).
>
> So what I try to do as a proto is having connection controlled by my apps
> (I put the app offline (not by switching off wifi but by switching
> logically). I can see nodes availability and activate connexion manually
> then see if conflict resolution is ok, + I log every connecitions changes
> and exchanges).   This is my plans for now but it may change ! ^^
>
>
> I used streamsockets in my Pharo to Python bridge (Atlas) because the
> execution was not necessary synchronous , I was sending Python command to a
> 3d application from Pharo and I had to make sure that the bridge was
> working even in the case of a command that could take hours to execute like
> a rendering process.
>
>
> I’ll look  at stream sockets and mq stuffs.
>
>
> Cheers,
>
> Cédrick
>
>
> One cool trick I did was to send the Python errors back to Pharo and
> trigger them as Pharo's regular MessageNotUnderstood , this is a nice way
> to make sure that you can fix a wrong message after it has been executing
> without going to the image that is executing it.
>
> The limitation with sockets which what every frameworks uses because AFAIK
> they are the only means to communicate remotely is that they are not top
> performance so that mean that you can send long loops but executing
> communication inside long loops will either slow you down considerably or
> simply timeout your socket. Sockets can timeout from both ends if they feel
> that for some reason they lost communication with the other side and
> reached their timeout period. Timeout period is customization.
>
> This is a problem I did not tackle with my implementation because I dont
> think there can be an actual practical solution better than avoiding this
> scenario.
>
> Only shared memory seems to overcome this but it can be used only locally
> and not remotely (aka on same computer) .
>
> On Wed, Oct 25, 2017 at 4:41 PM Cédrick Béler  wrote:
>
>> I had a look and this is not (natively) possible.
>>
>> The idea of the off-line mode would be to delay messages that are sent to
>> the peer until a connection is established.
>>
>> I think I have to try to do it by myself (like having a list of
>> information exchange that wait until a connexion is established).
>>
>> What I try to do is not as complex as two general image exchanging
>> messages on objects (like on TelePharo).
>>
>> I just want a repository of information (mainly a collection of static
>> 

Re: [Pharo-users] Exchanging information between 2 pharo applications (2 images running on two different computers)

2017-10-26 Thread Dimitris Chloupis
Nothing complex about two images exchanging messages, its not even complex
to transmit objects via fuel, you even transmit a debugger or any part of
the live environment or even make an "internet" of images that join objects
together. Sky is the limit. Pharo already provides you will all the
tools/libraries to do this.

A streamsocket (not to be confused with regular sockets) will delay the
messages (a collection of bytes) until they arrive to the receiver or until
they have reached the timeout period. Offline mode is pretty much
obligatory even for plain old internet web apps because of drops in
connection or the plain fact a connection can become slow.

I used streamsockets in my Pharo to Python bridge (Atlas) because the
execution was not necessary synchronous , I was sending Python command to a
3d application from Pharo and I had to make sure that the bridge was
working even in the case of a command that could take hours to execute like
a rendering process.

One cool trick I did was to send the Python errors back to Pharo and
trigger them as Pharo's regular MessageNotUnderstood , this is a nice way
to make sure that you can fix a wrong message after it has been executing
without going to the image that is executing it.

The limitation with sockets which what every frameworks uses because AFAIK
they are the only means to communicate remotely is that they are not top
performance so that mean that you can send long loops but executing
communication inside long loops will either slow you down considerably or
simply timeout your socket. Sockets can timeout from both ends if they feel
that for some reason they lost communication with the other side and
reached their timeout period. Timeout period is customization.

This is a problem I did not tackle with my implementation because I dont
think there can be an actual practical solution better than avoiding this
scenario.

Only shared memory seems to overcome this but it can be used only locally
and not remotely (aka on same computer) .

On Wed, Oct 25, 2017 at 4:41 PM Cédrick Béler  wrote:

> I had a look and this is not (natively) possible.
>
> The idea of the off-line mode would be to delay messages that are sent to
> the peer until a connection is established.
>
> I think I have to try to do it by myself (like having a list of
> information exchange that wait until a connexion is established).
>
> What I try to do is not as complex as two general image exchanging
> messages on objects (like on TelePharo).
>
> I just want a repository of information (mainly a collection of static
> information/data versions) on both peers to be synchronized when a
> connection is established.
>
>
>
>
>
> Le 25 oct. 2017 à 15:31, Denis Kudriashov  a écrit :
>
> What is offline mode?
>
> 2017-10-25 15:10 GMT+02:00 Cédrick Béler :
>
>> Thanks Denis. I will !  I knew I have seen a telephoto component that
>> could help but forgot about it !
>>
>> Do you know if it’s possible to handle offline mode ?
>>
>>
>>
>> Le 25 oct. 2017 à 15:05, Denis Kudriashov  a écrit
>> :
>>
>> Look at Seamless https://github.com/dionisiydk/Seamless.
>>
>> 2017-10-25 14:21 GMT+02:00 Cédrick Béler :
>>
>>> Hi all,
>>>
>>> I want to connect two applications (1 by image, each one on a different
>>> computer) so as as to exchange information (data) between them.
>>>
>>> So my question is about the best (smalltalk) practices to connect two
>>> app/image and exchange data.
>>>
>>> I imagine either with a direct connection through a network (TCP Socket,
>>> Web socket, pure HTTP with Zinc) and/or with a serial connection.
>>> At first, without any « security ». But later, information exchanges
>>> will be encrypted.
>>>
>>> I’ve seen some information on how to use SerialPort, or even FileStream.
>>> I could do it (or at least simulate it with HTTP). What are the other
>>> options ? Socket ?
>>> Do we have P2P libs (I couldn’t find) with eventually discovery features
>>> ?
>>>
>>> Any comment / suggestion / pointers are greatly welcome.
>>>
>>> TIA.
>>>
>>> Cédrick
>>>
>>
>>
>>
>
>


Re: [Pharo-users] Exchanging information between 2 pharo applications (2 images running on two different computers)

2017-10-25 Thread Marten Feldtmann
Am 25.10.2017 um 15:52 schrieb Cédrick Béler:
> Ok.
> 
> I wonder also if Basys is not enough to experiment.
> https://ci.inria.fr/pharo-contribution/view/Books/job/PharoBookWorkInProgress/182/artifact/book-result/BasysNetwork/
> 
> I’ll also try Sebastian suggestion.
> 

ZeroMQ is a wonderful library.

We used it together with Gemstone/s to build an "Event data bus" based
on ZeroMQ ... and with each successful commit our Gemstone/S send events
on this "bus".

On the "bus" several different programs written in different languages
are listening and do some reaction based on the events they were
interested in.

Marten Feldtmann



Re: [Pharo-users] Exchanging information between 2 pharo applications (2 images running on two different computers)

2017-10-25 Thread Cédrick Béler
Ok.

I wonder also if Basys is not enough to experiment.
https://ci.inria.fr/pharo-contribution/view/Books/job/PharoBookWorkInProgress/182/artifact/book-result/BasysNetwork/
 


I’ll also try Sebastian suggestion.


Cheers,

Cédrick

> Le 25 oct. 2017 à 15:47, Denis Kudriashov  a écrit :
> 
> Yes, it is not part of Seamless. 
> 
> 2017-10-25 15:40 GMT+02:00 Cédrick Béler  >:
> I had a look and this is not (natively) possible.
> 
> The idea of the off-line mode would be to delay messages that are sent to the 
> peer until a connection is established. 
> 
> I think I have to try to do it by myself (like having a list of information 
> exchange that wait until a connexion is established).
> 
> What I try to do is not as complex as two general image exchanging messages 
> on objects (like on TelePharo). 
> 
> I just want a repository of information (mainly a collection of static 
> information/data versions) on both peers to be synchronized when a connection 
> is established.
> 
> 
> 
> 
> 
>> Le 25 oct. 2017 à 15:31, Denis Kudriashov > > a écrit :
>> 
>> What is offline mode?
>> 
>> 2017-10-25 15:10 GMT+02:00 Cédrick Béler > >:
>> Thanks Denis. I will !  I knew I have seen a telephoto component that could 
>> help but forgot about it !
>> 
>> Do you know if it’s possible to handle offline mode ?
>> 
>> 
>> 
>>> Le 25 oct. 2017 à 15:05, Denis Kudriashov >> > a écrit :
>>> 
>>> Look at Seamless https://github.com/dionisiydk/Seamless 
>>> . 
>>> 
>>> 2017-10-25 14:21 GMT+02:00 Cédrick Béler >> >:
>>> Hi all, 
>>> 
>>> I want to connect two applications (1 by image, each one on a different 
>>> computer) so as as to exchange information (data) between them.
>>> 
>>> So my question is about the best (smalltalk) practices to connect two 
>>> app/image and exchange data.
>>> 
>>> I imagine either with a direct connection through a network (TCP Socket, 
>>> Web socket, pure HTTP with Zinc) and/or with a serial connection.
>>> At first, without any « security ». But later, information exchanges will 
>>> be encrypted. 
>>> 
>>> I’ve seen some information on how to use SerialPort, or even FileStream.
>>> I could do it (or at least simulate it with HTTP). What are the other 
>>> options ? Socket ? 
>>> Do we have P2P libs (I couldn’t find) with eventually discovery features ?
>>> 
>>> Any comment / suggestion / pointers are greatly welcome.
>>> 
>>> TIA.
>>> 
>>> Cédrick
>>> 
>> 
>> 
> 
> 



Re: [Pharo-users] Exchanging information between 2 pharo applications (2 images running on two different computers)

2017-10-25 Thread Denis Kudriashov
Yes, it is not part of Seamless.

2017-10-25 15:40 GMT+02:00 Cédrick Béler :

> I had a look and this is not (natively) possible.
>
> The idea of the off-line mode would be to delay messages that are sent to
> the peer until a connection is established.
>
> I think I have to try to do it by myself (like having a list of
> information exchange that wait until a connexion is established).
>
> What I try to do is not as complex as two general image exchanging
> messages on objects (like on TelePharo).
>
> I just want a repository of information (mainly a collection of static
> information/data versions) on both peers to be synchronized when a
> connection is established.
>
>
>
>
>
> Le 25 oct. 2017 à 15:31, Denis Kudriashov  a écrit :
>
> What is offline mode?
>
> 2017-10-25 15:10 GMT+02:00 Cédrick Béler :
>
>> Thanks Denis. I will !  I knew I have seen a telephoto component that
>> could help but forgot about it !
>>
>> Do you know if it’s possible to handle offline mode ?
>>
>>
>>
>> Le 25 oct. 2017 à 15:05, Denis Kudriashov  a écrit
>> :
>>
>> Look at Seamless https://github.com/dionisiydk/Seamless.
>>
>> 2017-10-25 14:21 GMT+02:00 Cédrick Béler :
>>
>>> Hi all,
>>>
>>> I want to connect two applications (1 by image, each one on a different
>>> computer) so as as to exchange information (data) between them.
>>>
>>> So my question is about the best (smalltalk) practices to connect two
>>> app/image and exchange data.
>>>
>>> I imagine either with a direct connection through a network (TCP Socket,
>>> Web socket, pure HTTP with Zinc) and/or with a serial connection.
>>> At first, without any « security ». But later, information exchanges
>>> will be encrypted.
>>>
>>> I’ve seen some information on how to use SerialPort, or even FileStream.
>>> I could do it (or at least simulate it with HTTP). What are the other
>>> options ? Socket ?
>>> Do we have P2P libs (I couldn’t find) with eventually discovery features
>>> ?
>>>
>>> Any comment / suggestion / pointers are greatly welcome.
>>>
>>> TIA.
>>>
>>> Cédrick
>>>
>>
>>
>>
>
>


Re: [Pharo-users] Exchanging information between 2 pharo applications (2 images running on two different computers)

2017-10-25 Thread Sebastian Heidbrink via Pharo-users
--- Begin Message ---

Hi Cederik,

you should have a look at http://smalltalkhub.com/#!/~panuw/zeromq
ZeroMQ is a networking library. Nice thing about it is that all the 
networking related workload is dealt with in a second process. That can 
save you some resources within Smalltalk.


There is a lot of documentation around and it should be easy for you to 
dive into this. http://zguide.zeromq.org/page:all


Cheers!
Sebastian



On 2017-10-25 05:21 AM, Cédrick Béler wrote:

Hi all,

I want to connect two applications (1 by image, each one on a 
different computer) so as as to exchange information (data) between them.


So my question is about the best (smalltalk) practices to connect two 
app/image and exchange data.


I imagine either with a direct connection through a network (TCP 
Socket, Web socket, pure HTTP with Zinc) and/or with a serial connection.
At first, without any « security ». But later, information exchanges 
will be encrypted.


I’ve seen some information on how to use SerialPort, or even FileStream.
I could do it (or at least simulate it with HTTP). What are the other 
options ? Socket ?

Do we have P2P libs (I couldn’t find) with eventually discovery features ?

Any comment / suggestion / pointers are greatly welcome.

TIA.

Cédrick



--- End Message ---


Re: [Pharo-users] Exchanging information between 2 pharo applications (2 images running on two different computers)

2017-10-25 Thread Cédrick Béler
I had a look and this is not (natively) possible.

The idea of the off-line mode would be to delay messages that are sent to the 
peer until a connection is established. 

I think I have to try to do it by myself (like having a list of information 
exchange that wait until a connexion is established).

What I try to do is not as complex as two general image exchanging messages on 
objects (like on TelePharo). 

I just want a repository of information (mainly a collection of static 
information/data versions) on both peers to be synchronized when a connection 
is established.




> Le 25 oct. 2017 à 15:31, Denis Kudriashov  a écrit :
> 
> What is offline mode?
> 
> 2017-10-25 15:10 GMT+02:00 Cédrick Béler  >:
> Thanks Denis. I will !  I knew I have seen a telephoto component that could 
> help but forgot about it !
> 
> Do you know if it’s possible to handle offline mode ?
> 
> 
> 
>> Le 25 oct. 2017 à 15:05, Denis Kudriashov > > a écrit :
>> 
>> Look at Seamless https://github.com/dionisiydk/Seamless 
>> . 
>> 
>> 2017-10-25 14:21 GMT+02:00 Cédrick Béler > >:
>> Hi all, 
>> 
>> I want to connect two applications (1 by image, each one on a different 
>> computer) so as as to exchange information (data) between them.
>> 
>> So my question is about the best (smalltalk) practices to connect two 
>> app/image and exchange data.
>> 
>> I imagine either with a direct connection through a network (TCP Socket, Web 
>> socket, pure HTTP with Zinc) and/or with a serial connection.
>> At first, without any « security ». But later, information exchanges will be 
>> encrypted. 
>> 
>> I’ve seen some information on how to use SerialPort, or even FileStream.
>> I could do it (or at least simulate it with HTTP). What are the other 
>> options ? Socket ? 
>> Do we have P2P libs (I couldn’t find) with eventually discovery features ?
>> 
>> Any comment / suggestion / pointers are greatly welcome.
>> 
>> TIA.
>> 
>> Cédrick
>> 
> 
> 



Re: [Pharo-users] Exchanging information between 2 pharo applications (2 images running on two different computers)

2017-10-25 Thread Cédrick Béler
Thanks Denis. I will !  I knew I have seen a telephoto component that could 
help but forgot about it !

Do you know if it’s possible to handle offline mode ?



> Le 25 oct. 2017 à 15:05, Denis Kudriashov  a écrit :
> 
> Look at Seamless https://github.com/dionisiydk/Seamless 
> . 
> 
> 2017-10-25 14:21 GMT+02:00 Cédrick Béler  >:
> Hi all, 
> 
> I want to connect two applications (1 by image, each one on a different 
> computer) so as as to exchange information (data) between them.
> 
> So my question is about the best (smalltalk) practices to connect two 
> app/image and exchange data.
> 
> I imagine either with a direct connection through a network (TCP Socket, Web 
> socket, pure HTTP with Zinc) and/or with a serial connection.
> At first, without any « security ». But later, information exchanges will be 
> encrypted. 
> 
> I’ve seen some information on how to use SerialPort, or even FileStream.
> I could do it (or at least simulate it with HTTP). What are the other options 
> ? Socket ? 
> Do we have P2P libs (I couldn’t find) with eventually discovery features ?
> 
> Any comment / suggestion / pointers are greatly welcome.
> 
> TIA.
> 
> Cédrick
> 



Re: [Pharo-users] Exchanging information between 2 pharo applications (2 images running on two different computers)

2017-10-25 Thread Denis Kudriashov
Look at Seamless https://github.com/dionisiydk/Seamless.

2017-10-25 14:21 GMT+02:00 Cédrick Béler :

> Hi all,
>
> I want to connect two applications (1 by image, each one on a different
> computer) so as as to exchange information (data) between them.
>
> So my question is about the best (smalltalk) practices to connect two
> app/image and exchange data.
>
> I imagine either with a direct connection through a network (TCP Socket,
> Web socket, pure HTTP with Zinc) and/or with a serial connection.
> At first, without any « security ». But later, information exchanges will
> be encrypted.
>
> I’ve seen some information on how to use SerialPort, or even FileStream.
> I could do it (or at least simulate it with HTTP). What are the other
> options ? Socket ?
> Do we have P2P libs (I couldn’t find) with eventually discovery features ?
>
> Any comment / suggestion / pointers are greatly welcome.
>
> TIA.
>
> Cédrick
>


[Pharo-users] Exchanging information between 2 pharo applications (2 images running on two different computers)

2017-10-25 Thread Cédrick Béler
Hi all, 

I want to connect two applications (1 by image, each one on a different 
computer) so as as to exchange information (data) between them.

So my question is about the best (smalltalk) practices to connect two app/image 
and exchange data.

I imagine either with a direct connection through a network (TCP Socket, Web 
socket, pure HTTP with Zinc) and/or with a serial connection.
At first, without any « security ». But later, information exchanges will be 
encrypted. 

I’ve seen some information on how to use SerialPort, or even FileStream.
I could do it (or at least simulate it with HTTP). What are the other options ? 
Socket ? 
Do we have P2P libs (I couldn’t find) with eventually discovery features ?

Any comment / suggestion / pointers are greatly welcome.

TIA.

Cédrick