/pr/ – programming


8afc68afc67de3382436389ed7e941ca2c2c4 – ``Клиента тред''

@b1bceb835734462bbf758ab23529612f Anonymous 2018-07-16 15:53:20
Писать буду на rust (книгу их полгода назад прочел). Т.к. на нем нихера еще не писал, то будет медленно получаться, думаю. Если совсем медленно будет, то надо забить и наговнякать на дристоне сначала.
Первым делом нужно написать основу без гуйни, которая делает запросы и может в SSE.
Потом написать хуйню для локального хранилища. Подумать в чем хранить данные (в идеале, должно быть опциально на выбор: файлы, sqlite какой-нибудь богомерзкий, etc.)
Потом пилить гуйню.
@3b75a502febf4e6cae1fadc85579467b Anonymous 2018-07-16 16:15:00
Вот эта библиотека (http client) https://docs.rs/reqwest/0.8.6/reqwest/ выглядит норм (примеры хотя бы человеческие и без излишней ебли, как в https://hyper.rs/), но под прыщи у нее
Requirements
On Linux:
OpenSSL 1.0.1, 1.0.2, or 1.1.0 with headers
On Windows and macOS:
Nothing.

https://github.com/seanmonstar/reqwest
@2735da31d0644b11be1d30f2a1cad0fd Anonymous 2018-07-16 16:15:31
@edc412026476479091f544c1120f2285 Anonymous 2018-07-16 16:25:54
Ну блядь, оно даже в socks5 проксю не может:
https://docs.rs/reqwest/0.8.6/reqwest/struct.Proxy.html
https://github.com/seanmonstar/reqwest/issues/287
Отпадает значит.
@8a469a0a6b61430f80e7c10fa067dcea Anonymous 2018-07-16 16:29:57
Нет, все какое-то сырое. Значит дристон.
@80153c22331b464ab9222d83fc4e5018 Anonymous 2018-07-17 07:49:47
@64373c4f3bde4bf990dbbbea114a434b Anonymous 2018-07-17 17:51:16
@79d18c59ac844e948df7f7620e62c026 Anonymous 2018-07-17 23:26:39
test3
@ed163eb309ec4dcdb56953bd75477812 Anonymous 2018-07-17 23:29:25
adsf
@45d443a7e8844cc3811c8edbd807f031 Anonymous 2018-07-18 00:00:05
@b1bce@b1bceb835734462bbf758ab23529612f
>Первым делом нужно написать основу без гуйни, которая делает запросы и может в SSE.
Все, этот этап пройден.
Дальше надо поробовать сконверить данные в базе в орг мод. В процессе должна вырисоваться структура. Интересно можно ли там отображать цвета.
@f833f1a4974e4f1d8f0db762152f6430 Anonymous 2018-07-18 06:08:19
@af4fe@af4fe066fdd8444fa81b0fd4f4f13168 Я вот тоже подумал, переспал с этой мыслью про использование орг мода, все-таки не надо орг мод вместо базы. Не представляю, как там запросы тогда делать (взять по айди, взять страницу с тредами, фильтрация постов по "из борд", "из чата"), придется какие-то индексы руками создавать, для параймари кей, для всей хуйни, где-то их хранить. Это будет велосипедостроительстно.
@a0e69540cd8f454f86f9704a40b25715 Anonymous 2018-07-18 06:10:13
Думаю так надо сделать: будет использоваться sqlite, но будет возможность выгрузить данные в орг мод файлы (как репорты) автоматически/вручную, если юзеру это надо.
@93a3add5af8c486f9b28f3cd9fd58b1a Anonymous 2018-07-18 19:27:42
Сконвертил данные в sqlite. Основа клиентской базы: http://pfpmd7dd5ijt4add2sfi4djsaij4u3ebvnwvyvuj6aeipe2f5llptkid.onion/static/pfpmd20180718.7z
Есть все посты с первого до @dba3d@dba3d90d128c4d7c932e0a785d29ff08
@5837830ce5cb452c8ad3d92eedb7bdb6 Anonymous 2018-07-19 09:25:12
Сначала надо сделать неинтерактивный консольный комманд лайн интерфейс.
@5e09eae0284d4656a1c7146767ef3d32 Anonymous 2018-07-19 09:27:04
На фрматирование пока забить.
@ccf1803458174d0f9a0c4e1e9b1ed814 Anonymous 2018-07-19 09:39:30
Потом TUI. Посмотреть как сделано здесь https://gitweb.torproject.org/nyx.git/tree/nyx
@5d46605da7c148b5a5da4ce3aff9d418 Anonymous 2018-07-19 19:14:37
Оншен "work offline".
@71ba6aca34234f7caf687d122b645368 Anonymous 2018-07-19 22:15:55
*п
@35b6f7c692f64851af0b98c0655f8883 Anonymous 2018-07-19 22:33:12
@b1bce@b1bceb835734462bbf758ab23529612f
>Потом написать хуйню для локального хранилища.
Этот этап тоже пройден. Все, надо начинать CLI.
@af9f277e5e8a4bc0841ca4c2e88d4273 Anonymous 2018-07-19 22:36:33
Алсо, надо добавить таблицу в локальную базу для неотправленных сообщений (которые появились, например, если юзер в офлайне постил или у него проблемы с коннекшеном произошли).
@49053a813ed846e6aef2cd5fe63c4aee Anonymous 2018-07-19 22:52:29
@30db524fcae6445180a2e601ad59132b Anonymous 2018-07-20 00:49:37
test
@9a89eb9fbee54a53a7db32daf432c9f6 Anonymous 2018-07-20 08:48:33
Цвета поста в консоли пытаться отобразить. Но не везде поддерживается труколор, поэтому надо дополнительно вывести цвета (6 байт, а может даже только одного цвета хватит, т.е. 3 байта) сконверченные в base58.
@ea189096fb37401399da57af9612987d Anonymous 2018-07-20 19:07:29
Узнать ширину соснольки без лишней ебли: https://docs.python.org/3.6/library/shutil.html#querying-the-size-of-the-output-terminal
@da70a5cd623d4347a74d3a416e174a8a Anonymous 2018-07-20 20:40:07
Слишком много времени трачу на эти цвета. На винде все хуево отображается, через жопу. В cygwin нормально.
Надо сдетектить из питона в cmd.exe ли выполнение происходит и если да, то просто отключить цвета.
@ed1417967fb5439aafe672b140e90c4b Anonymous 2018-07-20 22:58:15
Вот такая херня получается http://pfpmd7dd5ijt4add2sfi4djsaij4u3ebvnwvyvuj6aeipe2f5llptkid.onion/static/images/client_cli.png Думаю, сойдет пока.
@ccf18@ccf1803458174d0f9a0c4e1e9b1ed814 TUI в жопу, передумал ебаться с этими ncurses. Потом, может быть. Лучше делать веб интерфейс (когда допилию CLI).
@b5df6e99aa2c46518c489eb8ac923427 Anonymous 2018-07-27 06:22:46
@f7bfd7d9b8fe49fc93668071c9e0eafb Anonymous 2018-07-28 03:01:43
перепутал тред @2d9d6@2d9d6ccbc8e7433f8e03fd33e7d86bb6
@f3f1144f19b547f1b125a7a26cc641ba Anonymous 2018-07-28 22:53:27
Bugs:
-sub не добавляет новые посты в базу
-sub пропускает во время реконнекта новые посты и создаются пропуски
@ab80f89edf3b44329189c89db2e4e469 Anonymous 2018-08-01 23:42:06
## [0.1.0] - 2018-07-29 (дату забыл поменять)
### Added
- Changelog.
- Formatting: bold, italic, mono.
- change_colors command.

