@@ -4,7 +4,7 @@ name: nanomsg | |||
title: Nanomsg FFI Bindings for PicoLisp | |||
--- | |||
You can [get it on GitHub](https://github.com/aw/picolisp-nanomsg). | |||
You can [get it on my Git server](https://git.a1w.ca/aw/picolisp-nanomsg). | |||
# PicoLisp-Nanomsg Explanation | |||
@@ -4,7 +4,7 @@ name: json | |||
title: JSON Encoder/Decoder for PicoLisp | |||
--- | |||
You can [get it on GitHub](https://github.com/aw/picolisp-json). | |||
You can [get it on my Git server](https://git.a1w.ca/aw/picolisp-json). | |||
This library can be used to parse and serialize (encode/decode) JSON strings in [PicoLisp](http://picolisp.com/). | |||
@@ -12,7 +12,7 @@ This library can be used to parse and serialize (encode/decode) JSON strings in | |||
# Explanation: JSON Encoder/Decoder for PicoLisp | |||
This document provides a short walkthrough of the source code for the [PicoLisp-JSON](https://github.com/aw/picolisp-json.git) encoder/decoder. | |||
This document provides a short walkthrough of the source code for the [PicoLisp-JSON](https://git.a1w.ca/aw/picolisp-json.git) encoder/decoder. | |||
It's split into a few sections for easier reading: | |||
@@ -24,7 +24,7 @@ It's split into a few sections for easier reading: | |||
Make sure you read the [README](README.md) to get an idea of what this library does. | |||
Also, I recommend you read my [Nanomsg Explanation](https://github.com/aw/picolisp-nanomsg/blob/master/EXPLAIN.md) for additional PicoLisp tips and ideas. | |||
Also, I recommend you read my [Nanomsg Explanation](https://git.a1w.ca/aw/picolisp-nanomsg/blob/master/EXPLAIN.md) for additional PicoLisp tips and ideas. | |||
# Global variables | |||
@@ -4,7 +4,7 @@ name: https | |||
title: HTTP(S) client for PicoLisp | |||
--- | |||
You can [get it on GitHub](https://github.com/aw/picolisp-https). | |||
You can [get it on my Git server](https://git.a1w.ca/aw/picolisp-https). | |||
This library can be used to make HTTP and HTTPS requests in [PicoLisp](http://picolisp.com), with support for authentication. | |||
@@ -12,12 +12,12 @@ This library can be used to make HTTP and HTTPS requests in [PicoLisp](http://pi | |||
# Explanation: HTTP(S) client for PicoLisp | |||
This document provides a short walkthrough of the source code for the [PicoLisp-HTTPS](https://github.com/aw/picolisp-https.git) client. | |||
This document provides a short walkthrough of the source code for the [PicoLisp-HTTPS](https://git.a1w.ca/aw/picolisp-https.git) client. | |||
I won't cover concepts which were covered in previous source code explanations. You can read them here: | |||
* [Nanomsg Explanation](https://github.com/aw/picolisp-nanomsg/blob/master/EXPLAIN.md) | |||
* [JSON Explanation](https://github.com/aw/picolisp-json/blob/master/EXPLAIN.md) | |||
* [Nanomsg Explanation](https://git.a1w.ca/aw/picolisp-nanomsg/blob/master/EXPLAIN.md) | |||
* [JSON Explanation](https://git.a1w.ca/aw/picolisp-json/blob/master/EXPLAIN.md) | |||
This document is split into a few sections: | |||
@@ -184,7 +184,7 @@ Let's talk about danger first. In this function, we uses [setq](http://software- | |||
The [lisp](http://software-lab.de/doc/refL.html#lisp) function is quite special. When using `(native)` for C calls, certain functions require a callback as an argument, or "function pointer" (Google it). | |||
The `(ne-set-server-auth)` function requires a callback as its second argument, so we create one using `(lisp)`. If you've read the [JSON explanations](https://github.com/aw/picolisp-json/blob/master/EXPLAIN.md#make-array), you'll quickly notice there's an anonymous function in this `(lisp)` call. It essentially sends 5 arguments (which are numbers) to the `(do-auth)` function, under the name `ne_auth_creds`. | |||
The `(ne-set-server-auth)` function requires a callback as its second argument, so we create one using `(lisp)`. If you've read the [JSON explanations](https://git.a1w.ca/aw/picolisp-json/blob/master/EXPLAIN.md#make-array), you'll quickly notice there's an anonymous function in this `(lisp)` call. It essentially sends 5 arguments (which are numbers) to the `(do-auth)` function, under the name `ne_auth_creds`. | |||
Here's the C code to give a better picture: | |||
@@ -210,7 +210,7 @@ The main requirement is to set the `username`, `password`, and return an integer | |||
Attempt ) | |||
``` | |||
Whoa wait, what's that `@` thing doing there? Remember we talked about the [@ result](https://github.com/aw/picolisp-nanomsg/blob/master/EXPLAIN.md#nn_symbols)? Well, this is **NOT** that. | |||
Whoa wait, what's that `@` thing doing there? Remember we talked about the [@ result](https://git.a1w.ca/aw/picolisp-nanomsg/blob/master/EXPLAIN.md#nn_symbols)? Well, this is **NOT** that. | |||
This is actually a [transient symbol](http://software-lab.de/doc/native.html#libs) which refers to the main program (PicoLisp). | |||
@@ -4,7 +4,7 @@ name: bcrypt | |||
title: bcrypt hashing for PicoLisp | |||
--- | |||
You can [get it on GitHub](https://github.com/aw/picolisp-bcrypt). | |||
You can [get it on my Git server](https://git.a1w.ca/aw/picolisp-bcrypt). | |||
This library can be used to hash strings (ex: passwords) using bcrypt in [PicoLisp](http://picolisp.com/). | |||
@@ -4,7 +4,7 @@ name: unit | |||
title: Unit Testing framework for PicoLisp | |||
--- | |||
You can [get it on GitHub](https://github.com/aw/picolisp-unit). | |||
You can [get it on my Git server](https://git.a1w.ca/aw/picolisp-unit). | |||
This library can be used for Unit Testing your [PicoLisp](http://picolisp.com/) code. | |||
@@ -12,13 +12,13 @@ This library can be used for Unit Testing your [PicoLisp](http://picolisp.com/) | |||
# Explanation: Unit Testing framework for PicoLisp | |||
This document provides a short walkthrough of the source code for the [PicoLisp-Unit](https://github.com/aw/picolisp-unit) testing framework. | |||
This document provides a short walkthrough of the source code for the [PicoLisp-Unit](https://git.a1w.ca/aw/picolisp-unit) testing framework. | |||
I won't cover concepts which were discussed in previous source code explanations. You can read them here: | |||
* [Nanomsg Explanation](https://github.com/aw/picolisp-nanomsg/blob/master/EXPLAIN.md) | |||
* [JSON Explanation](https://github.com/aw/picolisp-json/blob/master/EXPLAIN.md) | |||
* [HTTPS Explanation](https://github.com/aw/picolisp-https/blob/master/EXPLAIN.md) | |||
* [Nanomsg Explanation](https://git.a1w.ca/aw/picolisp-nanomsg/blob/master/EXPLAIN.md) | |||
* [JSON Explanation](https://git.a1w.ca/aw/picolisp-json/blob/master/EXPLAIN.md) | |||
* [HTTPS Explanation](https://git.a1w.ca/aw/picolisp-https/blob/master/EXPLAIN.md) | |||
This document is split into a few sections: | |||
@@ -200,4 +200,4 @@ This library introduces simple wrappers around those predicates, which then call | |||
This one is quite simple, all it does is check if `Expected` is equal to `Result`. | |||
The [other assertions](https://github.com/aw/picolisp-unit/blob/master/README.md#assertions-table) are quite similar and seem to cover most test cases. I've considered adding opposite tests such as `refute`, but I've rarely found a need for them as there are alternate approaches. | |||
The [other assertions](https://git.a1w.ca/aw/picolisp-unit/blob/master/README.md#assertions-table) are quite similar and seem to cover most test cases. I've considered adding opposite tests such as `refute`, but I've rarely found a need for them as there are alternate approaches. |
@@ -4,7 +4,7 @@ name: semver | |||
title: SemVer for PicoLisp | |||
--- | |||
You can [get it on GitHub](https://github.com/aw/picolisp-semver). | |||
You can [get it on my Git server](https://git.a1w.ca/aw/picolisp-semver). | |||
This library can validate and compare **Major.Minor.Patch** versions (ex: `"1.0.0"`). | |||
It ignores pre-release, build, metadata, and special extensions (ex: `.alpha.1`). | |||
@@ -4,7 +4,7 @@ name: json-v3 | |||
title: JSON Encoder/Decoder in pure PicoLisp | |||
--- | |||
You can [get it on GitHub](https://github.com/aw/picolisp-json). | |||
You can [get it on my Git server](https://git.a1w.ca/aw/picolisp-json). | |||
This library can be used to parse and serialize (encode/decode) JSON strings in [PicoLisp](http://picolisp.com/). | |||
@@ -12,9 +12,9 @@ This library can be used to parse and serialize (encode/decode) JSON strings in | |||
# Explanation: JSON Encoder/Decoder in pure PicoLisp | |||
This document provides a short walkthrough of the source code for the [PicoLisp-JSON](https://github.com/aw/picolisp-json.git) encoder/decoder. | |||
This document provides a short walkthrough of the source code for the [PicoLisp-JSON](https://git.a1w.ca/aw/picolisp-json.git) encoder/decoder. | |||
**Note:** This document covers `v3` of the JSON library. To view the older (C/ffi bindings) version [click here](https://github.com/aw/picolisp-json/blob/v2.2.0/EXPLAIN.md). | |||
**Note:** This document covers `v3` of the JSON library. To view the older (C/ffi bindings) version [click here](https://git.a1w.ca/aw/picolisp-json/blob/v2.2.0/EXPLAIN.md). | |||
It's split into a few sections for easier reading: | |||
@@ -227,4 +227,4 @@ The previously tokenized JSON string would end up like this: | |||
## encoding JSON | |||
The code for encoding JSON strings hasn't changed, so feel free to [read about it here](https://github.com/aw/picolisp-json/blob/master/EXPLAIN.md#encoding-json). | |||
The code for encoding JSON strings hasn't changed, so feel free to [read about it here](https://git.a1w.ca/aw/picolisp-json/blob/master/EXPLAIN.md#encoding-json). |
@@ -4,11 +4,11 @@ name: awscurl | |||
title: PicoLisp AWS CLI tool using OpenSSL and Curl | |||
--- | |||
You can [get it on GitHub](https://github.com/aw/picolisp-awscurl). | |||
You can [get it on my Git server](https://git.a1w.ca/aw/picolisp-awscurl). | |||
This command line tool can be used to sign [AWS Signature Version 4](https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html) requests and make calls to various AWS APIs. | |||
[](https://github.com/aw/picolisp-awscurl) [](https://github.com/aw/picolisp-unit.git)  | |||
[](https://git.a1w.ca/aw/picolisp-awscurl) [](https://github.com/aw/picolisp-unit.git)  | |||
1. [Requirements](#requirements) | |||
2. [Usage](#usage) | |||
@@ -16,7 +16,7 @@ This command line tool can be used to sign [AWS Signature Version 4](https://doc | |||
# Requirements | |||
* `picolisp`: 32-bit or 64-bit `v3.1.11+`, tested up to PicoLisp `v20.6.29`, [see test runs](https://github.com/aw/picolisp-awscurl/actions/) | |||
* `picolisp`: 32-bit or 64-bit `v3.1.11+`, tested up to PicoLisp `v20.6.29`, [see test runs](https://git.a1w.ca/aw/picolisp-awscurl/actions/) | |||
* `libcrypto.so`: for using `--native` functions with PicoLisp `v17.12+` | |||
* `picolisp-unit`: `v3.0.0+` for testing the library | |||
* `openssl`: `v1.0.0+` for signing and hashing strings | |||
@@ -30,7 +30,7 @@ The file `libawscurl.l` can be included as a library, rather than using the comm | |||
## WARNING | |||
There is currently **no validation** on command line arguments. Be careful the input you provide. [See issue #1](https://github.com/aw/picolisp-awscurl/issues/1) | |||
There is currently **no validation** on command line arguments. Be careful the input you provide. [See issue #1](https://git.a1w.ca/aw/picolisp-awscurl/issues/1) | |||
### Environment variables | |||
@@ -4,10 +4,10 @@ name: action | |||
title: GitHub Action to run 32-bit or 64-bit PicoLisp code | |||
--- | |||
You can [get it on GitHub](https://github.com/aw/picolisp-action) or the [GitHub Marketplace](https://github.com/marketplace/actions/picolisp-action). | |||
You can [get it on my Git server](https://git.a1w.ca/aw/picolisp-action) or the [GitHub Marketplace](https://github.com/marketplace/actions/picolisp-action). | |||
This action downloads, compiles, and globally installs PicoLisp. | |||
It can be used to run PicoLisp code such as [units tests](https://github.com/aw/picolisp-unit). | |||
It can be used to run PicoLisp code such as [units tests](https://git.a1w.ca/aw/picolisp-unit). | |||
 | |||
@@ -35,7 +35,7 @@ It can be used to run PicoLisp code such as [units tests](https://github.com/aw/ | |||
## Example workflow | |||
See the [picolisp-json workflow](https://github.com/aw/picolisp-json/blob/master/.github/workflows/main.yml) for a more detailed usage example. | |||
See the [picolisp-json workflow](https://git.a1w.ca/aw/picolisp-json/blob/master/.github/workflows/main.yml) for a more detailed usage example. | |||
## Code | |||
@@ -4,7 +4,7 @@ name: keyvalue | |||
title: Redis-inspired key/value store written in PicoLisp | |||
--- | |||
You can [get it on GitHub](https://github.com/aw/picolisp-kv). | |||
You can [get it on my Git server](https://git.a1w.ca/aw/picolisp-kv). | |||
This program mimics functionality of a [Redis™](https://redis.io) in-memory database, but is designed specifically for [PicoLisp](https://picolisp.com) applications with optional on-disk persistence and encryption. | |||
@@ -73,7 +73,7 @@ Received data will be returned as-is (list, integer, string, etc). Wrap the resu | |||
-> "12345" | |||
``` | |||
Feel free to observe the example code in [client.l](https://github.com/aw/picolisp-kv/blob/master/client.l). | |||
Feel free to observe the example code in [client.l](https://git.a1w.ca/aw/picolisp-kv/blob/master/client.l). | |||
> **Note**: Using `(kv-send-data)` will send the data to the server and automatically block the client while waiting for a response. | |||
@@ -4,7 +4,7 @@ name: supervisor | |||
title: Unicorn-inspired PicoLisp daemon to spawn and manage worker processes | |||
--- | |||
You can [get it on GitHub](https://github.com/aw/picolisp-supervisor). | |||
You can [get it on my Git server](https://git.a1w.ca/aw/picolisp-supervisor). | |||
This program mimics functionality of [Unicorn](https://yhbt.net/unicorn/), without being limited to HTTP applications. | |||
@@ -4,7 +4,7 @@ name: posixmq | |||
title: POSIX Message Queues library for PicoLisp | |||
--- | |||
You can [get it on GitHub](https://github.com/aw/picolisp-posixmq). | |||
You can [get it on my Git server](https://git.a1w.ca/aw/picolisp-posixmq). | |||
_[POSIX Message Queues](https://man7.org/linux/man-pages/man7/mq_overview.7.html)_ provide a dependency-free mechanism for processes to exchange data in the form of messages. | |||
@@ -26,7 +26,7 @@ This library makes it simple to embed support for _POSIX Message Queues_ in [Pic | |||
The first step is to run the unit tests: `make check` | |||
If those fail, jump to the [TUTORIALS](https://github.com/aw/picolisp-posixmq/blob/master/docs/TUTORIALS.md) section to perform the initial setup and and system check. | |||
If those fail, jump to the [TUTORIALS](https://git.a1w.ca/aw/picolisp-posixmq/blob/master/docs/TUTORIALS.md) section to perform the initial setup and and system check. | |||
If all works well, then your system is ready to use this library. | |||
@@ -61,9 +61,9 @@ The code below illustrates how to use the queue for sending and receiving a mess | |||
# Documentation | |||
Additional usage and reference documentation can be found in [docs/](https://github.com/aw/picolisp-posixmq/blob/master/docs/) | |||
Additional usage and reference documentation can be found in [docs/](https://git.a1w.ca/aw/picolisp-posixmq/blob/master/docs/) | |||
* [TUTORIALS](https://github.com/aw/picolisp-posixmq/blob/master/docs/TUTORIALS.md): some guides **for beginners** to get started using this library | |||
* [HOWTO](https://github.com/aw/picolisp-posixmq/blob/master/docs/HOWTO.md): a set of recipes for performing more advanced tasks with this library | |||
* [EXPLAIN](https://github.com/aw/picolisp-posixmq/blob/master/docs/EXPLAIN.md): an explanation of some key concepts, including how this library works | |||
* [REFERENCE](https://github.com/aw/picolisp-posixmq/blob/master/docs/REFERENCE.md): technical information on the internals of this library | |||
* [TUTORIALS](https://git.a1w.ca/aw/picolisp-posixmq/blob/master/docs/TUTORIALS.md): some guides **for beginners** to get started using this library | |||
* [HOWTO](https://git.a1w.ca/aw/picolisp-posixmq/blob/master/docs/HOWTO.md): a set of recipes for performing more advanced tasks with this library | |||
* [EXPLAIN](https://git.a1w.ca/aw/picolisp-posixmq/blob/master/docs/EXPLAIN.md): an explanation of some key concepts, including how this library works | |||
* [REFERENCE](https://git.a1w.ca/aw/picolisp-posixmq/blob/master/docs/REFERENCE.md): technical information on the internals of this library |
@@ -4,7 +4,7 @@ name: rust | |||
title: PicoLisp FFI with Rust | |||
--- | |||
You can [get it on GitHub](https://github.com/aw/picolisp-rust). | |||
You can [get it on my Git server](https://git.a1w.ca/aw/picolisp-rust). | |||
This repo provides a simple example of how to use [PicoLisp](https://software-lab.de/down.html) with [Rust](https://www.rust-lang.org/tools/install) using PicoLisp's FFI `(native)` functionality. | |||
@@ -109,7 +109,7 @@ | |||
<div class="post"> | |||
<h1 class="post-title">Nanomsg FFI Bindings for PicoLisp</h1> | |||
<span class="post-date">22 Feb 2015</span> | |||
<p>You can <a href="https://github.com/aw/picolisp-nanomsg">get it on GitHub</a>.</p> | |||
<p>You can <a href="https://git.a1w.ca/aw/picolisp-nanomsg">get it on my Git server</a>.</p> | |||
<h1 id="picolisp-nanomsg-explanation">PicoLisp-Nanomsg Explanation</h1> | |||
@@ -109,7 +109,7 @@ | |||
<div class="post"> | |||
<h1 class="post-title">JSON Encoder/Decoder for PicoLisp</h1> | |||
<span class="post-date">08 Mar 2015</span> | |||
<p>You can <a href="https://github.com/aw/picolisp-json">get it on GitHub</a>.</p> | |||
<p>You can <a href="https://git.a1w.ca/aw/picolisp-json">get it on my Git server</a>.</p> | |||
<p>This library can be used to parse and serialize (encode/decode) JSON strings in <a href="http://picolisp.com/">PicoLisp</a>.</p> | |||
@@ -117,7 +117,7 @@ | |||
<h1 id="explanation-json-encoderdecoder-for-picolisp">Explanation: JSON Encoder/Decoder for PicoLisp</h1> | |||
<p>This document provides a short walkthrough of the source code for the <a href="https://github.com/aw/picolisp-json.git">PicoLisp-JSON</a> encoder/decoder.</p> | |||
<p>This document provides a short walkthrough of the source code for the <a href="https://git.a1w.ca/aw/picolisp-json.git">PicoLisp-JSON</a> encoder/decoder.</p> | |||
<p>It’s split into a few sections for easier reading:</p> | |||
@@ -134,7 +134,7 @@ | |||
<p>Make sure you read the <a href="README.md">README</a> to get an idea of what this library does.</p> | |||
<p>Also, I recommend you read my <a href="https://github.com/aw/picolisp-nanomsg/blob/master/EXPLAIN.md">Nanomsg Explanation</a> for additional PicoLisp tips and ideas.</p> | |||
<p>Also, I recommend you read my <a href="https://git.a1w.ca/aw/picolisp-nanomsg/blob/master/EXPLAIN.md">Nanomsg Explanation</a> for additional PicoLisp tips and ideas.</p> | |||
<h1 id="global-variables">Global variables</h1> | |||
@@ -109,7 +109,7 @@ | |||
<div class="post"> | |||
<h1 class="post-title">HTTP(S) client for PicoLisp</h1> | |||
<span class="post-date">16 Mar 2015</span> | |||
<p>You can <a href="https://github.com/aw/picolisp-https">get it on GitHub</a>.</p> | |||
<p>You can <a href="https://git.a1w.ca/aw/picolisp-https">get it on my Git server</a>.</p> | |||
<p>This library can be used to make HTTP and HTTPS requests in <a href="http://picolisp.com">PicoLisp</a>, with support for authentication.</p> | |||
@@ -117,13 +117,13 @@ | |||
<h1 id="explanation-https-client-for-picolisp">Explanation: HTTP(S) client for PicoLisp</h1> | |||
<p>This document provides a short walkthrough of the source code for the <a href="https://github.com/aw/picolisp-https.git">PicoLisp-HTTPS</a> client.</p> | |||
<p>This document provides a short walkthrough of the source code for the <a href="https://git.a1w.ca/aw/picolisp-https.git">PicoLisp-HTTPS</a> client.</p> | |||
<p>I won’t cover concepts which were covered in previous source code explanations. You can read them here:</p> | |||
<ul> | |||
<li><a href="https://github.com/aw/picolisp-nanomsg/blob/master/EXPLAIN.md">Nanomsg Explanation</a></li> | |||
<li><a href="https://github.com/aw/picolisp-json/blob/master/EXPLAIN.md">JSON Explanation</a></li> | |||
<li><a href="https://git.a1w.ca/aw/picolisp-nanomsg/blob/master/EXPLAIN.md">Nanomsg Explanation</a></li> | |||
<li><a href="https://git.a1w.ca/aw/picolisp-json/blob/master/EXPLAIN.md">JSON Explanation</a></li> | |||
</ul> | |||
<p>This document is split into a few sections:</p> | |||
@@ -289,7 +289,7 @@ | |||
<p>The <a href="http://software-lab.de/doc/refL.html#lisp">lisp</a> function is quite special. When using <code class="language-plaintext highlighter-rouge">(native)</code> for C calls, certain functions require a callback as an argument, or “function pointer” (Google it).</p> | |||
<p>The <code class="language-plaintext highlighter-rouge">(ne-set-server-auth)</code> function requires a callback as its second argument, so we create one using <code class="language-plaintext highlighter-rouge">(lisp)</code>. If you’ve read the <a href="https://github.com/aw/picolisp-json/blob/master/EXPLAIN.md#make-array">JSON explanations</a>, you’ll quickly notice there’s an anonymous function in this <code class="language-plaintext highlighter-rouge">(lisp)</code> call. It essentially sends 5 arguments (which are numbers) to the <code class="language-plaintext highlighter-rouge">(do-auth)</code> function, under the name <code class="language-plaintext highlighter-rouge">ne_auth_creds</code>.</p> | |||
<p>The <code class="language-plaintext highlighter-rouge">(ne-set-server-auth)</code> function requires a callback as its second argument, so we create one using <code class="language-plaintext highlighter-rouge">(lisp)</code>. If you’ve read the <a href="https://git.a1w.ca/aw/picolisp-json/blob/master/EXPLAIN.md#make-array">JSON explanations</a>, you’ll quickly notice there’s an anonymous function in this <code class="language-plaintext highlighter-rouge">(lisp)</code> call. It essentially sends 5 arguments (which are numbers) to the <code class="language-plaintext highlighter-rouge">(do-auth)</code> function, under the name <code class="language-plaintext highlighter-rouge">ne_auth_creds</code>.</p> | |||
<p>Here’s the C code to give a better picture:</p> | |||
@@ -313,7 +313,7 @@ void ne_set_server_auth(ne_session *sess, ne_auth_creds creds, void *userdata); | |||
<span class="nv">Attempt</span> <span class="p">)</span> | |||
</code></pre></div></div> | |||
<p>Whoa wait, what’s that <code class="language-plaintext highlighter-rouge">@</code> thing doing there? Remember we talked about the <a href="https://github.com/aw/picolisp-nanomsg/blob/master/EXPLAIN.md#nn_symbols">@ result</a>? Well, this is <strong>NOT</strong> that.</p> | |||
<p>Whoa wait, what’s that <code class="language-plaintext highlighter-rouge">@</code> thing doing there? Remember we talked about the <a href="https://git.a1w.ca/aw/picolisp-nanomsg/blob/master/EXPLAIN.md#nn_symbols">@ result</a>? Well, this is <strong>NOT</strong> that.</p> | |||
<p>This is actually a <a href="http://software-lab.de/doc/native.html#libs">transient symbol</a> which refers to the main program (PicoLisp).</p> | |||
@@ -109,7 +109,7 @@ | |||
<div class="post"> | |||
<h1 class="post-title">bcrypt hashing for PicoLisp</h1> | |||
<span class="post-date">17 Mar 2015</span> | |||
<p>You can <a href="https://github.com/aw/picolisp-bcrypt">get it on GitHub</a>.</p> | |||
<p>You can <a href="https://git.a1w.ca/aw/picolisp-bcrypt">get it on my Git server</a>.</p> | |||
<p>This library can be used to hash strings (ex: passwords) using bcrypt in <a href="http://picolisp.com/">PicoLisp</a>.</p> | |||
@@ -109,7 +109,7 @@ | |||
<div class="post"> | |||
<h1 class="post-title">Unit Testing framework for PicoLisp</h1> | |||
<span class="post-date">18 Mar 2015</span> | |||
<p>You can <a href="https://github.com/aw/picolisp-unit">get it on GitHub</a>.</p> | |||
<p>You can <a href="https://git.a1w.ca/aw/picolisp-unit">get it on my Git server</a>.</p> | |||
<p>This library can be used for Unit Testing your <a href="http://picolisp.com/">PicoLisp</a> code.</p> | |||
@@ -117,14 +117,14 @@ | |||
<h1 id="explanation-unit-testing-framework-for-picolisp">Explanation: Unit Testing framework for PicoLisp</h1> | |||
<p>This document provides a short walkthrough of the source code for the <a href="https://github.com/aw/picolisp-unit">PicoLisp-Unit</a> testing framework.</p> | |||
<p>This document provides a short walkthrough of the source code for the <a href="https://git.a1w.ca/aw/picolisp-unit">PicoLisp-Unit</a> testing framework.</p> | |||
<p>I won’t cover concepts which were discussed in previous source code explanations. You can read them here:</p> | |||
<ul> | |||
<li><a href="https://github.com/aw/picolisp-nanomsg/blob/master/EXPLAIN.md">Nanomsg Explanation</a></li> | |||
<li><a href="https://github.com/aw/picolisp-json/blob/master/EXPLAIN.md">JSON Explanation</a></li> | |||
<li><a href="https://github.com/aw/picolisp-https/blob/master/EXPLAIN.md">HTTPS Explanation</a></li> | |||
<li><a href="https://git.a1w.ca/aw/picolisp-nanomsg/blob/master/EXPLAIN.md">Nanomsg Explanation</a></li> | |||
<li><a href="https://git.a1w.ca/aw/picolisp-json/blob/master/EXPLAIN.md">JSON Explanation</a></li> | |||
<li><a href="https://git.a1w.ca/aw/picolisp-https/blob/master/EXPLAIN.md">HTTPS Explanation</a></li> | |||
</ul> | |||
<p>This document is split into a few sections:</p> | |||
@@ -309,7 +309,7 @@ | |||
<p>This one is quite simple, all it does is check if <code class="language-plaintext highlighter-rouge">Expected</code> is equal to <code class="language-plaintext highlighter-rouge">Result</code>.</p> | |||
<p>The <a href="https://github.com/aw/picolisp-unit/blob/master/README.md#assertions-table">other assertions</a> are quite similar and seem to cover most test cases. I’ve considered adding opposite tests such as <code class="language-plaintext highlighter-rouge">refute</code>, but I’ve rarely found a need for them as there are alternate approaches.</p> | |||
<p>The <a href="https://git.a1w.ca/aw/picolisp-unit/blob/master/README.md#assertions-table">other assertions</a> are quite similar and seem to cover most test cases. I’ve considered adding opposite tests such as <code class="language-plaintext highlighter-rouge">refute</code>, but I’ve rarely found a need for them as there are alternate approaches.</p> | |||
</div> | |||
@@ -109,7 +109,7 @@ | |||
<div class="post"> | |||
<h1 class="post-title">SemVer for PicoLisp</h1> | |||
<span class="post-date">27 Feb 2017</span> | |||
<p>You can <a href="https://github.com/aw/picolisp-semver">get it on GitHub</a>.</p> | |||
<p>You can <a href="https://git.a1w.ca/aw/picolisp-semver">get it on my Git server</a>.</p> | |||
<p>This library can validate and compare <strong>Major.Minor.Patch</strong> versions (ex: <code class="language-plaintext highlighter-rouge">"1.0.0"</code>). | |||
It ignores pre-release, build, metadata, and special extensions (ex: <code class="language-plaintext highlighter-rouge">.alpha.1</code>).</p> | |||
@@ -109,7 +109,7 @@ | |||
<div class="post"> | |||
<h1 class="post-title">JSON Encoder/Decoder in pure PicoLisp</h1> | |||
<span class="post-date">11 May 2018</span> | |||
<p>You can <a href="https://github.com/aw/picolisp-json">get it on GitHub</a>.</p> | |||
<p>You can <a href="https://git.a1w.ca/aw/picolisp-json">get it on my Git server</a>.</p> | |||
<p>This library can be used to parse and serialize (encode/decode) JSON strings in <a href="http://picolisp.com/">PicoLisp</a>.</p> | |||
@@ -117,9 +117,9 @@ | |||
<h1 id="explanation-json-encoderdecoder-in-pure-picolisp">Explanation: JSON Encoder/Decoder in pure PicoLisp</h1> | |||
<p>This document provides a short walkthrough of the source code for the <a href="https://github.com/aw/picolisp-json.git">PicoLisp-JSON</a> encoder/decoder.</p> | |||
<p>This document provides a short walkthrough of the source code for the <a href="https://git.a1w.ca/aw/picolisp-json.git">PicoLisp-JSON</a> encoder/decoder.</p> | |||
<p><strong>Note:</strong> This document covers <code class="language-plaintext highlighter-rouge">v3</code> of the JSON library. To view the older (C/ffi bindings) version <a href="https://github.com/aw/picolisp-json/blob/v2.2.0/EXPLAIN.md">click here</a>.</p> | |||
<p><strong>Note:</strong> This document covers <code class="language-plaintext highlighter-rouge">v3</code> of the JSON library. To view the older (C/ffi bindings) version <a href="https://git.a1w.ca/aw/picolisp-json/blob/v2.2.0/EXPLAIN.md">click here</a>.</p> | |||
<p>It’s split into a few sections for easier reading:</p> | |||
@@ -332,7 +332,7 @@ In other words, our tokenized <code class="language-plaintext highlighter-rouge" | |||
<h2 id="encoding-json">encoding JSON</h2> | |||
<p>The code for encoding JSON strings hasn’t changed, so feel free to <a href="https://github.com/aw/picolisp-json/blob/master/EXPLAIN.md#encoding-json">read about it here</a>.</p> | |||
<p>The code for encoding JSON strings hasn’t changed, so feel free to <a href="https://git.a1w.ca/aw/picolisp-json/blob/master/EXPLAIN.md#encoding-json">read about it here</a>.</p> | |||
</div> | |||
@@ -109,11 +109,11 @@ | |||
<div class="post"> | |||
<h1 class="post-title">PicoLisp AWS CLI tool using OpenSSL and Curl</h1> | |||
<span class="post-date">15 Mar 2019</span> | |||
<p>You can <a href="https://github.com/aw/picolisp-awscurl">get it on GitHub</a>.</p> | |||
<p>You can <a href="https://git.a1w.ca/aw/picolisp-awscurl">get it on my Git server</a>.</p> | |||
<p>This command line tool can be used to sign <a href="https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html">AWS Signature Version 4</a> requests and make calls to various AWS APIs.</p> | |||
<p><a href="https://github.com/aw/picolisp-awscurl"><img src="https://img.shields.io/github/release/aw/picolisp-awscurl.svg" alt="GitHub release" /></a> <a href="https://github.com/aw/picolisp-unit.git"><img src="https://img.shields.io/badge/[deps] picolisp--unit-v3.0.0-ff69b4.svg" alt="Dependency" /></a> <img src="https://github.com/aw/picolisp-awscurl/workflows/CI/badge.svg?branch=master" alt="Build status" /></p> | |||
<p><a href="https://git.a1w.ca/aw/picolisp-awscurl"><img src="https://img.shields.io/github/release/aw/picolisp-awscurl.svg" alt="GitHub release" /></a> <a href="https://github.com/aw/picolisp-unit.git"><img src="https://img.shields.io/badge/[deps] picolisp--unit-v3.0.0-ff69b4.svg" alt="Dependency" /></a> <img src="https://github.com/aw/picolisp-awscurl/workflows/CI/badge.svg?branch=master" alt="Build status" /></p> | |||
<ol> | |||
<li><a href="#requirements">Requirements</a></li> | |||
@@ -124,7 +124,7 @@ | |||
<h1 id="requirements">Requirements</h1> | |||
<ul> | |||
<li><code class="language-plaintext highlighter-rouge">picolisp</code>: 32-bit or 64-bit <code class="language-plaintext highlighter-rouge">v3.1.11+</code>, tested up to PicoLisp <code class="language-plaintext highlighter-rouge">v20.6.29</code>, <a href="https://github.com/aw/picolisp-awscurl/actions/">see test runs</a></li> | |||
<li><code class="language-plaintext highlighter-rouge">picolisp</code>: 32-bit or 64-bit <code class="language-plaintext highlighter-rouge">v3.1.11+</code>, tested up to PicoLisp <code class="language-plaintext highlighter-rouge">v20.6.29</code>, <a href="https://git.a1w.ca/aw/picolisp-awscurl/actions/">see test runs</a></li> | |||
<li><code class="language-plaintext highlighter-rouge">libcrypto.so</code>: for using <code class="language-plaintext highlighter-rouge">--native</code> functions with PicoLisp <code class="language-plaintext highlighter-rouge">v17.12+</code></li> | |||
<li><code class="language-plaintext highlighter-rouge">picolisp-unit</code>: <code class="language-plaintext highlighter-rouge">v3.0.0+</code> for testing the library</li> | |||
<li><code class="language-plaintext highlighter-rouge">openssl</code>: <code class="language-plaintext highlighter-rouge">v1.0.0+</code> for signing and hashing strings</li> | |||
@@ -139,7 +139,7 @@ | |||
<h2 id="warning">WARNING</h2> | |||
<p>There is currently <strong>no validation</strong> on command line arguments. Be careful the input you provide. <a href="https://github.com/aw/picolisp-awscurl/issues/1">See issue #1</a></p> | |||
<p>There is currently <strong>no validation</strong> on command line arguments. Be careful the input you provide. <a href="https://git.a1w.ca/aw/picolisp-awscurl/issues/1">See issue #1</a></p> | |||
<h3 id="environment-variables">Environment variables</h3> | |||
@@ -109,10 +109,10 @@ | |||
<div class="post"> | |||
<h1 class="post-title">GitHub Action to run 32-bit or 64-bit PicoLisp code</h1> | |||
<span class="post-date">02 Jan 2020</span> | |||
<p>You can <a href="https://github.com/aw/picolisp-action">get it on GitHub</a> or the <a href="https://github.com/marketplace/actions/picolisp-action">GitHub Marketplace</a>.</p> | |||
<p>You can <a href="https://git.a1w.ca/aw/picolisp-action">get it on my Git server</a> or the <a href="https://github.com/marketplace/actions/picolisp-action">GitHub Marketplace</a>.</p> | |||
<p>This action downloads, compiles, and globally installs PicoLisp. | |||
It can be used to run PicoLisp code such as <a href="https://github.com/aw/picolisp-unit">units tests</a>.</p> | |||
It can be used to run PicoLisp code such as <a href="https://git.a1w.ca/aw/picolisp-unit">units tests</a>.</p> | |||
<p><img src="https://user-images.githubusercontent.com/153401/70022112-e4695580-158a-11ea-886d-0db01dbe7a66.png" alt="Example PicoLisp tests" /></p> | |||
@@ -139,7 +139,7 @@ It can be used to run PicoLisp code such as <a href="https://github.com/aw/picol | |||
<h2 id="example-workflow">Example workflow</h2> | |||
<p>See the <a href="https://github.com/aw/picolisp-json/blob/master/.github/workflows/main.yml">picolisp-json workflow</a> for a more detailed usage example.</p> | |||
<p>See the <a href="https://git.a1w.ca/aw/picolisp-json/blob/master/.github/workflows/main.yml">picolisp-json workflow</a> for a more detailed usage example.</p> | |||
<h2 id="code">Code</h2> | |||
@@ -109,7 +109,7 @@ | |||
<div class="post"> | |||
<h1 class="post-title">Redis-inspired key/value store written in PicoLisp</h1> | |||
<span class="post-date">16 Jun 2020</span> | |||
<p>You can <a href="https://github.com/aw/picolisp-kv">get it on GitHub</a>.</p> | |||
<p>You can <a href="https://git.a1w.ca/aw/picolisp-kv">get it on my Git server</a>.</p> | |||
<p>This program mimics functionality of a <a href="https://redis.io">Redis™</a> in-memory database, but is designed specifically for <a href="https://picolisp.com">PicoLisp</a> applications with optional on-disk persistence and encryption.</p> | |||
@@ -189,7 +189,7 @@ | |||
-> "12345" | |||
</code></pre></div></div> | |||
<p>Feel free to observe the example code in <a href="https://github.com/aw/picolisp-kv/blob/master/client.l">client.l</a>.</p> | |||
<p>Feel free to observe the example code in <a href="https://git.a1w.ca/aw/picolisp-kv/blob/master/client.l">client.l</a>.</p> | |||
<blockquote> | |||
<p><strong>Note</strong>: Using <code class="language-plaintext highlighter-rouge">(kv-send-data)</code> will send the data to the server and automatically block the client while waiting for a response.</p> | |||
@@ -109,7 +109,7 @@ | |||
<div class="post"> | |||
<h1 class="post-title">Unicorn-inspired PicoLisp daemon to spawn and manage worker processes</h1> | |||
<span class="post-date">18 Jun 2020</span> | |||
<p>You can <a href="https://github.com/aw/picolisp-supervisor">get it on GitHub</a>.</p> | |||
<p>You can <a href="https://git.a1w.ca/aw/picolisp-supervisor">get it on my Git server</a>.</p> | |||
<p>This program mimics functionality of <a href="https://yhbt.net/unicorn/">Unicorn</a>, without being limited to HTTP applications.</p> | |||
@@ -109,7 +109,7 @@ | |||
<div class="post"> | |||
<h1 class="post-title">POSIX Message Queues library for PicoLisp</h1> | |||
<span class="post-date">16 Sep 2020</span> | |||
<p>You can <a href="https://github.com/aw/picolisp-posixmq">get it on GitHub</a>.</p> | |||
<p>You can <a href="https://git.a1w.ca/aw/picolisp-posixmq">get it on my Git server</a>.</p> | |||
<p><em><a href="https://man7.org/linux/man-pages/man7/mq_overview.7.html">POSIX Message Queues</a></em> provide a dependency-free mechanism for processes to exchange data in the form of messages.</p> | |||
@@ -135,7 +135,7 @@ | |||
<p>The first step is to run the unit tests: <code class="language-plaintext highlighter-rouge">make check</code></p> | |||
<p>If those fail, jump to the <a href="https://github.com/aw/picolisp-posixmq/blob/master/docs/TUTORIALS.md">TUTORIALS</a> section to perform the initial setup and and system check.</p> | |||
<p>If those fail, jump to the <a href="https://git.a1w.ca/aw/picolisp-posixmq/blob/master/docs/TUTORIALS.md">TUTORIALS</a> section to perform the initial setup and and system check.</p> | |||
<p>If all works well, then your system is ready to use this library.</p> | |||
@@ -168,13 +168,13 @@ | |||
<h1 id="documentation">Documentation</h1> | |||
<p>Additional usage and reference documentation can be found in <a href="https://github.com/aw/picolisp-posixmq/blob/master/docs/">docs/</a></p> | |||
<p>Additional usage and reference documentation can be found in <a href="https://git.a1w.ca/aw/picolisp-posixmq/blob/master/docs/">docs/</a></p> | |||
<ul> | |||
<li><a href="https://github.com/aw/picolisp-posixmq/blob/master/docs/TUTORIALS.md">TUTORIALS</a>: some guides <strong>for beginners</strong> to get started using this library</li> | |||
<li><a href="https://github.com/aw/picolisp-posixmq/blob/master/docs/HOWTO.md">HOWTO</a>: a set of recipes for performing more advanced tasks with this library</li> | |||
<li><a href="https://github.com/aw/picolisp-posixmq/blob/master/docs/EXPLAIN.md">EXPLAIN</a>: an explanation of some key concepts, including how this library works</li> | |||
<li><a href="https://github.com/aw/picolisp-posixmq/blob/master/docs/REFERENCE.md">REFERENCE</a>: technical information on the internals of this library</li> | |||
<li><a href="https://git.a1w.ca/aw/picolisp-posixmq/blob/master/docs/TUTORIALS.md">TUTORIALS</a>: some guides <strong>for beginners</strong> to get started using this library</li> | |||
<li><a href="https://git.a1w.ca/aw/picolisp-posixmq/blob/master/docs/HOWTO.md">HOWTO</a>: a set of recipes for performing more advanced tasks with this library</li> | |||
<li><a href="https://git.a1w.ca/aw/picolisp-posixmq/blob/master/docs/EXPLAIN.md">EXPLAIN</a>: an explanation of some key concepts, including how this library works</li> | |||
<li><a href="https://git.a1w.ca/aw/picolisp-posixmq/blob/master/docs/REFERENCE.md">REFERENCE</a>: technical information on the internals of this library</li> | |||
</ul> | |||
</div> | |||
@@ -109,7 +109,7 @@ | |||
<div class="post"> | |||
<h1 class="post-title">PicoLisp FFI with Rust</h1> | |||
<span class="post-date">29 Oct 2020</span> | |||
<p>You can <a href="https://github.com/aw/picolisp-rust">get it on GitHub</a>.</p> | |||
<p>You can <a href="https://git.a1w.ca/aw/picolisp-rust">get it on my Git server</a>.</p> | |||
<p>This repo provides a simple example of how to use <a href="https://software-lab.de/down.html">PicoLisp</a> with <a href="https://www.rust-lang.org/tools/install">Rust</a> using PicoLisp’s FFI <code class="language-plaintext highlighter-rouge">(native)</code> functionality.</p> | |||
@@ -4,7 +4,7 @@ | |||
<title>PicoLisp Libraries</title> | |||
<link href="https://picolisp.a1w.ca/atom.xml" rel="self"/> | |||
<link href="https://picolisp.a1w.ca/"/> | |||
<updated>2020-11-22T14:17:29+00:00</updated> | |||
<updated>2020-11-22T14:22:29+00:00</updated> | |||
<id>https://picolisp.a1w.ca</id> | |||
<author> | |||
<name>Alexander Williams</name> | |||
@@ -17,7 +17,7 @@ | |||
<link href="https://picolisp.a1w.ca/2020/10/29/rust/"/> | |||
<updated>2020-10-29T00:00:00+00:00</updated> | |||
<id>https://picolisp.a1w.ca/2020/10/29/rust</id> | |||
<content type="html"><p>You can <a href="https://github.com/aw/picolisp-rust">get it on GitHub</a>.</p> | |||
<content type="html"><p>You can <a href="https://git.a1w.ca/aw/picolisp-rust">get it on my Git server</a>.</p> | |||
<p>This repo provides a simple example of how to use <a href="https://software-lab.de/down.html">PicoLisp</a> with <a href="https://www.rust-lang.org/tools/install">Rust</a> using PicoLisp’s FFI <code class="language-plaintext highlighter-rouge">(native)</code> functionality.</p> | |||
@@ -135,7 +135,7 @@ Extracted struct: | |||
<link href="https://picolisp.a1w.ca/2020/09/16/posixmq/"/> | |||
<updated>2020-09-16T00:00:00+00:00</updated> | |||
<id>https://picolisp.a1w.ca/2020/09/16/posixmq</id> | |||
<content type="html"><p>You can <a href="https://github.com/aw/picolisp-posixmq">get it on GitHub</a>.</p> | |||
<content type="html"><p>You can <a href="https://git.a1w.ca/aw/picolisp-posixmq">get it on my Git server</a>.</p> | |||
<p><em><a href="https://man7.org/linux/man-pages/man7/mq_overview.7.html">POSIX Message Queues</a></em> provide a dependency-free mechanism for processes to exchange data in the form of messages.</p> | |||
@@ -161,7 +161,7 @@ Extracted struct: | |||
<p>The first step is to run the unit tests: <code class="language-plaintext highlighter-rouge">make check</code></p> | |||
<p>If those fail, jump to the <a href="https://github.com/aw/picolisp-posixmq/blob/master/docs/TUTORIALS.md">TUTORIALS</a> section to perform the initial setup and and system check.</p> | |||
<p>If those fail, jump to the <a href="https://git.a1w.ca/aw/picolisp-posixmq/blob/master/docs/TUTORIALS.md">TUTORIALS</a> section to perform the initial setup and and system check.</p> | |||
<p>If all works well, then your system is ready to use this library.</p> | |||
@@ -194,13 +194,13 @@ Extracted struct: | |||
<h1 id="documentation">Documentation</h1> | |||
<p>Additional usage and reference documentation can be found in <a href="https://github.com/aw/picolisp-posixmq/blob/master/docs/">docs/</a></p> | |||
<p>Additional usage and reference documentation can be found in <a href="https://git.a1w.ca/aw/picolisp-posixmq/blob/master/docs/">docs/</a></p> | |||
<ul> | |||
<li><a href="https://github.com/aw/picolisp-posixmq/blob/master/docs/TUTORIALS.md">TUTORIALS</a>: some guides <strong>for beginners</strong> to get started using this library</li> | |||
<li><a href="https://github.com/aw/picolisp-posixmq/blob/master/docs/HOWTO.md">HOWTO</a>: a set of recipes for performing more advanced tasks with this library</li> | |||
<li><a href="https://github.com/aw/picolisp-posixmq/blob/master/docs/EXPLAIN.md">EXPLAIN</a>: an explanation of some key concepts, including how this library works</li> | |||
<li><a href="https://github.com/aw/picolisp-posixmq/blob/master/docs/REFERENCE.md">REFERENCE</a>: technical information on the internals of this library</li> | |||
<li><a href="https://git.a1w.ca/aw/picolisp-posixmq/blob/master/docs/TUTORIALS.md">TUTORIALS</a>: some guides <strong>for beginners</strong> to get started using this library</li> | |||
<li><a href="https://git.a1w.ca/aw/picolisp-posixmq/blob/master/docs/HOWTO.md">HOWTO</a>: a set of recipes for performing more advanced tasks with this library</li> | |||
<li><a href="https://git.a1w.ca/aw/picolisp-posixmq/blob/master/docs/EXPLAIN.md">EXPLAIN</a>: an explanation of some key concepts, including how this library works</li> | |||
<li><a href="https://git.a1w.ca/aw/picolisp-posixmq/blob/master/docs/REFERENCE.md">REFERENCE</a>: technical information on the internals of this library</li> | |||
</ul> | |||
</content> | |||
</entry> | |||
@@ -210,7 +210,7 @@ Extracted struct: | |||
<link href="https://picolisp.a1w.ca/2020/06/18/supervisor/"/> | |||
<updated>2020-06-18T00:00:00+00:00</updated> | |||
<id>https://picolisp.a1w.ca/2020/06/18/supervisor</id> | |||
<content type="html"><p>You can <a href="https://github.com/aw/picolisp-supervisor">get it on GitHub</a>.</p> | |||
<content type="html"><p>You can <a href="https://git.a1w.ca/aw/picolisp-supervisor">get it on my Git server</a>.</p> | |||
<p>This program mimics functionality of <a href="https://yhbt.net/unicorn/">Unicorn</a>, without being limited to HTTP applications.</p> | |||
@@ -325,7 +325,7 @@ Options: | |||
<link href="https://picolisp.a1w.ca/2020/06/16/keyvalue/"/> | |||
<updated>2020-06-16T00:00:00+00:00</updated> | |||
<id>https://picolisp.a1w.ca/2020/06/16/keyvalue</id> | |||
<content type="html"><p>You can <a href="https://github.com/aw/picolisp-kv">get it on GitHub</a>.</p> | |||
<content type="html"><p>You can <a href="https://git.a1w.ca/aw/picolisp-kv">get it on my Git server</a>.</p> | |||
<p>This program mimics functionality of a <a href="https://redis.io">Redis™</a> in-memory database, but is designed specifically for <a href="https://picolisp.com">PicoLisp</a> applications with optional on-disk persistence and encryption.</p> | |||
@@ -405,7 +405,7 @@ Options: | |||
-&gt; "12345" | |||
</code></pre></div></div> | |||
<p>Feel free to observe the example code in <a href="https://github.com/aw/picolisp-kv/blob/master/client.l">client.l</a>.</p> | |||
<p>Feel free to observe the example code in <a href="https://git.a1w.ca/aw/picolisp-kv/blob/master/client.l">client.l</a>.</p> | |||
<blockquote> | |||
<p><strong>Note</strong>: Using <code class="language-plaintext highlighter-rouge">(kv-send-data)</code> will send the data to the server and automatically block the client while waiting for a response.</p> | |||
@@ -666,10 +666,10 @@ COMMAND LIST Commands are case-insensitive and don't always require | |||
<link href="https://picolisp.a1w.ca/2020/01/02/action/"/> | |||
<updated>2020-01-02T00:00:00+00:00</updated> | |||
<id>https://picolisp.a1w.ca/2020/01/02/action</id> | |||
<content type="html"><p>You can <a href="https://github.com/aw/picolisp-action">get it on GitHub</a> or the <a href="https://github.com/marketplace/actions/picolisp-action">GitHub Marketplace</a>.</p> | |||
<content type="html"><p>You can <a href="https://git.a1w.ca/aw/picolisp-action">get it on my Git server</a> or the <a href="https://github.com/marketplace/actions/picolisp-action">GitHub Marketplace</a>.</p> | |||
<p>This action downloads, compiles, and globally installs PicoLisp. | |||
It can be used to run PicoLisp code such as <a href="https://github.com/aw/picolisp-unit">units tests</a>.</p> | |||
It can be used to run PicoLisp code such as <a href="https://git.a1w.ca/aw/picolisp-unit">units tests</a>.</p> | |||
<p><img src="https://user-images.githubusercontent.com/153401/70022112-e4695580-158a-11ea-886d-0db01dbe7a66.png" alt="Example PicoLisp tests" /></p> | |||
@@ -696,7 +696,7 @@ It can be used to run PicoLisp code such as <a href="https://github.com/ | |||
<h2 id="example-workflow">Example workflow</h2> | |||
<p>See the <a href="https://github.com/aw/picolisp-json/blob/master/.github/workflows/main.yml">picolisp-json workflow</a> for a more detailed usage example.</p> | |||
<p>See the <a href="https://git.a1w.ca/aw/picolisp-json/blob/master/.github/workflows/main.yml">picolisp-json workflow</a> for a more detailed usage example.</p> | |||
<h2 id="code">Code</h2> | |||
@@ -730,11 +730,11 @@ It can be used to run PicoLisp code such as <a href="https://github.com/ | |||
<link href="https://picolisp.a1w.ca/2019/03/15/awscurl/"/> | |||
<updated>2019-03-15T00:00:00+00:00</updated> | |||
<id>https://picolisp.a1w.ca/2019/03/15/awscurl</id> | |||
<content type="html"><p>You can <a href="https://github.com/aw/picolisp-awscurl">get it on GitHub</a>.</p> | |||
<content type="html"><p>You can <a href="https://git.a1w.ca/aw/picolisp-awscurl">get it on my Git server</a>.</p> | |||
<p>This command line tool can be used to sign <a href="https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html">AWS Signature Version 4</a> requests and make calls to various AWS APIs.</p> | |||
<p><a href="https://github.com/aw/picolisp-awscurl"><img src="https://img.shields.io/github/release/aw/picolisp-awscurl.svg" alt="GitHub release" /></a> <a href="https://github.com/aw/picolisp-unit.git"><img src="https://img.shields.io/badge/[deps]&#32;picolisp--unit-v3.0.0-ff69b4.svg" alt="Dependency" /></a> <img src="https://github.com/aw/picolisp-awscurl/workflows/CI/badge.svg?branch=master" alt="Build status" /></p> | |||
<p><a href="https://git.a1w.ca/aw/picolisp-awscurl"><img src="https://img.shields.io/github/release/aw/picolisp-awscurl.svg" alt="GitHub release" /></a> <a href="https://github.com/aw/picolisp-unit.git"><img src="https://img.shields.io/badge/[deps]&#32;picolisp--unit-v3.0.0-ff69b4.svg" alt="Dependency" /></a> <img src="https://github.com/aw/picolisp-awscurl/workflows/CI/badge.svg?branch=master" alt="Build status" /></p> | |||
<ol> | |||
<li><a href="#requirements">Requirements</a></li> | |||
@@ -745,7 +745,7 @@ It can be used to run PicoLisp code such as <a href="https://github.com/ | |||
<h1 id="requirements">Requirements</h1> | |||
<ul> | |||
<li><code class="language-plaintext highlighter-rouge">picolisp</code>: 32-bit or 64-bit <code class="language-plaintext highlighter-rouge">v3.1.11+</code>, tested up to PicoLisp <code class="language-plaintext highlighter-rouge">v20.6.29</code>, <a href="https://github.com/aw/picolisp-awscurl/actions/">see test runs</a></li> | |||
<li><code class="language-plaintext highlighter-rouge">picolisp</code>: 32-bit or 64-bit <code class="language-plaintext highlighter-rouge">v3.1.11+</code>, tested up to PicoLisp <code class="language-plaintext highlighter-rouge">v20.6.29</code>, <a href="https://git.a1w.ca/aw/picolisp-awscurl/actions/">see test runs</a></li> | |||
<li><code class="language-plaintext highlighter-rouge">libcrypto.so</code>: for using <code class="language-plaintext highlighter-rouge">--native</code> functions with PicoLisp <code class="language-plaintext highlighter-rouge">v17.12+</code></li> | |||
<li><code class="language-plaintext highlighter-rouge">picolisp-unit</code>: <code class="language-plaintext highlighter-rouge">v3.0.0+</code> for testing the library</li> | |||
<li><code class="language-plaintext highlighter-rouge">openssl</code>: <code class="language-plaintext highlighter-rouge">v1.0.0+</code> for signing and hashing strings</li> | |||
@@ -760,7 +760,7 @@ It can be used to run PicoLisp code such as <a href="https://github.com/ | |||
<h2 id="warning">WARNING</h2> | |||
<p>There is currently <strong>no validation</strong> on command line arguments. Be careful the input you provide. <a href="https://github.com/aw/picolisp-awscurl/issues/1">See issue #1</a></p> | |||
<p>There is currently <strong>no validation</strong> on command line arguments. Be careful the input you provide. <a href="https://git.a1w.ca/aw/picolisp-awscurl/issues/1">See issue #1</a></p> | |||
<h3 id="environment-variables">Environment variables</h3> | |||
@@ -831,7 +831,7 @@ Options: | |||
<link href="https://picolisp.a1w.ca/2018/05/11/json-v3/"/> | |||
<updated>2018-05-11T00:00:00+00:00</updated> | |||
<id>https://picolisp.a1w.ca/2018/05/11/json-v3</id> | |||
<content type="html"><p>You can <a href="https://github.com/aw/picolisp-json">get it on GitHub</a>.</p> | |||
<content type="html"><p>You can <a href="https://git.a1w.ca/aw/picolisp-json">get it on my Git server</a>.</p> | |||
<p>This library can be used to parse and serialize (encode/decode) JSON strings in <a href="http://picolisp.com/">PicoLisp</a>.</p> | |||
@@ -839,9 +839,9 @@ Options: | |||
<h1 id="explanation-json-encoderdecoder-in-pure-picolisp">Explanation: JSON Encoder/Decoder in pure PicoLisp</h1> | |||
<p>This document provides a short walkthrough of the source code for the <a href="https://github.com/aw/picolisp-json.git">PicoLisp-JSON</a> encoder/decoder.</p> | |||
<p>This document provides a short walkthrough of the source code for the <a href="https://git.a1w.ca/aw/picolisp-json.git">PicoLisp-JSON</a> encoder/decoder.</p> | |||
<p><strong>Note:</strong> This document covers <code class="language-plaintext highlighter-rouge">v3</code> of the JSON library. To view the older (C/ffi bindings) version <a href="https://github.com/aw/picolisp-json/blob/v2.2.0/EXPLAIN.md">click here</a>.</p> | |||
<p><strong>Note:</strong> This document covers <code class="language-plaintext highlighter-rouge">v3</code> of the JSON library. To view the older (C/ffi bindings) version <a href="https://git.a1w.ca/aw/picolisp-json/blob/v2.2.0/EXPLAIN.md">click here</a>.</p> | |||
<p>It’s split into a few sections for easier reading:</p> | |||
@@ -1054,7 +1054,7 @@ In other words, our tokenized <code class="language-plaintext highlighte | |||
<h2 id="encoding-json">encoding JSON</h2> | |||
<p>The code for encoding JSON strings hasn’t changed, so feel free to <a href="https://github.com/aw/picolisp-json/blob/master/EXPLAIN.md#encoding-json">read about it here</a>.</p> | |||
<p>The code for encoding JSON strings hasn’t changed, so feel free to <a href="https://git.a1w.ca/aw/picolisp-json/blob/master/EXPLAIN.md#encoding-json">read about it here</a>.</p> | |||
</content> | |||
</entry> | |||
@@ -1063,7 +1063,7 @@ In other words, our tokenized <code class="language-plaintext highlighte | |||
<link href="https://picolisp.a1w.ca/2017/02/27/semver/"/> | |||
<updated>2017-02-27T00:00:00+00:00</updated> | |||
<id>https://picolisp.a1w.ca/2017/02/27/semver</id> | |||
<content type="html"><p>You can <a href="https://github.com/aw/picolisp-semver">get it on GitHub</a>.</p> | |||
<content type="html"><p>You can <a href="https://git.a1w.ca/aw/picolisp-semver">get it on my Git server</a>.</p> | |||
<p>This library can validate and compare <strong>Major.Minor.Patch</strong> versions (ex: <code class="language-plaintext highlighter-rouge">"1.0.0"</code>). | |||
It ignores pre-release, build, metadata, and special extensions (ex: <code class="language-plaintext highlighter-rouge">.alpha.1</code>).</p> | |||
@@ -1192,7 +1192,7 @@ if left &gt; right then return T # left is newer | |||
<link href="https://picolisp.a1w.ca/2015/03/18/unit/"/> | |||
<updated>2015-03-18T00:00:00+00:00</updated> | |||
<id>https://picolisp.a1w.ca/2015/03/18/unit</id> | |||
<content type="html"><p>You can <a href="https://github.com/aw/picolisp-unit">get it on GitHub</a>.</p> | |||
<content type="html"><p>You can <a href="https://git.a1w.ca/aw/picolisp-unit">get it on my Git server</a>.</p> | |||
<p>This library can be used for Unit Testing your <a href="http://picolisp.com/">PicoLisp</a> code.</p> | |||
@@ -1200,14 +1200,14 @@ if left &gt; right then return T # left is newer | |||
<h1 id="explanation-unit-testing-framework-for-picolisp">Explanation: Unit Testing framework for PicoLisp</h1> | |||
<p>This document provides a short walkthrough of the source code for the <a href="https://github.com/aw/picolisp-unit">PicoLisp-Unit</a> testing framework.</p> | |||
<p>This document provides a short walkthrough of the source code for the <a href="https://git.a1w.ca/aw/picolisp-unit">PicoLisp-Unit</a> testing framework.</p> | |||
<p>I won’t cover concepts which were discussed in previous source code explanations. You can read them here:</p> | |||
<ul> | |||
<li><a href="https://github.com/aw/picolisp-nanomsg/blob/master/EXPLAIN.md">Nanomsg Explanation</a></li> | |||
<li><a href="https://github.com/aw/picolisp-json/blob/master/EXPLAIN.md">JSON Explanation</a></li> | |||
<li><a href="https://github.com/aw/picolisp-https/blob/master/EXPLAIN.md">HTTPS Explanation</a></li> | |||
<li><a href="https://git.a1w.ca/aw/picolisp-nanomsg/blob/master/EXPLAIN.md">Nanomsg Explanation</a></li> | |||
<li><a href="https://git.a1w.ca/aw/picolisp-json/blob/master/EXPLAIN.md">JSON Explanation</a></li> | |||
<li><a href="https://git.a1w.ca/aw/picolisp-https/blob/master/EXPLAIN.md">HTTPS Explanation</a></li> | |||
</ul> | |||
<p>This document is split into a few sections:</p> | |||
@@ -1392,7 +1392,7 @@ if left &gt; right then return T # left is newer | |||
<p>This one is quite simple, all it does is check if <code class="language-plaintext highlighter-rouge">Expected</code> is equal to <code class="language-plaintext highlighter-rouge">Result</code>.</p> | |||
<p>The <a href="https://github.com/aw/picolisp-unit/blob/master/README.md#assertions-table">other assertions</a> are quite similar and seem to cover most test cases. I’ve considered adding opposite tests such as <code class="language-plaintext highlighter-rouge">refute</code>, but I’ve rarely found a need for them as there are alternate approaches.</p> | |||
<p>The <a href="https://git.a1w.ca/aw/picolisp-unit/blob/master/README.md#assertions-table">other assertions</a> are quite similar and seem to cover most test cases. I’ve considered adding opposite tests such as <code class="language-plaintext highlighter-rouge">refute</code>, but I’ve rarely found a need for them as there are alternate approaches.</p> | |||
</content> | |||
</entry> | |||
@@ -1401,7 +1401,7 @@ if left &gt; right then return T # left is newer | |||
<link href="https://picolisp.a1w.ca/2015/03/17/bcrypt/"/> | |||
<updated>2015-03-17T00:00:00+00:00</updated> | |||
<id>https://picolisp.a1w.ca/2015/03/17/bcrypt</id> | |||
<content type="html"><p>You can <a href="https://github.com/aw/picolisp-bcrypt">get it on GitHub</a>.</p> | |||
<content type="html"><p>You can <a href="https://git.a1w.ca/aw/picolisp-bcrypt">get it on my Git server</a>.</p> | |||
<p>This library can be used to hash strings (ex: passwords) using bcrypt in <a href="http://picolisp.com/">PicoLisp</a>.</p> | |||
@@ -1515,7 +1515,7 @@ if left &gt; right then return T # left is newer | |||
<link href="https://picolisp.a1w.ca/2015/03/16/https/"/> | |||
<updated>2015-03-16T00:00:00+00:00</updated> | |||
<id>https://picolisp.a1w.ca/2015/03/16/https</id> | |||
<content type="html"><p>You can <a href="https://github.com/aw/picolisp-https">get it on GitHub</a>.</p> | |||
<content type="html"><p>You can <a href="https://git.a1w.ca/aw/picolisp-https">get it on my Git server</a>.</p> | |||
<p>This library can be used to make HTTP and HTTPS requests in <a href="http://picolisp.com">PicoLisp</a>, with support for authentication.</p> | |||
@@ -1523,13 +1523,13 @@ if left &gt; right then return T # left is newer | |||
<h1 id="explanation-https-client-for-picolisp">Explanation: HTTP(S) client for PicoLisp</h1> | |||
<p>This document provides a short walkthrough of the source code for the <a href="https://github.com/aw/picolisp-https.git">PicoLisp-HTTPS</a> client.</p> | |||
<p>This document provides a short walkthrough of the source code for the <a href="https://git.a1w.ca/aw/picolisp-https.git">PicoLisp-HTTPS</a> client.</p> | |||
<p>I won’t cover concepts which were covered in previous source code explanations. You can read them here:</p> | |||
<ul> | |||
<li><a href="https://github.com/aw/picolisp-nanomsg/blob/master/EXPLAIN.md">Nanomsg Explanation</a></li> | |||
<li><a href="https://github.com/aw/picolisp-json/blob/master/EXPLAIN.md">JSON Explanation</a></li> | |||
<li><a href="https://git.a1w.ca/aw/picolisp-nanomsg/blob/master/EXPLAIN.md">Nanomsg Explanation</a></li> | |||
<li><a href="https://git.a1w.ca/aw/picolisp-json/blob/master/EXPLAIN.md">JSON Explanation</a></li> | |||
</ul> | |||
<p>This document is split into a few sections:</p> | |||
@@ -1695,7 +1695,7 @@ if left &gt; right then return T # left is newer | |||
<p>The <a href="http://software-lab.de/doc/refL.html#lisp">lisp</a> function is quite special. When using <code class="language-plaintext highlighter-rouge">(native)</code> for C calls, certain functions require a callback as an argument, or “function pointer” (Google it).</p> | |||
<p>The <code class="language-plaintext highlighter-rouge">(ne-set-server-auth)</code> function requires a callback as its second argument, so we create one using <code class="language-plaintext highlighter-rouge">(lisp)</code>. If you’ve read the <a href="https://github.com/aw/picolisp-json/blob/master/EXPLAIN.md#make-array">JSON explanations</a>, you’ll quickly notice there’s an anonymous function in this <code class="language-plaintext highlighter-rouge">(lisp)</code> call. It essentially sends 5 arguments (which are numbers) to the <code class="language-plaintext highlighter-rouge">(do-auth)</code> function, under the name <code class="language-plaintext highlighter-rouge">ne_auth_creds</code>.</p> | |||
<p>The <code class="language-plaintext highlighter-rouge">(ne-set-server-auth)</code> function requires a callback as its second argument, so we create one using <code class="language-plaintext highlighter-rouge">(lisp)</code>. If you’ve read the <a href="https://git.a1w.ca/aw/picolisp-json/blob/master/EXPLAIN.md#make-array">JSON explanations</a>, you’ll quickly notice there’s an anonymous function in this <code class="language-plaintext highlighter-rouge">(lisp)</code> call. It essentially sends 5 arguments (which are numbers) to the <code class="language-plaintext highlighter-rouge">(do-auth)</code> function, under the name <code class="language-plaintext highlighter-rouge">ne_auth_creds</code>.</p> | |||
<p>Here’s the C code to give a better picture:</p> | |||
@@ -1719,7 +1719,7 @@ void ne_set_server_auth(ne_session *sess, ne_auth_creds creds, void *userdata); | |||
<span class="nv">Attempt</span> <span class="p">)</span> | |||
</code></pre></div></div> | |||
<p>Whoa wait, what’s that <code class="language-plaintext highlighter-rouge">@</code> thing doing there? Remember we talked about the <a href="https://github.com/aw/picolisp-nanomsg/blob/master/EXPLAIN.md#nn_symbols">@ result</a>? Well, this is <strong>NOT</strong> that.</p> | |||
<p>Whoa wait, what’s that <code class="language-plaintext highlighter-rouge">@</code> thing doing there? Remember we talked about the <a href="https://git.a1w.ca/aw/picolisp-nanomsg/blob/master/EXPLAIN.md#nn_symbols">@ result</a>? Well, this is <strong>NOT</strong> that.</p> | |||
<p>This is actually a <a href="http://software-lab.de/doc/native.html#libs">transient symbol</a> which refers to the main program (PicoLisp).</p> | |||
@@ -1937,7 +1937,7 @@ void ne_set_server_auth(ne_session *sess, ne_auth_creds creds, void *userdata); | |||
<link href="https://picolisp.a1w.ca/2015/03/08/json/"/> | |||
<updated>2015-03-08T00:00:00+00:00</updated> | |||
<id>https://picolisp.a1w.ca/2015/03/08/json</id> | |||
<content type="html"><p>You can <a href="https://github.com/aw/picolisp-json">get it on GitHub</a>.</p> | |||
<content type="html"><p>You can <a href="https://git.a1w.ca/aw/picolisp-json">get it on my Git server</a>.</p> | |||
<p>This library can be used to parse and serialize (encode/decode) JSON strings in <a href="http://picolisp.com/">PicoLisp</a>.</p> | |||
@@ -1945,7 +1945,7 @@ void ne_set_server_auth(ne_session *sess, ne_auth_creds creds, void *userdata); | |||
<h1 id="explanation-json-encoderdecoder-for-picolisp">Explanation: JSON Encoder/Decoder for PicoLisp</h1> | |||
<p>This document provides a short walkthrough of the source code for the <a href="https://github.com/aw/picolisp-json.git">PicoLisp-JSON</a> encoder/decoder.</p> | |||
<p>This document provides a short walkthrough of the source code for the <a href="https://git.a1w.ca/aw/picolisp-json.git">PicoLisp-JSON</a> encoder/decoder.</p> | |||
<p>It’s split into a few sections for easier reading:</p> | |||
@@ -1962,7 +1962,7 @@ void ne_set_server_auth(ne_session *sess, ne_auth_creds creds, void *userdata); | |||
<p>Make sure you read the <a href="README.md">README</a> to get an idea of what this library does.</p> | |||
<p>Also, I recommend you read my <a href="https://github.com/aw/picolisp-nanomsg/blob/master/EXPLAIN.md">Nanomsg Explanation</a> for additional PicoLisp tips and ideas.</p> | |||
<p>Also, I recommend you read my <a href="https://git.a1w.ca/aw/picolisp-nanomsg/blob/master/EXPLAIN.md">Nanomsg Explanation</a> for additional PicoLisp tips and ideas.</p> | |||
<h1 id="global-variables">Global variables</h1> | |||
@@ -2195,7 +2195,7 @@ enum json_value_type { | |||
<link href="https://picolisp.a1w.ca/2015/02/22/nanomsg/"/> | |||
<updated>2015-02-22T00:00:00+00:00</updated> | |||
<id>https://picolisp.a1w.ca/2015/02/22/nanomsg</id> | |||
<content type="html"><p>You can <a href="https://github.com/aw/picolisp-nanomsg">get it on GitHub</a>.</p> | |||
<content type="html"><p>You can <a href="https://git.a1w.ca/aw/picolisp-nanomsg">get it on my Git server</a>.</p> | |||
<h1 id="picolisp-nanomsg-explanation">PicoLisp-Nanomsg Explanation</h1> | |||
@@ -117,7 +117,7 @@ | |||
<span class="post-date">29 Oct 2020</span> | |||
<p>You can <a href="https://github.com/aw/picolisp-rust">get it on GitHub</a>.</p> | |||
<p>You can <a href="https://git.a1w.ca/aw/picolisp-rust">get it on my Git server</a>.</p> | |||
<p>This repo provides a simple example of how to use <a href="https://software-lab.de/down.html">PicoLisp</a> with <a href="https://www.rust-lang.org/tools/install">Rust</a> using PicoLisp’s FFI <code class="language-plaintext highlighter-rouge">(native)</code> functionality.</p> | |||
@@ -117,7 +117,7 @@ | |||
<span class="post-date">17 Mar 2015</span> | |||
<p>You can <a href="https://github.com/aw/picolisp-bcrypt">get it on GitHub</a>.</p> | |||
<p>You can <a href="https://git.a1w.ca/aw/picolisp-bcrypt">get it on my Git server</a>.</p> | |||
<p>This library can be used to hash strings (ex: passwords) using bcrypt in <a href="http://picolisp.com/">PicoLisp</a>.</p> | |||
@@ -117,7 +117,7 @@ | |||
<span class="post-date">16 Mar 2015</span> | |||
<p>You can <a href="https://github.com/aw/picolisp-https">get it on GitHub</a>.</p> | |||
<p>You can <a href="https://git.a1w.ca/aw/picolisp-https">get it on my Git server</a>.</p> | |||
<p>This library can be used to make HTTP and HTTPS requests in <a href="http://picolisp.com">PicoLisp</a>, with support for authentication.</p> | |||
@@ -125,13 +125,13 @@ | |||
<h1 id="explanation-https-client-for-picolisp">Explanation: HTTP(S) client for PicoLisp</h1> | |||
<p>This document provides a short walkthrough of the source code for the <a href="https://github.com/aw/picolisp-https.git">PicoLisp-HTTPS</a> client.</p> | |||
<p>This document provides a short walkthrough of the source code for the <a href="https://git.a1w.ca/aw/picolisp-https.git">PicoLisp-HTTPS</a> client.</p> | |||
<p>I won’t cover concepts which were covered in previous source code explanations. You can read them here:</p> | |||
<ul> | |||
<li><a href="https://github.com/aw/picolisp-nanomsg/blob/master/EXPLAIN.md">Nanomsg Explanation</a></li> | |||
<li><a href="https://github.com/aw/picolisp-json/blob/master/EXPLAIN.md">JSON Explanation</a></li> | |||
<li><a href="https://git.a1w.ca/aw/picolisp-nanomsg/blob/master/EXPLAIN.md">Nanomsg Explanation</a></li> | |||
<li><a href="https://git.a1w.ca/aw/picolisp-json/blob/master/EXPLAIN.md">JSON Explanation</a></li> | |||
</ul> | |||
<p>This document is split into a few sections:</p> | |||
@@ -297,7 +297,7 @@ | |||
<p>The <a href="http://software-lab.de/doc/refL.html#lisp">lisp</a> function is quite special. When using <code class="language-plaintext highlighter-rouge">(native)</code> for C calls, certain functions require a callback as an argument, or “function pointer” (Google it).</p> | |||
<p>The <code class="language-plaintext highlighter-rouge">(ne-set-server-auth)</code> function requires a callback as its second argument, so we create one using <code class="language-plaintext highlighter-rouge">(lisp)</code>. If you’ve read the <a href="https://github.com/aw/picolisp-json/blob/master/EXPLAIN.md#make-array">JSON explanations</a>, you’ll quickly notice there’s an anonymous function in this <code class="language-plaintext highlighter-rouge">(lisp)</code> call. It essentially sends 5 arguments (which are numbers) to the <code class="language-plaintext highlighter-rouge">(do-auth)</code> function, under the name <code class="language-plaintext highlighter-rouge">ne_auth_creds</code>.</p> | |||
<p>The <code class="language-plaintext highlighter-rouge">(ne-set-server-auth)</code> function requires a callback as its second argument, so we create one using <code class="language-plaintext highlighter-rouge">(lisp)</code>. If you’ve read the <a href="https://git.a1w.ca/aw/picolisp-json/blob/master/EXPLAIN.md#make-array">JSON explanations</a>, you’ll quickly notice there’s an anonymous function in this <code class="language-plaintext highlighter-rouge">(lisp)</code> call. It essentially sends 5 arguments (which are numbers) to the <code class="language-plaintext highlighter-rouge">(do-auth)</code> function, under the name <code class="language-plaintext highlighter-rouge">ne_auth_creds</code>.</p> | |||
<p>Here’s the C code to give a better picture:</p> | |||
@@ -321,7 +321,7 @@ void ne_set_server_auth(ne_session *sess, ne_auth_creds creds, void *userdata); | |||
<span class="nv">Attempt</span> <span class="p">)</span> | |||
</code></pre></div></div> | |||
<p>Whoa wait, what’s that <code class="language-plaintext highlighter-rouge">@</code> thing doing there? Remember we talked about the <a href="https://github.com/aw/picolisp-nanomsg/blob/master/EXPLAIN.md#nn_symbols">@ result</a>? Well, this is <strong>NOT</strong> that.</p> | |||
<p>Whoa wait, what’s that <code class="language-plaintext highlighter-rouge">@</code> thing doing there? Remember we talked about the <a href="https://git.a1w.ca/aw/picolisp-nanomsg/blob/master/EXPLAIN.md#nn_symbols">@ result</a>? Well, this is <strong>NOT</strong> that.</p> | |||
<p>This is actually a <a href="http://software-lab.de/doc/native.html#libs">transient symbol</a> which refers to the main program (PicoLisp).</p> | |||
@@ -117,7 +117,7 @@ | |||
<span class="post-date">08 Mar 2015</span> | |||
<p>You can <a href="https://github.com/aw/picolisp-json">get it on GitHub</a>.</p> | |||
<p>You can <a href="https://git.a1w.ca/aw/picolisp-json">get it on my Git server</a>.</p> | |||
<p>This library can be used to parse and serialize (encode/decode) JSON strings in <a href="http://picolisp.com/">PicoLisp</a>.</p> | |||
@@ -125,7 +125,7 @@ | |||
<h1 id="explanation-json-encoderdecoder-for-picolisp">Explanation: JSON Encoder/Decoder for PicoLisp</h1> | |||
<p>This document provides a short walkthrough of the source code for the <a href="https://github.com/aw/picolisp-json.git">PicoLisp-JSON</a> encoder/decoder.</p> | |||
<p>This document provides a short walkthrough of the source code for the <a href="https://git.a1w.ca/aw/picolisp-json.git">PicoLisp-JSON</a> encoder/decoder.</p> | |||
<p>It’s split into a few sections for easier reading:</p> | |||
@@ -142,7 +142,7 @@ | |||
<p>Make sure you read the <a href="README.md">README</a> to get an idea of what this library does.</p> | |||
<p>Also, I recommend you read my <a href="https://github.com/aw/picolisp-nanomsg/blob/master/EXPLAIN.md">Nanomsg Explanation</a> for additional PicoLisp tips and ideas.</p> | |||
<p>Also, I recommend you read my <a href="https://git.a1w.ca/aw/picolisp-nanomsg/blob/master/EXPLAIN.md">Nanomsg Explanation</a> for additional PicoLisp tips and ideas.</p> | |||
<h1 id="global-variables">Global variables</h1> | |||
@@ -117,7 +117,7 @@ | |||
<span class="post-date">22 Feb 2015</span> | |||
<p>You can <a href="https://github.com/aw/picolisp-nanomsg">get it on GitHub</a>.</p> | |||
<p>You can <a href="https://git.a1w.ca/aw/picolisp-nanomsg">get it on my Git server</a>.</p> | |||
<h1 id="picolisp-nanomsg-explanation">PicoLisp-Nanomsg Explanation</h1> | |||
@@ -117,7 +117,7 @@ | |||
<span class="post-date">16 Sep 2020</span> | |||
<p>You can <a href="https://github.com/aw/picolisp-posixmq">get it on GitHub</a>.</p> | |||
<p>You can <a href="https://git.a1w.ca/aw/picolisp-posixmq">get it on my Git server</a>.</p> | |||
<p><em><a href="https://man7.org/linux/man-pages/man7/mq_overview.7.html">POSIX Message Queues</a></em> provide a dependency-free mechanism for processes to exchange data in the form of messages.</p> | |||
@@ -143,7 +143,7 @@ | |||
<p>The first step is to run the unit tests: <code class="language-plaintext highlighter-rouge">make check</code></p> | |||
<p>If those fail, jump to the <a href="https://github.com/aw/picolisp-posixmq/blob/master/docs/TUTORIALS.md">TUTORIALS</a> section to perform the initial setup and and system check.</p> | |||
<p>If those fail, jump to the <a href="https://git.a1w.ca/aw/picolisp-posixmq/blob/master/docs/TUTORIALS.md">TUTORIALS</a> section to perform the initial setup and and system check.</p> | |||
<p>If all works well, then your system is ready to use this library.</p> | |||
@@ -176,13 +176,13 @@ | |||
<h1 id="documentation">Documentation</h1> | |||
<p>Additional usage and reference documentation can be found in <a href="https://github.com/aw/picolisp-posixmq/blob/master/docs/">docs/</a></p> | |||
<p>Additional usage and reference documentation can be found in <a href="https://git.a1w.ca/aw/picolisp-posixmq/blob/master/docs/">docs/</a></p> | |||
<ul> | |||
<li><a href="https://github.com/aw/picolisp-posixmq/blob/master/docs/TUTORIALS.md">TUTORIALS</a>: some guides <strong>for beginners</strong> to get started using this library</li> | |||
<li><a href="https://github.com/aw/picolisp-posixmq/blob/master/docs/HOWTO.md">HOWTO</a>: a set of recipes for performing more advanced tasks with this library</li> | |||
<li><a href="https://github.com/aw/picolisp-posixmq/blob/master/docs/EXPLAIN.md">EXPLAIN</a>: an explanation of some key concepts, including how this library works</li> | |||
<li><a href="https://github.com/aw/picolisp-posixmq/blob/master/docs/REFERENCE.md">REFERENCE</a>: technical information on the internals of this library</li> | |||
<li><a href="https://git.a1w.ca/aw/picolisp-posixmq/blob/master/docs/TUTORIALS.md">TUTORIALS</a>: some guides <strong>for beginners</strong> to get started using this library</li> | |||
<li><a href="https://git.a1w.ca/aw/picolisp-posixmq/blob/master/docs/HOWTO.md">HOWTO</a>: a set of recipes for performing more advanced tasks with this library</li> | |||
<li><a href="https://git.a1w.ca/aw/picolisp-posixmq/blob/master/docs/EXPLAIN.md">EXPLAIN</a>: an explanation of some key concepts, including how this library works</li> | |||
<li><a href="https://git.a1w.ca/aw/picolisp-posixmq/blob/master/docs/REFERENCE.md">REFERENCE</a>: technical information on the internals of this library</li> | |||
</ul> | |||
</div> | |||
@@ -117,7 +117,7 @@ | |||
<span class="post-date">18 Jun 2020</span> | |||
<p>You can <a href="https://github.com/aw/picolisp-supervisor">get it on GitHub</a>.</p> | |||
<p>You can <a href="https://git.a1w.ca/aw/picolisp-supervisor">get it on my Git server</a>.</p> | |||
<p>This program mimics functionality of <a href="https://yhbt.net/unicorn/">Unicorn</a>, without being limited to HTTP applications.</p> | |||
@@ -117,7 +117,7 @@ | |||
<span class="post-date">16 Jun 2020</span> | |||
<p>You can <a href="https://github.com/aw/picolisp-kv">get it on GitHub</a>.</p> | |||
<p>You can <a href="https://git.a1w.ca/aw/picolisp-kv">get it on my Git server</a>.</p> | |||
<p>This program mimics functionality of a <a href="https://redis.io">Redis™</a> in-memory database, but is designed specifically for <a href="https://picolisp.com">PicoLisp</a> applications with optional on-disk persistence and encryption.</p> | |||
@@ -197,7 +197,7 @@ | |||
-> "12345" | |||
</code></pre></div></div> | |||
<p>Feel free to observe the example code in <a href="https://github.com/aw/picolisp-kv/blob/master/client.l">client.l</a>.</p> | |||
<p>Feel free to observe the example code in <a href="https://git.a1w.ca/aw/picolisp-kv/blob/master/client.l">client.l</a>.</p> | |||
<blockquote> | |||
<p><strong>Note</strong>: Using <code class="language-plaintext highlighter-rouge">(kv-send-data)</code> will send the data to the server and automatically block the client while waiting for a response.</p> | |||
@@ -117,10 +117,10 @@ | |||
<span class="post-date">02 Jan 2020</span> | |||
<p>You can <a href="https://github.com/aw/picolisp-action">get it on GitHub</a> or the <a href="https://github.com/marketplace/actions/picolisp-action">GitHub Marketplace</a>.</p> | |||
<p>You can <a href="https://git.a1w.ca/aw/picolisp-action">get it on my Git server</a> or the <a href="https://github.com/marketplace/actions/picolisp-action">GitHub Marketplace</a>.</p> | |||
<p>This action downloads, compiles, and globally installs PicoLisp. | |||
It can be used to run PicoLisp code such as <a href="https://github.com/aw/picolisp-unit">units tests</a>.</p> | |||
It can be used to run PicoLisp code such as <a href="https://git.a1w.ca/aw/picolisp-unit">units tests</a>.</p> | |||
<p><img src="https://user-images.githubusercontent.com/153401/70022112-e4695580-158a-11ea-886d-0db01dbe7a66.png" alt="Example PicoLisp tests" /></p> | |||
@@ -147,7 +147,7 @@ It can be used to run PicoLisp code such as <a href="https://github.com/aw/picol | |||
<h2 id="example-workflow">Example workflow</h2> | |||
<p>See the <a href="https://github.com/aw/picolisp-json/blob/master/.github/workflows/main.yml">picolisp-json workflow</a> for a more detailed usage example.</p> | |||
<p>See the <a href="https://git.a1w.ca/aw/picolisp-json/blob/master/.github/workflows/main.yml">picolisp-json workflow</a> for a more detailed usage example.</p> | |||
<h2 id="code">Code</h2> | |||
@@ -117,11 +117,11 @@ | |||
<span class="post-date">15 Mar 2019</span> | |||
<p>You can <a href="https://github.com/aw/picolisp-awscurl">get it on GitHub</a>.</p> | |||
<p>You can <a href="https://git.a1w.ca/aw/picolisp-awscurl">get it on my Git server</a>.</p> | |||
<p>This command line tool can be used to sign <a href="https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html">AWS Signature Version 4</a> requests and make calls to various AWS APIs.</p> | |||
<p><a href="https://github.com/aw/picolisp-awscurl"><img src="https://img.shields.io/github/release/aw/picolisp-awscurl.svg" alt="GitHub release" /></a> <a href="https://github.com/aw/picolisp-unit.git"><img src="https://img.shields.io/badge/[deps] picolisp--unit-v3.0.0-ff69b4.svg" alt="Dependency" /></a> <img src="https://github.com/aw/picolisp-awscurl/workflows/CI/badge.svg?branch=master" alt="Build status" /></p> | |||
<p><a href="https://git.a1w.ca/aw/picolisp-awscurl"><img src="https://img.shields.io/github/release/aw/picolisp-awscurl.svg" alt="GitHub release" /></a> <a href="https://github.com/aw/picolisp-unit.git"><img src="https://img.shields.io/badge/[deps] picolisp--unit-v3.0.0-ff69b4.svg" alt="Dependency" /></a> <img src="https://github.com/aw/picolisp-awscurl/workflows/CI/badge.svg?branch=master" alt="Build status" /></p> | |||
<ol> | |||
<li><a href="#requirements">Requirements</a></li> | |||
@@ -132,7 +132,7 @@ | |||
<h1 id="requirements">Requirements</h1> | |||
<ul> | |||
<li><code class="language-plaintext highlighter-rouge">picolisp</code>: 32-bit or 64-bit <code class="language-plaintext highlighter-rouge">v3.1.11+</code>, tested up to PicoLisp <code class="language-plaintext highlighter-rouge">v20.6.29</code>, <a href="https://github.com/aw/picolisp-awscurl/actions/">see test runs</a></li> | |||
<li><code class="language-plaintext highlighter-rouge">picolisp</code>: 32-bit or 64-bit <code class="language-plaintext highlighter-rouge">v3.1.11+</code>, tested up to PicoLisp <code class="language-plaintext highlighter-rouge">v20.6.29</code>, <a href="https://git.a1w.ca/aw/picolisp-awscurl/actions/">see test runs</a></li> | |||
<li><code class="language-plaintext highlighter-rouge">libcrypto.so</code>: for using <code class="language-plaintext highlighter-rouge">--native</code> functions with PicoLisp <code class="language-plaintext highlighter-rouge">v17.12+</code></li> | |||
<li><code class="language-plaintext highlighter-rouge">picolisp-unit</code>: <code class="language-plaintext highlighter-rouge">v3.0.0+</code> for testing the library</li> | |||
<li><code class="language-plaintext highlighter-rouge">openssl</code>: <code class="language-plaintext highlighter-rouge">v1.0.0+</code> for signing and hashing strings</li> | |||
@@ -147,7 +147,7 @@ | |||
<h2 id="warning">WARNING</h2> | |||
<p>There is currently <strong>no validation</strong> on command line arguments. Be careful the input you provide. <a href="https://github.com/aw/picolisp-awscurl/issues/1">See issue #1</a></p> | |||
<p>There is currently <strong>no validation</strong> on command line arguments. Be careful the input you provide. <a href="https://git.a1w.ca/aw/picolisp-awscurl/issues/1">See issue #1</a></p> | |||
<h3 id="environment-variables">Environment variables</h3> | |||
@@ -117,7 +117,7 @@ | |||
<span class="post-date">11 May 2018</span> | |||
<p>You can <a href="https://github.com/aw/picolisp-json">get it on GitHub</a>.</p> | |||
<p>You can <a href="https://git.a1w.ca/aw/picolisp-json">get it on my Git server</a>.</p> | |||
<p>This library can be used to parse and serialize (encode/decode) JSON strings in <a href="http://picolisp.com/">PicoLisp</a>.</p> | |||
@@ -125,9 +125,9 @@ | |||
<h1 id="explanation-json-encoderdecoder-in-pure-picolisp">Explanation: JSON Encoder/Decoder in pure PicoLisp</h1> | |||
<p>This document provides a short walkthrough of the source code for the <a href="https://github.com/aw/picolisp-json.git">PicoLisp-JSON</a> encoder/decoder.</p> | |||
<p>This document provides a short walkthrough of the source code for the <a href="https://git.a1w.ca/aw/picolisp-json.git">PicoLisp-JSON</a> encoder/decoder.</p> | |||
<p><strong>Note:</strong> This document covers <code class="language-plaintext highlighter-rouge">v3</code> of the JSON library. To view the older (C/ffi bindings) version <a href="https://github.com/aw/picolisp-json/blob/v2.2.0/EXPLAIN.md">click here</a>.</p> | |||
<p><strong>Note:</strong> This document covers <code class="language-plaintext highlighter-rouge">v3</code> of the JSON library. To view the older (C/ffi bindings) version <a href="https://git.a1w.ca/aw/picolisp-json/blob/v2.2.0/EXPLAIN.md">click here</a>.</p> | |||
<p>It’s split into a few sections for easier reading:</p> | |||
@@ -340,7 +340,7 @@ In other words, our tokenized <code class="language-plaintext highlighter-rouge" | |||
<h2 id="encoding-json">encoding JSON</h2> | |||
<p>The code for encoding JSON strings hasn’t changed, so feel free to <a href="https://github.com/aw/picolisp-json/blob/master/EXPLAIN.md#encoding-json">read about it here</a>.</p> | |||
<p>The code for encoding JSON strings hasn’t changed, so feel free to <a href="https://git.a1w.ca/aw/picolisp-json/blob/master/EXPLAIN.md#encoding-json">read about it here</a>.</p> | |||
</div> | |||
@@ -117,7 +117,7 @@ | |||
<span class="post-date">27 Feb 2017</span> | |||
<p>You can <a href="https://github.com/aw/picolisp-semver">get it on GitHub</a>.</p> | |||
<p>You can <a href="https://git.a1w.ca/aw/picolisp-semver">get it on my Git server</a>.</p> | |||
<p>This library can validate and compare <strong>Major.Minor.Patch</strong> versions (ex: <code class="language-plaintext highlighter-rouge">"1.0.0"</code>). | |||
It ignores pre-release, build, metadata, and special extensions (ex: <code class="language-plaintext highlighter-rouge">.alpha.1</code>).</p> | |||
@@ -117,7 +117,7 @@ | |||
<span class="post-date">18 Mar 2015</span> | |||
<p>You can <a href="https://github.com/aw/picolisp-unit">get it on GitHub</a>.</p> | |||
<p>You can <a href="https://git.a1w.ca/aw/picolisp-unit">get it on my Git server</a>.</p> | |||
<p>This library can be used for Unit Testing your <a href="http://picolisp.com/">PicoLisp</a> code.</p> | |||
@@ -125,14 +125,14 @@ | |||
<h1 id="explanation-unit-testing-framework-for-picolisp">Explanation: Unit Testing framework for PicoLisp</h1> | |||
<p>This document provides a short walkthrough of the source code for the <a href="https://github.com/aw/picolisp-unit">PicoLisp-Unit</a> testing framework.</p> | |||
<p>This document provides a short walkthrough of the source code for the <a href="https://git.a1w.ca/aw/picolisp-unit">PicoLisp-Unit</a> testing framework.</p> | |||
<p>I won’t cover concepts which were discussed in previous source code explanations. You can read them here:</p> | |||
<ul> | |||
<li><a href="https://github.com/aw/picolisp-nanomsg/blob/master/EXPLAIN.md">Nanomsg Explanation</a></li> | |||
<li><a href="https://github.com/aw/picolisp-json/blob/master/EXPLAIN.md">JSON Explanation</a></li> | |||
<li><a href="https://github.com/aw/picolisp-https/blob/master/EXPLAIN.md">HTTPS Explanation</a></li> | |||
<li><a href="https://git.a1w.ca/aw/picolisp-nanomsg/blob/master/EXPLAIN.md">Nanomsg Explanation</a></li> | |||
<li><a href="https://git.a1w.ca/aw/picolisp-json/blob/master/EXPLAIN.md">JSON Explanation</a></li> | |||
<li><a href="https://git.a1w.ca/aw/picolisp-https/blob/master/EXPLAIN.md">HTTPS Explanation</a></li> | |||
</ul> | |||
<p>This document is split into a few sections:</p> | |||
@@ -317,7 +317,7 @@ | |||
<p>This one is quite simple, all it does is check if <code class="language-plaintext highlighter-rouge">Expected</code> is equal to <code class="language-plaintext highlighter-rouge">Result</code>.</p> | |||
<p>The <a href="https://github.com/aw/picolisp-unit/blob/master/README.md#assertions-table">other assertions</a> are quite similar and seem to cover most test cases. I’ve considered adding opposite tests such as <code class="language-plaintext highlighter-rouge">refute</code>, but I’ve rarely found a need for them as there are alternate approaches.</p> | |||
<p>The <a href="https://git.a1w.ca/aw/picolisp-unit/blob/master/README.md#assertions-table">other assertions</a> are quite similar and seem to cover most test cases. I’ve considered adding opposite tests such as <code class="language-plaintext highlighter-rouge">refute</code>, but I’ve rarely found a need for them as there are alternate approaches.</p> | |||
</div> | |||