Changes
Translation components API.
See the Weblate's Web API documentation for detailed description of the API.
GET /api/translations/cnp3-ebook/exercisessockets/en/changes/?format=api
https://weblate.info.ucl.ac.be/api/units/37485/?format=api", "component": "https://weblate.info.ucl.ac.be/api/components/cnp3-ebook/exercisessockets/?format=api", "translation": "https://weblate.info.ucl.ac.be/api/translations/cnp3-ebook/exercisessockets/en/?format=api", "user": null, "author": null, "timestamp": "2022-09-17T01:14:26.147994+02:00", "action": 59, "target": "Popular operating systems allow isolating different programs by executing them in separate `processes`. A :term:`socket` is a tool provided by the operating system that enables two separated processes to communicate with each other. A socket takes the form of a file descriptor and can be seen as a communication pipe through which the communicating processes can exchange arbitrary information. In order to receive a message, a process must be attached to a specific :term:`address` that the peer can use to reach it.", "id": 14697, "action_name": "String updated in the repository", "url": "https://weblate.info.ucl.ac.be/api/changes/14697/?format=api" }, { "unit": "https://weblate.info.ucl.ac.be/api/units/37486/?format=api", "component": "https://weblate.info.ucl.ac.be/api/components/cnp3-ebook/exercisessockets/?format=api", "translation": "https://weblate.info.ucl.ac.be/api/translations/cnp3-ebook/exercisessockets/en/?format=api", "user": null, "author": null, "timestamp": "2022-09-17T01:14:26.148102+02:00", "action": 59, "target": "In order to reach a peer, a process must know its :term:`address`. An address is a value that identifies a peer in a given network. There exists many different kinds of address families. For example, some of them allow reaching a peer using the file system on the computer. Some others enable communicating with a remote peer through a network. The socket API provides generic functions: the peer address is taken as a ``struct sockaddr *``, which can point to any family of address. This is partly why sockets are a powerful abstraction.", "id": 14698, "action_name": "String updated in the repository", "url": "https://weblate.info.ucl.ac.be/api/changes/14698/?format=api" }, { "unit": "https://weblate.info.ucl.ac.be/api/units/37487/?format=api", "component": "https://weblate.info.ucl.ac.be/api/components/cnp3-ebook/exercisessockets/?format=api", "translation": "https://weblate.info.ucl.ac.be/api/translations/cnp3-ebook/exercisessockets/en/?format=api", "user": null, "author": null, "timestamp": "2022-09-17T01:14:26.148166+02:00", "action": 59, "target": "Operating systems allow assigning an address to a socket using the ``bind`` system call. This is useful when you want to receive messages from another program to which you announced your socket address. Once the address is assigned to the socket, the program can receive data from others using system calls such as ``recv`` and ``read``. Note that we can use the ``read`` system call as the operating system provides a socket as a file descriptor.", "id": 14699, "action_name": "String updated in the repository", "url": "https://weblate.info.ucl.ac.be/api/changes/14699/?format=api" }, { "unit": "https://weblate.info.ucl.ac.be/api/units/37488/?format=api", "component": "https://weblate.info.ucl.ac.be/api/components/cnp3-ebook/exercisessockets/?format=api", "translation": "https://weblate.info.ucl.ac.be/api/translations/cnp3-ebook/exercisessockets/en/?format=api", "user": null, "author": null, "timestamp": "2022-09-17T01:14:26.148222+02:00", "action": 59, "target": "While the provided examples show the usage of a `char` array as the data buffer, implementers should **never** assume that it contains a string. C programs rely on the `char` type to refer to a 8-bit long value, and arbitrary binary values can be exchanged over the network (i.e., the ``\\0`` value does not delimit the end of the data).", "id": 14700, "action_name": "String updated in the repository", "url": "https://weblate.info.ucl.ac.be/api/changes/14700/?format=api" }, { "unit": "https://weblate.info.ucl.ac.be/api/units/37489/?format=api", "component": "https://weblate.info.ucl.ac.be/api/components/cnp3-ebook/exercisessockets/?format=api", "translation": "https://weblate.info.ucl.ac.be/api/translations/cnp3-ebook/exercisessockets/en/?format=api", "user": null, "author": null, "timestamp": "2022-09-17T01:14:26.148276+02:00", "action": 59, "target": "Operating systems enable linking a socket to a remote address so that every information sent through the socket will only be sent to this remote address, and the socket will only receive messages sent by this remote address. This can be done using the ``connect`` system call shown below.", "id": 14701, "action_name": "String updated in the repository", "url": "https://weblate.info.ucl.ac.be/api/changes/14701/?format=api" }, { "unit": "https://weblate.info.ucl.ac.be/api/units/37490/?format=api", "component": "https://weblate.info.ucl.ac.be/api/components/cnp3-ebook/exercisessockets/?format=api", "translation": "https://weblate.info.ucl.ac.be/api/translations/cnp3-ebook/exercisessockets/en/?format=api", "user": null, "author": null, "timestamp": "2022-09-17T01:14:26.148329+02:00", "action": 59, "target": "The first possibility was named `big-endian` in a note written by Cohen [Cohen1980]_ while the second was named `little-endian`. Vendors of CPUs that used `big-endian` in memory insisted on using `big-endian` encoding in networked applications while vendors of CPUs that used `little-endian` recommended the opposite. Several studies were written on the relative merits of each type of encoding, but the discussion became almost a religious issue [Cohen1980]_. Eventually, the Internet chose the `big-endian` encoding, i.e. multi-byte fields are always transmitted by sending the most significant byte first, :rfc:`791` refers to this encoding as the :term:`network-byte order`. Most libraries [#fhtonl]_ used to write networked applications contain functions to convert multi-byte fields from memory to the network byte order and the reverse.", "id": 14702, "action_name": "String updated in the repository", "url": "https://weblate.info.ucl.ac.be/api/changes/14702/?format=api" }, { "unit": "https://weblate.info.ucl.ac.be/api/units/37491/?format=api", "component": "https://weblate.info.ucl.ac.be/api/components/cnp3-ebook/exercisessockets/?format=api", "translation": "https://weblate.info.ucl.ac.be/api/translations/cnp3-ebook/exercisessockets/en/?format=api", "user": null, "author": null, "timestamp": "2022-09-17T01:14:26.148384+02:00", "action": 59, "target": "During this course, you will be asked to implement a transport protocol running on Linux devices. To prepare yourself, try to implement the protocol described in the above tasks on your Linux personal machine. If you did these exercises correctly, most of your answers can be used as it (do not forget to include the required header files). In addition to the previously produced code, you will need", "id": 14703, "action_name": "String updated in the repository", "url": "https://weblate.info.ucl.ac.be/api/changes/14703/?format=api" }, { "unit": "https://weblate.info.ucl.ac.be/api/units/37492/?format=api", "component": "https://weblate.info.ucl.ac.be/api/components/cnp3-ebook/exercisessockets/?format=api", "translation": "https://weblate.info.ucl.ac.be/api/translations/cnp3-ebook/exercisessockets/en/?format=api", "user": null, "author": null, "timestamp": "2022-09-17T01:14:26.148440+02:00", "action": 59, "target": "to wrap the ``create_and_send_message`` in a ``client`` executable that can parse user arguments (the ``getopt(3)`` function might help) and appropriately call the wrapped function;", "id": 14704, "action_name": "String updated in the repository", "url": "https://weblate.info.ucl.ac.be/api/changes/14704/?format=api" }, { "unit": "https://weblate.info.ucl.ac.be/api/units/37493/?format=api", "component": "https://weblate.info.ucl.ac.be/api/components/cnp3-ebook/exercisessockets/?format=api", "translation": "https://weblate.info.ucl.ac.be/api/translations/cnp3-ebook/exercisessockets/en/?format=api", "user": null, "author": null, "timestamp": "2022-09-17T01:14:26.148504+02:00", "action": 59, "target": "to wrap the ``recv_and_handle_message`` server function in a ``server`` executable, similarly to what you have done with the ``client`` executable.", "id": 14705, "action_name": "String updated in the repository", "url": "https://weblate.info.ucl.ac.be/api/changes/14705/?format=api" }, { "unit": "https://weblate.info.ucl.ac.be/api/units/37494/?format=api", "component": "https://weblate.info.ucl.ac.be/api/components/cnp3-ebook/exercisessockets/?format=api", "translation": "https://weblate.info.ucl.ac.be/api/translations/cnp3-ebook/exercisessockets/en/?format=api", "user": null, "author": null, "timestamp": "2022-09-17T01:14:26.148558+02:00", "action": 59, "target": "As an example, here is what you could have to invoke your programs.", "id": 14706, "action_name": "String updated in the repository", "url": "https://weblate.info.ucl.ac.be/api/changes/14706/?format=api" }, { "unit": "https://weblate.info.ucl.ac.be/api/units/37495/?format=api", "component": "https://weblate.info.ucl.ac.be/api/components/cnp3-ebook/exercisessockets/?format=api", "translation": "https://weblate.info.ucl.ac.be/api/translations/cnp3-ebook/exercisessockets/en/?format=api", "user": null, "author": null, "timestamp": "2022-09-17T01:14:26.148609+02:00", "action": 59, "target": "If you want to observe the packets exchanged over the network, use a packet dissector such as `wireshark`_ or `tcpdump`_, listen the loopback interface (``lo``) and filter UDP packets using port 10000 (``udp.port==10000`` in `wireshark`_, ``udp port 10000`` with `tcpdump`_).", "id": 14707, "action_name": "String updated in the repository", "url": "https://weblate.info.ucl.ac.be/api/changes/14707/?format=api" }, { "unit": null, "component": "https://weblate.info.ucl.ac.be/api/components/cnp3-ebook/exercisessockets/?format=api", "translation": "https://weblate.info.ucl.ac.be/api/translations/cnp3-ebook/exercisessockets/en/?format=api", "user": null, "author": null, "timestamp": "2022-09-17T01:14:26.148658+02:00", "action": 0, "target": "", "id": 14708, "action_name": "Resource update", "url": "https://weblate.info.ucl.ac.be/api/changes/14708/?format=api" } ] }{ "count": 12, "next": null, "previous": null, "results": [ { "unit": "