### Fixed
- sub must save new posts to the local db.
- sub must not lose new posts while reconnecting.
- Missing messages were added to the local db.

[0.1.0]: http://pfpmd7dd5ijt4add2sfi4djsaij4u3ebvnwvyvuj6aeipe2f5llptkid.onion/static/pfpmd-client_0.1.0.7z
@47b07136241a4b1c9e546a7ceee8eda6 Anonymous 2018-08-05 22:14:59
Веб ui, вижу следующий интерфейс: панель слева, которая изменяется по ширине и убирается если клинкуть на вертикальную границу (как в confluence). В боковой панели отображается список всех борд (подгружаются по скроллу) отсортированных по активности (?), сверху есть поле поиска и над ним символ омега. Можно добавить борду в избранные и тогда над ней будет значок, что она в избранных. И тогда надо избранные борды показывать вверху. Да, и надо чтобы можно было сгруппировать их (как в vscode отображается в группке сверху открытые файлы). Когда кликаешь в боковой панели на борду, то появляется рядом еще одна боковая панель (тоже изменяемая по ширине и скрываемая) с похожим списком, но не борд, а заголовков тредов выбранной борды (e.g. /pr/ - клиента тред), отсортированных по дате последнего поста. Треды тоже можно добавлять в избранные. Значит тоже будет сверху сворачиваемая группа избранных тредов. У тредов и борд еще должен быть значок отражающий количество "новых" постов (которые юзер еще не отображал). Чат можно отображать в сворачиваемом плавающем, не модальном окне, ресайзабл. Кликаешь в верхнем меню на иконку чата и хоп - появляется окно с чатом. Рядом с этой иконкой отображается количество "новых" постов. Окно можно перемещать, можно разделить основное пространство (то, что не занято боковыми панелями, т.е. справа от них) по горизонтали или вертикали и отображать в нем чат (тоже должно быть можно изменять ширину/высоту). Когда кликаешь на борду, то в основном пространстве отображаются все треды этой борды. Когда на тред, то страница этого треда. Поле ответа не надо показываться, оно должно появляться по клику на что-то (кнопку, хз).
@ab341c59ba3d4a75a765097986eb2691 Anonymous 2018-08-05 22:17:11
>Кликаешь в верхнем меню на иконку чата и хоп - появляется окно с чатом.
Кликаешь еще раз по ней же или жмешь Esc и оно скрывается.
@d0205fe19f0345e7a9ea10c419dc5665 Anonymous 2018-08-05 23:00:30
>отсортированных по активности (?)
и по датам тоже должно быть можно (опционально). Добавть над списком "Order by: " и выбор: "activity", "post date".
@4b1a9642fddc463a96e80405172154ef Anonymous 2018-08-05 23:04:07
>"Order by: "
Нет, лучше иконки, например, https://www.iconfinder.com/icons/244360/filter_sort_icon
Надо больше иконок.
@05b7a18a32fa4e9383378f6883c720b9 Anonymous 2018-11-27 18:32:25
## [0.2.0] - 2018-11-27
### Added
- Not finished Web UI prototype that is not yet connected to the backend.
- Flask backend for Web UI with basic methods.
- New CLI command serve to start Web UI backend.

