Well, this would be a pre-release of Atomizer4oc:
This is a web app that connects to CogServer via php telnet. The screenshot is taken from a session of working with OpenCog. All of this is really a visual html/php app that communicates to OpenCog. On the left pane, there is a scheme command prompt where commands are sent to CogServer. Upon each command send, the command output is brought back to the prompt interface, and the right pane visualizer is updated to reflect the current AtomSpace contents. I believe it could be fun communicating to OpenCog this way. Unfortunately, the app has to be installed on a local machine in order for php telnet to communicate to a local CogServer instance which is not visible to the public web. This means having php and web server on a local machine in order to run the app. Does anyone care for a test drive? It works on my machine, but I'd love to see if it works elsewhere. You can download it from here: http://ocog.atspace.cc/atomizer4oc.zip. Unzip it and view the README.md for installation instructions. I'd love to hear bug reports, insights, criticism, or general reviews. And finally, I'd like to hear if the app fulfills criteria for inclusion in the official OpenCog distribution. If it doesn't, I'd like to know what's missing or needs to be changed. If it does, I'm interested in sending a pull request at a place you'd find appropriate. Thank you, - ivan - uto, 21. pro 2021. u 17:26 Linas Vepstas <[email protected]> napisao je: > On Tue, Dec 21, 2021 at 10:05 AM Ivan V. <[email protected]> wrote: > > > > Thank you, Jacques, for your thoughtful response. > > > > I've been experimenting with php for a few hours now. It's exactly as > Linas said, like reading and writing files, completely php native, no > addons. I'll probably go like an ajaxing php script that opens a > connection, sends a command, reads a response, and closes the connection. > Things look promising for now, it is just that little something I'd like to > avoid: mandatory sleeping php for 125 milliseconds (on my machine) to give > a time for getting the response after sending a command. But I'm out of > ideas on how to avoid it. > > Ah. But of course it's never as simple as it seems. > -- conventionally, socket-reads are blocking: the call does not return > until there is something to be read, > -- blocking kills interactivity, so usually people do socket i/o is > done in it's own thread. > -- if you don't like threads, then there are async i/o libraries that > try to avoid this, > -- and it rapidly goes downhill from there, because you have to deal > with things that hang, never return, crash, return only partial > messages, and its a general horror show. > -- I've used one async library in my life, the boost c++ async > library, and it is 100% awful. > > This is why network programming is challenging. > > --linas > > p.s. you don't have to close the cogserver socket after one message, > you can keep it open. > > > > > > - ivan - > > > > uto, 21. pro 2021. u 15:23 Jacques BasaldĂșa <[email protected]> > napisao je: > >> > >> Hi Ivan, > >> > >> Maybe, if you use zeroMQ (there is a PHP version, > https://www.php.net/manual/en/book.zmq.php) you can use the sockets just > like Linas is saying. > >> > >> In Python, the actual code would be: > >> > >> ``` > >> import zmq > >> > >> context = zmq.Context() > >> socket = context.socket(zmq.REQ) > >> socket.connect ("tcp://localhost:17001") > >> > >> socket.send ("(+ 2 2)") > >> message = socket.recv() > >> ``` > >> > >> That requires the server to listen to the tcp socket connection which > is the transport layer of your telnet connection. Telnet itself would be > the application layer and, as Linas says, is probably not necessary. > >> > >> My 2 cents. > >> Jacques. > >> > >> On Tue, Dec 21, 2021 at 8:23 AM Linas Vepstas <[email protected]> > wrote: > >>> > >>> Hi Ivan, > >>> > >>> Some quick remarks about networking. > >>> > >>> -- Using telnet to access the cogserver is wild technology overkill. > >>> Telnet was designed to provide a teletype terminal over the network, > >>> including lots of complex teletype escape sequences. The cogserver > >>> needs exactly zero of that. > >>> > >>> -- the cogserver network interface is extremely low-level. So > >>> low-level, you can't get any lower. It's rock-stupid simple and basic. > >>> You open a socket. A very basic, simple, plain ordinary socket. Then > >>> you read and write characters to it. That's all. That's it. It's not > >>> any harder than opening a file, and reading/writing to that. Uses the > >>> same read/write API that files use. If you know sockets well (and it > >>> seems very few people do) it's about 5-10 lines of code. Or less. > >>> There's absolutely no need for complexity. > >>> > >>> I don't know php well enough, but the pseudocode really should be > >>> ``` > >>> sock = open (locahost, 17001) > >>> write (sock, "(+ 2 2)") > >>> read(sock, buffer) > >>> close(sock) > >>> ``` > >>> Really little or nothing more than that.. > >>> > >>> FWIW, that's my coding philosophy: remove as much complexity as > >>> possible ("but no more"). Kind of everything is guided by that. > >>> > >>> Linas > >>> > >>> > >>> On Mon, Dec 20, 2021 at 6:05 PM Ivan V. <[email protected]> wrote: > >>> > > >>> > I was thinking more in a direction of including some MIT licensed > php telnet library. If I'm on the right path about this, then there is no > need for installing netcat, "only" php and Apache web server. But from your > examples, netcat command prompt seems pretty simple to use. I'm still not > sure about php running native programs, especially receiving an output from > them, including running the whole app directly from the web. > >>> > > >>> > - ivan - > >>> > > >>> > pon, 20. pro 2021. u 23:22 Linas Vepstas <[email protected]> > napisao je: > >>> >> > >>> >> And one more, I hit send too soon. > >>> >> > >>> >> echo -e "scm quiet\n(+ 2 2)\n" |nc -N localhost 17001 > >>> >> > >>> >> The "quiet" mode suppresses the printing of the guile prompts. > >>> >> Unfortunately, the first prompt is always sent :-( > >>> >> > >>> >> -- linas > >>> >> > >>> >> On Mon, Dec 20, 2021 at 4:15 PM Linas Vepstas < > [email protected]> wrote: > >>> >> > > >>> >> > Shoot. I wrote the wrong thing. > >>> >> > Try this: > >>> >> > > >>> >> > echo "(+ 2 2)" |nc -N localhost 17001 > >>> >> > > >>> >> > The -N flag closes the socket after getting the reply, otherwise > it > >>> >> > hangs waiting for more input. > >>> >> > So you'd replace the echo by php print and pipe to command. > >>> >> > > >>> >> > -- Linas > >>> >> > > >>> >> > On Mon, Dec 20, 2021 at 4:10 PM Linas Vepstas < > [email protected]> wrote: > >>> >> > > > >>> >> > > On Mon, Dec 20, 2021 at 3:39 PM Ivan V. <[email protected]> > wrote: > >>> >> > > > > >>> >> > > > Ok, this was fun... > >>> >> > > > > >>> >> > > > I restarted the computer in the meanwhile, deleted the whole > OpenCog, and recloned and rebuilt everything without any problems. This > time I put all the additional assets I needed like cogserver under > `opencog` directory, if that means anything. > >>> >> > > > >>> >> > > You should be able to `git clone` to anywhere at all. And > after > >>> >> > > building, saying `sudo make install` puts everything under the > >>> >> > > `/usr/local` directory. > >>> >> > > > >>> >> > > My guess is that you had old and incompatible clones: you > would have > >>> >> > > to say `git pull` in all repos, to get a self-consistent > version. > >>> >> > > > >>> >> > > > Cogserver is now up and running on port 17001, successfully > communicating to rlwrap telnet. The initial test went fine. > >>> >> > > > > >>> >> > > > Next, the plan is to telnet it from php, and pipe it to html > visualizer, if that's ok. > >>> >> > > > >>> >> > > probably the simplest way to do this is by wrapping php around > netcat. > >>> >> > > Warning, there are two incompatible versions of netcat you can > >>> >> > > install. They are *almost* compatible, but not quite; one needs > an > >>> >> > > extra flag that the other doesn't, else it hangs up too soon. > >>> >> > > > >>> >> > > I have the bsd version installed the package is `netcat-openbsd` > >>> >> > > > >>> >> > > Use it like so: `nc localhost 17001 (+ 2 2)` or `nc localhost > 17001 > >>> >> > > (cog-prt-atomspace)` and so on. > >>> >> > > > >>> >> > > > Wish me luck :) > >>> >> > > > >>> >> > > Good luck! and Merry Christmas, too! > >>> >> > > > >>> >> > > -- linas > >>> >> > > > >>> >> > > > > >>> >> > > > - ivan - > >>> >> > > > > >>> >> > > > pon, 20. pro 2021. u 20:00 Linas Vepstas < > [email protected]> napisao je: > >>> >> > > >> > >>> >> > > >> On Sun, Dec 19, 2021 at 2:11 PM Ivan V. < > [email protected]> wrote: > >>> >> > > >> > > >>> >> > > >> > Hi Linas and others, > >>> >> > > >> > > >>> >> > > >> > Sorry for the delay, I've been busy with my other > projects. Now I tried to install OpenCog, made through several make steps > until my machine started to hang. Tried several times, it always hangs on > the same build step. I guess this is a penalty for having only 4GB on my > machine, right? > >>> >> > > >> > >>> >> > > >> It builds just fine on my six-year-old 1GB laptop (which > cost $200 > >>> >> > > >> when new, so low end from the get-go.). I can even browse > the web > >>> >> > > >> while it's building. > >>> >> > > >> > >>> >> > > >> Open a bug report. describe the problem. > >>> >> > > >> > >>> >> > > >> > And then I tried another option: I installed OpenCog from > here: `https://github.com/opencog/docker` > <https://github.com/opencog/docker>. I tried to follow `README.md` > instructions, ran `./docker-build.sh -a` (the script successfully > completed), but then I got stuck starting cogserver because the > `cogserver/build/` folder is empty. > >>> >> > > >> > >>> >> > > >> The docker containers are possibly stale. > >>> >> > > >> > >>> >> > > >> --linas > >>> >> > > >> > >>> >> > > >> -- > >>> >> > > >> You received this message because you are subscribed to the > Google Groups "opencog" group. > >>> >> > > >> To unsubscribe from this group and stop receiving emails > from it, send an email to [email protected]. > >>> >> > > >> To view this discussion on the web visit > https://groups.google.com/d/msgid/opencog/CAHrUA34a2O624WCfk821t3wqUEYeg0WM%2B571AOKxGG2cCUB_xA%40mail.gmail.com > . > >>> >> > > > > >>> >> > > > -- > >>> >> > > > You received this message because you are subscribed to the > Google Groups "opencog" group. > >>> >> > > > To unsubscribe from this group and stop receiving emails from > it, send an email to [email protected]. > >>> >> > > > To view this discussion on the web visit > https://groups.google.com/d/msgid/opencog/CAB5%3Dj6WYVbV14e4xZPWYJm-iEnzNdi21YXQK%2BbmWRa5f%2B29j4w%40mail.gmail.com > . > >>> >> > > > >>> >> > > > >>> >> > > > >>> >> > > -- > >>> >> > > Patrick: Are they laughing at us? > >>> >> > > Sponge Bob: No, Patrick, they are laughing next to us. > >>> >> > > >>> >> > > >>> >> > > >>> >> > -- > >>> >> > Patrick: Are they laughing at us? > >>> >> > Sponge Bob: No, Patrick, they are laughing next to us. > >>> >> > >>> >> > >>> >> > >>> >> -- > >>> >> Patrick: Are they laughing at us? > >>> >> Sponge Bob: No, Patrick, they are laughing next to us. > >>> >> > >>> >> -- > >>> >> You received this message because you are subscribed to the Google > Groups "opencog" group. > >>> >> To unsubscribe from this group and stop receiving emails from it, > send an email to [email protected]. > >>> >> To view this discussion on the web visit > https://groups.google.com/d/msgid/opencog/CAHrUA35jXYy0AgLtum%3DvynpN%3DjvTH0r%2Bv5NPnBWncMVAxaKjtw%40mail.gmail.com > . > >>> > > >>> > -- > >>> > You received this message because you are subscribed to the Google > Groups "opencog" group. > >>> > To unsubscribe from this group and stop receiving emails from it, > send an email to [email protected]. > >>> > To view this discussion on the web visit > https://groups.google.com/d/msgid/opencog/CAB5%3Dj6XaSAiommr7aLKHs880h7G_yEY0Nx2QKTismCoZRzw9nw%40mail.gmail.com > . > >>> > >>> > >>> > >>> -- > >>> Patrick: Are they laughing at us? > >>> Sponge Bob: No, Patrick, they are laughing next to us. > >>> > >>> -- > >>> You received this message because you are subscribed to the Google > Groups "opencog" group. > >>> To unsubscribe from this group and stop receiving emails from it, send > an email to [email protected]. > >>> To view this discussion on the web visit > https://groups.google.com/d/msgid/opencog/CAHrUA37G6CUQrdHQpwMS%3DkmM3StUZNCrUrmsVohr-sd51ZSsgA%40mail.gmail.com > . > >> > >> -- > >> You received this message because you are subscribed to the Google > Groups "opencog" group. > >> To unsubscribe from this group and stop receiving emails from it, send > an email to [email protected]. > >> To view this discussion on the web visit > https://groups.google.com/d/msgid/opencog/CA%2B_pmb6BgsVcp%2B9HuYY%3Dmm-%2BwNjmf7aX7aBLK1ZJ1R%3DxwZpe-Q%40mail.gmail.com > . > > > > -- > > You received this message because you are subscribed to the Google > Groups "opencog" group. > > To unsubscribe from this group and stop receiving emails from it, send > an email to [email protected]. > > To view this discussion on the web visit > https://groups.google.com/d/msgid/opencog/CAB5%3Dj6XmuXC81OSgOBfa0-VWJ4TWKi80biNHbJ%3DBwa%3D1SXyYQQ%40mail.gmail.com > . > > > > -- > Patrick: Are they laughing at us? > Sponge Bob: No, Patrick, they are laughing next to us. > > -- > You received this message because you are subscribed to the Google Groups > "opencog" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/opencog/CAHrUA34AdmAmWMxNL4dXD4ReNgcrybOiF8JXQgv2Aa7r_On09Q%40mail.gmail.com > . > -- You received this message because you are subscribed to the Google Groups "opencog" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/opencog/CAB5%3Dj6VmwrQg3YzfSxyCJLM2vh79_Fc8icc6oP3n50mDKokZdA%40mail.gmail.com.