### Changed
- The local db was updated up to 63778.

### Fixed
- A timeout was added for http post requests.

[0.2.0]: http://pfpmd7dd5ijt4add2sfi4djsaij4u3ebvnwvyvuj6aeipe2f5llptkid.onion/static/pfpmd-client_0.2.0.7z
@808de1e50b6f40e3bd3559f6304851c6 Anonymous 2018-11-29 18:21:43
## [0.3.0] - 2018-11-29
### Added
- is_favorite flag for board and thread.
- API to get boards and threads to Web UI backend.
- Parsers (Web UI.)

### Changed
- The json encoder of Web UI backend so that output keys are in camelCase.
- Web UI sidebars and thread pages were connected to the backend.
- API to get thread pages (Web UI.)

[0.3.0]: http://pfpmd7dd5ijt4add2sfi4djsaij4u3ebvnwvyvuj6aeipe2f5llptkid.onion/static/pfpmd-client_0.3.0.7z
@373c65b7d8d941ec9f3539a749d907aa Anonymous 2018-11-29 18:26:49
@4040683376f54cadbede09a3b3b4c7fa Anonymous 2018-12-02 19:56:34
## 0.4.0 - 2018-12-02
### Added
- A pagination view (Web UI.)
- For thread pages, navigation through pages (Web UI.)
- page_size to the page thread model.
- A function that for each non-API call returns index.html (Web UI backend.)
- A selectable element view and its decorators for sidebar board and sidebar thread views (Web UI.)

### Changed
- popState handler to handle navigation through pages (Web UI.)
- Sidebar board and sidebar thread views were refactored
to use the decorated selectable element views (Web UI.)
- Using less instead of css.

### Fixed
- popState handler: it's not needed to pass thread, board, etc models through the state,
because the location already has all necessary information.

[latest]: http://pfpmd7dd5ijt4add2sfi4djsaij4u3ebvnwvyvuj6aeipe2f5llptkid.onion/static/pfpmd-client_latest.7z
@8739cc662951435d90e3187cd4dcdf75 Anonymous 2018-12-06 20:37:07
## 0.5.0 - 2018-12-06
### Added
- Warp model and view (Web UI.)
- A shell thread view and its thread banner view (Web UI.)
- page_size to the warp model.
- Loading a warp to the container when the path is '/' (Web UI.)
- Loading a warp of a board when the board is selected (Web UI.)
- Loading a warp on popState (Web UI.)
- Navigation through pages of a warp (Web UI.)
- Posts count to thread table and triggers to update it (local db.)
- A summary view for shell threads (Web UI.)

### Changed
- The local db was updated up to 63911.

[latest]: http://pfpmd7dd5ijt4add2sfi4djsaij4u3ebvnwvyvuj6aeipe2f5llptkid.onion/static/pfpmd-client_latest.7z
@ec4edd4052e648be9873d8307b3955f8 Anonymous 2018-12-09 16:59:50
## 0.6.0 - 2018-12-09
### Added
- Custom events: selectBoard, selectThread, selectGlobalPage (Web UI.)
- A new thread form view (Web UI.)

### Changed
- Decouple sidebars from each other and the container using the custom events (Web UI.)
- Decouple history navigation service from sidebars using the custom events (Web UI.)
- Allow sidebars load their items themselves (Web UI.)
- Don't make another thread sidebar instance when a board is selected (Web UI.)

### Fixed
- When a board/thread is selected from a warp, refresh sidebars' state (Web UI.)

### Removed
- Decorators of "selectable" view (Web UI.)

[latest]: http://pfpmd7dd5ijt4add2sfi4djsaij4u3ebvnwvyvuj6aeipe2f5llptkid.onion/static/pfpmd-client_latest.7z
@4584150d9f4d44d28afdd62371bbd0cb Anonymous 2018-12-24 01:37:28
## 0.7.0 - 2018-12-24
### Added
- A link to the pfpmd home page (Web UI.)
- A chat body view that loads recent posts to the chat container (Web UI.)
- A chat form with a single autoresizable textbox (Web UI.)
- A days separator (Web UI.)
- Inserting a newline on alt+enter in the chat textbox (Web UI.)
- A view that for the given element keeps its scroll position at the bottom (Web UI.)
- Using this view for the chat container (Web UI.)

[latest]: http://pfpmd7dd5ijt4add2sfi4djsaij4u3ebvnwvyvuj6aeipe2f5llptkid.onion/static/pfpmd-client_latest.7z
@c06f9ef8248e4020829f18478718d583 Anonymous 2018-12-26 09:57:31
## 0.8.0 - 2018-12-26
### Added
- Loading more posts into the chat on scroll (Web UI.)
- Loading more threads into the sidebar on scroll (Web UI.)
- Loading more boards into the sidebar on scroll (Web UI.)
- Highlighting posts from other boards in the chat (Web UI.)
- Links to the board and the thread of such posts (Web UI.)
- A links to the board inside the board banner when a thread page is selected (Web UI.)

### Changed
- API for getting sidebar threads/boards now takes is_favorite value (Web UI backend.)
- Each sidebar now does two requests to get favorite/other threads/boards instead of one (Web UI.)

[latest]: http://pfpmd7dd5ijt4add2sfi4djsaij4u3ebvnwvyvuj6aeipe2f5llptkid.onion/static/pfpmd-client_latest.7z
@fda5a4954476407687dae9c6695344e4 Anonymous 2019-01-05 04:56:34
## 0.9.0 - 2019-01-05
### Added
- Formatting of posts (Web UI.)
- Strikethrough markup: ~~ (Web UI.)
- Loading and showing a post on hover a post reference (Web UI.)
- Post references as links, e.g. /@9e74c@9e74c8a111414e5fbe4c890e382bbb80. If such a link is opened in a new tab,
the location is replaced by the thread page of this post and the post is highlighted.
If the link is clicked in the current tab, the thread page of this post is loaded into the container,
the post is highlighted and the location is changed. (Web UI.)
- Post page info model and API to get it (Web UI and Web UI backend.)
- A post decorator that adds post's id (Web UI.)
- KaTex version 0.10.0 (Web UI.)

### Changed
- The post view was simplified and the reply logic was moved to a decorator (Web UI.)

[latest]: http://pfpmd7dd5ijt4add2sfi4djsaij4u3ebvnwvyvuj6aeipe2f5llptkid.onion/static/pfpmd-client_latest.7z
@9e7028aac6fd4c219b33979da0f81672 Anonymous 2019-09-28 11:50:21
## 0.10.0 - 2019-09-28
### Added
- The scroll state and states of textboxes are restored after navigating backward/forward (Web UI.)
- Saving if a board/thread is favorite or not (Web UI.)
- Server Sent Events (Web UI, Web UI backend.)
- An indicator of connection status (Web UI.)
- Loading new posts to the chat (Web UI.)
- Tracking new posts in the chat and threads (Web UI, Web UI backend.)
- Searching: search by an SQL LIKE pattern in subjects and posts/posts only/subjects only,
in the specified boards. Ordering or search results by post date (asc, desc),
pagination (Web UI, Web UI backend.)
- Dev config (Web UI backend.)
- Favicon (Web UI.)

### Changed
- SVG icons were replaced with font icons because SVG is disabled in Tor Browser (Web UI.)
- The local db was updated up to 66931.

### Fixed
- Styles of favorite board/thread list (Web UI.)
- toQuery: it encoded a space as + instead of %20 (Web UI.)

[latest]: http://pfpmd7dd5ijt4add2sfi4djsaij4u3ebvnwvyvuj6aeipe2f5llptkid.onion/static/pfpmd-client_latest.7z
@5953192c621a44b5b68280351da8b938 Anonymous 2019-10-13 12:48:31
## 0.11.0 - 2019-10-13
### Added
- Highlight js v9.15.10 (Web UI.)
- A popup components that can be modal, draggable, resizable and can save its dimensions and position
(Web UI.)
- Settings that open in a modal popup. Settings have two sections: General and Filters.
General: "Enable KaTeX", "Highlight code", "Show 3rd party images", "Track new posts".
Filters: "Show only chat posts in the chat", "Ignore cyrillic shit", "Max Shannon's entropy", "Filter by regexps" (Web UI.)
- Applying the settings: a custom event was added that lets to subscribe to settings changes;
if a setting is changed, the containers (chat, thread, warp, search)
loads extra services (KaTeX, Highlight js - only once and if they are not already loaded),
reloads the posts (without additional requests) (Web UI.)
- If "Track new posts" is disabled, Web UI makes a request to the backend
to delete current information about which posts are new.
If it is enabled, Web UI makes a request to reset all last_seen_at
to the date of the last post of a thread (Web UI, Web UI backend.)
- For all API paths, /c_api/ prefix was added (Web UI, Web UI backend.)
- Compression of the js bundle (Web UI, Web UI backend.)
- Unhiding/hiding filtered posts (Web UI.)
- Icons: close, save, warning, eye, eye-blocked (Web UI.)
- Config: logging level.

### Fixed
- Unquoting wasn't needed for a search query, it's already unquoted (Web UI backend.)
- When restoring a state, the container must restore scrollTop at the last step.
Focusing of a reply textarea was made optional (Web UI.)
- Function decorate: it didn't ignore getters of the destination object
and it didn't override methods properly (Web UI.)
- Usage of innerHTML was eliminated (Web UI.)
- RegExp of getYoutubeVideoId function: it couldn't recognize youtu.be links (Web UI.)

[latest]: http://pfpmd7dd5ijt4add2sfi4djsaij4u3ebvnwvyvuj6aeipe2f5llptkid.onion/static/pfpmd-client_latest.7z
@e58e4436aea643edba3dcec4cc87f631 Anonymous 2019-10-27 17:38:01
## 0.12.0 - 2019-10-27
### Added
- Session (HTTP persistent connection) for subscribe.
- A session object now can be passed to all functions of http_service.
- Function retry_indefinitely was added to http_service. If a request exception happens,
it tries to make the request again after http_attempt_sleep timeout.
- Synchronization of tabs: if a setting is changed in one tab, it applies immediately in all
other open tabs; position/dimensions of popups are synchronized,
and also all other values of localStorage like widths of sidebars,
whether the chat is detached or not, and so on (Web UI.)
- When the chat gets a new post, it adds '[new posts]' prefix to the title. The prefix is removed
once a keydown/mousedown event happens or the tab becomes hidden (Web UI.)
- The settings popup now can be closed using Esc key (Web UI.)

### Fixed
- If subscribe fails to connect to the server, it must try again.
- Do not push the same state into history (Web UI.)
- The chat content must keep the scroll position at the bottom
when the height of the chat textarea grows (Web UI.)
- Closing was implemented incorrectly in the popup decorators (Web UI.)
- Performance or auto resizable textbox was improved (Web UI.)

### Changed
- In config.ini parameter subscribe_attempt_sleep was renamed to http_attempt_sleep.
- A browser can have maximum 6 active connections to a given domain (by default.)
Each tab had a SSE connection, so it was not possible to open more than 6 tabs.
To solve this, now only one tab has a SSE connection.
Each tab sends a heartbeat information to all other tabs. And the tab that holds the SSE connection
broadcasts all information it receives from the server to all other tabs. If the tab is closed,
the oldest tab will hold the connection (Web UI.)

[latest]: http://pfpmd7dd5ijt4add2sfi4djsaij4u3ebvnwvyvuj6aeipe2f5llptkid.onion/static/pfpmd-client_latest.7z
@b0376317b0184abf901bdfb11cee82f0 Anonymous 2019-11-17 15:56:49
## 0.13.0 - 2019-11-17
### Added
- collapsing/expanding the chat in the detached mode:
only the title bar stays visible at the bottom of the page;
the title bar can be moved only horizontally in such mode (Web UI.)
- icons for collapse/expand buttons of the chat (Web UI.)
- the opened thread now listens to the new posts and adds them to the thread,
so a user doesn't need to reload the page (Web UI.)

### Fixed
- "[new posts]" message doesn't appear if the chat is hidden but the document isn't (Web UI.)

### Changed
- draggable window view was changed to make it possible to fix the top (Web UI.)
- pagination view was changed to make it possible to change the total count
and thus the number of pages (Web UI.)

[latest]: http://pfpmd7dd5ijt4add2sfi4djsaij4u3ebvnwvyvuj6aeipe2f5llptkid.onion/static/pfpmd-client_latest.7z
@ec287e78d6dd4f0c933e24404fb89427 Anonymous 2019-11-24 15:52:53
## 0.14.0 - 2019-11-24
### Added
- changing a board description from the chat (Web UI, Web UI backend.)
- getting/updating client id (Web UI, Web UI backend.)
- publishing (a chat post/thread post/new thread) from chat/thread/warp (Web UI, Web UI backend.)
- The help popup and menu button (Web UI.)
- opening the help popup from the chat (Web UI.)
- changing colors from the chat (Web UI, Web UI backend.)
- Notifications: success/error/warning/info (Web UI.)
- When a board description is changed, it's changed everywhere on the page
and in all opened tabs (Web UI.)
- "board-description" SSE type (Web UI, Web UI backend.)

### Fixed
- It returned -1 as a page number if there's only one post in the thread (Web UI backend.)
- The function that inserts a thread into the db had an incorrect number
of sql parameters (Web UI backend.)
- "allt" query params was added with "&" instead of "?" if the page is not defined (Web UI.)

### Changed
- The local db was updated up to 67245.
- The function that refreshes client id now also returns that id (Web UI backend.)
- The publish response now also contains the id of the created post (Web UI backend.)

[latest]: http://pfpmd7dd5ijt4add2sfi4djsaij4u3ebvnwvyvuj6aeipe2f5llptkid.onion/static/pfpmd-client_latest.7z
@429e44a8331441f2a93b49500bf4bce0 Anonymous 2019-11-24 15:54:53
Первая версия Web UI из которой уже можно постить и, в принципе, юзать.
@57a5a7d868c94374ae9e888c79bd7361 Anonymous 2020-02-01 14:49:57
Один раст не педераст?
@2b81cfa50d9045e0a1b804168f8d78c8 Anonymous 2020-02-05 14:17:41
@57a5a@57a5a7d868c94374ae9e888c79bd7361
Не хватает goмосека.