Pages: 1 2
RSS
# Re: Fallout
pipe.2032
Difrex(mobile)(tavern,23) — btimofeev
2017-09-30 22:08:03


Плохо, что в стимовской версии поубирали некоторые вещи, типа, убийства детей.

# Автодополнение для python с LSP в GNU Emacs
difrex.blog
Difrex(mobile)(tavern,23) — All
2018-07-30 15:40:10


The Language Server Protocol (LSP) - это открытый, основанный на JSON-RPC протокол для использования между редакторами исходного кода и серверами, которые предоставляют специфические для языка программирования функции. Цель протокола заключается в том, чтобы обеспечить поддержку автодополнения языка программирования независимо от любого редактора или среды IDE.

LSP дает реально крутые штуки, такие как:

* Показ документации для модуля под курсором

* Автодополнение по точке. На самом деле это `company-lsp`, но про это будет дальше.

* Интеграция с flycheck

И еще кучу всего на самом деле. Все возможные настройки можно будет увидеть по `M-x customize RET lsp RET`.

## Конфигурация

Для начала нужно установить сам language server для python. Для Arch/Manjaro установка будет выглядеть так:


sudo pacman -S python-language-server


С системными зависимостями разобрались. Приступаем к `init.el`. Будем использовать `use-package`, потому что не использовать его - это отстой. Но каждый решает сам.

Включаем `lsp-mode`. Да, для lsp нужно что-то, чем определить корневой каталог для проекта. Я использую везде projectile.


;; LSP settings
(use-package lsp-mode
:ensure t
:config
;; make sure we have lsp-imenu everywhere we have LSP
(require 'lsp-imenu)
(add-hook 'lsp-after-open-hook 'lsp-enable-imenu)
;; get lsp-python-enable defined
;; NB: use either projectile-project-root or ffip-get-project-root-directory
;; or any other function that can be used to find the root directory of a project
(lsp-define-stdio-client lsp-python "python"
#'projectile-project-root
'("pyls"))

;; make sure this is activated when python-mode is activated
;; lsp-python-enable is created by macro above
(add-hook 'python-mode-hook 'lsp-python-enable)

;; lsp extras
(use-package lsp-ui
:ensure t
:config
(setq lsp-ui-sideline-ignore-duplicate t)
(add-hook 'lsp-mode-hook 'lsp-ui-mode))

(use-package company-lsp
:config
(push 'company-lsp company-backends))

;; NB: only required if you prefer flake8 instead of the default
;; send pyls config via lsp-after-initialize-hook -- harmless for
;; other servers due to pyls key, but would prefer only sending this
;; when pyls gets initialised (:initialize function in
;; lsp-define-stdio-client is invoked too early (before server
;; start)) -- cpbotha
(defun lsp-set-cfg ()
(let ((lsp-cfg `(:pyls (:configurationSources ("flake8")))))
;; TODO: check lsp--cur-workspace here to decide per server / project
(lsp--set-configuration lsp-cfg)))
(add-hook 'lsp-after-initialize-hook 'lsp-set-cfg))


flake8, autopep8, fci, anaconda, rainbow-delimiters(я их везде юзаю):


;; Python mode hook
(defun my-python-mode-hook ()
"Define hook."

(use-package flymake-python-pyflakes
:config
(setq flymake-python-pyflakes-executable "flake8")
(setq flymake-python-pyflakes-extra-arguments '("--max-line-length=99"))
(flymake-python-pyflakes-load))

(use-package py-autopep8
:config
(setq py-autopep8-options '("--max-line-length=99"))
(py-autopep8-enable-on-save))

;; Enable rainbow
(use-package rainbow-delimiters)
(rainbow-delimiters-mode-enable)

(use-package highlight-indent-guides)
(use-package company)
(use-package anaconda-mode)
(use-package company-anaconda
:config
(add-to-list 'company-backends '(company-anaconda :with company-capf)))

(use-package flycheck-pyflakes
:config
(setq flychek-flake8-maximum-line-lenght 99))

(setq-default py-shell-name "ipython")
(setq-default py-which-bufname "IPython")
;; Fill column indicator
(use-package fill-column-indicator
:init
:config
(setq-default fill-column 99)
(setq fci-rule-width 1)
(setq fci-rule-color "#696969"))

(fci-mode)

(anaconda-mode +1)
(anaconda-eldoc-mode)
(highlight-symbol-mode +1)
(highlight-indent-guides-mode)
(company-mode))

(use-package python
:mode ("\\.py\\'" . python-mode)
:interpreter ("python" . python-mode)
:init
(add-hook 'python-mode-hook 'my-python-mode-hook))


Все!

Спасибо вот этому чуваку.

Ссылка: https://difrex.lessmore.pw/post/python-lsp/

# Рига
difrex.blog
Difrex(mobile)(tavern,23) — All
2018-07-30 07:40:49


Съездили тут на днях погулять в Латвию. Сели в машину и поехали. Границу пересекали в Бемякони, туда(к литовцам) въехали за два часа - нормалек.

Периодически шел дождь, но в целом погода была ничего.

## Рига

От границы до Риги дорога заняла часа 4-5. Старый город порадовал, красив.

Заехали на море(Рижский залив точнее). Пустынный солнечный пляж - это прикольно, но ледяной ветер не давал вдоволь насладиться видом и пробыли мы там всего минут 30.

Помимо Риги заезжали еще в несколько мест.

## Цесис

## Бауска

## Тракай

## Дорога обратно

По дороге обратно дождь чередовался с солнцем и было красиво.

Границу пересекли вечером за 3 часа. В Минск приехали уже в час ночи.

Ссылка: https://difrex.lessmore.pw/post/riga/

# Минск 08.05.2017
difrex.blog
Difrex(mobile)(tavern,23) — All
2018-07-30 07:40:49


Фотки без обработки, тупо RawTherapee -> export.

## Верхний город

## Центр

## Площадь независимости

Ссылка: https://difrex.lessmore.pw/post/minsk-08-05-17/

# Пилим i3wm
difrex.blog
Difrex(mobile)(tavern,23) — All
2018-07-30 07:40:49


Я тут на ЛОРе недавно постил скриншот и, вроде, людям понравилось. Попробую разобрать тут свой конфиг.

## Софт

Я использую Ubuntu 16.04, так что все действия актуальны для нее.

* i3-gaps

Это форк оригинального i3, где добавляются гапсы(отступы между окнами).

Сборку и установку производим так:


git clone https://github.com/Airblader/i3 -b 4.13
cd i3
dpkg-checkbuilddeps # проверяем какие зависимости нужно установить для сборки пакета, устанавливаем их.
dpkg-buildpackage -uc -us # собираем пакет
sudo dpkg -i ../i3-wm_4.13-1_amd64.deb # устанавливаем


* i3lock

Это блокировщик экрана. Ставим его из репозитория universe.

* compton

Тени, прозрачности и прочая красота. Так же ставим из официальных репозиториев.

* polybar

Панель, которую я использую в качестве замены стандартного i3bar.

Компиляем


git clone --branch 3.0.5 --recursive https://github.com/jaagr/polybar
mkdir polybar/build
cd polybar/build
cmake ..
make install


* rofi

Лаунчер. Так же ставим из репозиториев.

* feh

На самом деле - это просмотрщик изображений, но еще он позволяет установить обои.

* dunst

Уведомления(libnotify) рабочего стола.

## Конфигурация

Можно приступать к настройке WM.

~/.config/i3/config


# Клавиша super в качестве модификатора
set $mod Mod4
# Шрифты
font pango:hack 12
# Alt в качестве модификатора для управления плавающими окнами
floating_modifier Mod1
# Терминал
bindsym $mod+Return exec i3-sensible-terminal
# Закрытие окна
bindsym $mod+q kill

# Запуск лаунчера
bindsym $mod+d exec rofi -show run


Для настройки цветов лаунчера в ~/.Xresources пишем:


! ------------------------------------------------------------------------------
! ROFI Color theme
! ------------------------------------------------------------------------------
rofi.color-enabled: true
rofi.color-window: #393939, #393939, #268bd2
rofi.color-normal: #393939, #ffffff, #393939, #268bd2, #ffffff
rofi.color-active: #393939, #268bd2, #393939, #268bd2, #205171
rofi.color-urgent: #393939, #f3843d, #393939, #268bd2, #ffc39c


Hint: На сайте rofi можно найти несколько тем.

Локсрин. Я не использую комбинацию $mod+jklh для переключения между окнами, мне хватает стрелочек. Биндим i3lock на $mod+l.


# Lock desktop
bindsym $mod+l exec ~/.config/i3/lock.sh


Скрипт ~/.config/i3/lock.sh:


#!/bin/bash

# Make screenshot
scrot /tmp/screen.png

# Scale image
convert -scale 10% -scale 1000% /tmp/screen.png /tmp/screen1.png

# Clean
rm -f /tmp/screen.png

# Lock screen
i3lock -i /tmp/screen1.png


Выглядит это так:

Идем дальше по конфигу.


# Переключение между окнами:
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right


Я пропущу дальше секции про управление окнами, т.к. конфиг практически ничем не отличается от дефолтоного. Удаляем/комментируем секцию с i3bar.

Убираем декорации окон


# New window size
new_window pixel


Мультимедиа кнопки


# Pulse Audio controls
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume 0 +5% #increase sound volume
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume 0 -5% #decrease sound volume
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute 0 toggle # mute sound

# Sreen brightness controls
bindsym XF86MonBrightnessUp exec xbacklight -inc 20 # increase screen brightness
bindsym XF86MonBrightnessDown exec xbacklight -dec 20 # decrease screen brightness


Настройка гапсов


# Эта опция нужна для того, чтобы гапсы отключались, если на эркане всего одно окно.
smart_gaps on

gaps inner 5
gaps outer 2


Автозапуск приложений


# Обои
exec feh --bg-scale /usr/share/backgrounds/gnome/Godafoss_Iceland.jpg &
# Автоблокировка экрана через 2 минуты
exec xautolock -locker ~/.config/i3/lock.sh -time 2 &
# Апллет для управления network-manager
exec nm-applet &
# Композитор
exec compton &
# Conky
exec conky -c /home/d_zheleztsov/.conkyrc &
# Почему-то без такого костыля у меня dunst запускаться не хочет
exec killall dunst && dunst -conf /home/d_zheleztsov/.config/dunst &

# Изменение цветовой температуры в зависимости от времени суток
exec redshift &

# Запускаем приложения на своих рабочих столах
exec --no-startup-id i3-msg 'workspace 1; exec firefox'
exec --no-startup-id i3-msg 'workspace 2; exec gnome-terminal'
exec --no-startup-id i3-msg 'workspace 3; exec emacs25'
exec --no-startup-id i3-msg 'workspace 4; exec pidgin'
exec --no-startup-id i3-msg 'workspace 5; exec evolution'

# Панель
exec ~/.local/bin/polybar main &


По поводу конфигурации панели будет хорошо почитать официальную вики.

## Итоговые конфиги

* i3: ~/.config/i3/config
* polybar: ~/.config/polybar/config
* conky: ~/.conkyrc

## Что получилось

Ссылка: https://difrex.lessmore.pw/post/i3wm-config/

# Фест Эпоха рыцарства 2017
difrex.blog
Difrex(mobile)(tavern,23) — All
2018-07-30 07:40:48


Будет много фоток. Пост весит 16Мб.

Под Минском в д. Озерцо проходил фестиваль "Эпоха рыцарства" на котором в первый день я и побывал.

Было солнечно и тепло. В палатках продовались домашняя медовуха и сбитень.

Уже на подходе к самому месту проведения заметили палатки и косплееров на коняшках.

Сам фестиваль проходил на территории музея народной архитектуры и быта. Там можно походить и заглянуть в некоторые из домов, где попытались воссоздать старинный быт. Ничего особо примечательного, но красиво.

Во второй половине дня начался турнир рыцарей. Это там, где они пиками друг-друга тыкают. Ведущий что-то постоянно рассказывал и комментировал.

Вышли сами рыцари с флагами и на конях.

Вот этот с гусем на голове был особо приколен.

Над этим всем летал дрон и снимал видео. Наверное, его где-то можно будет увидеть.

Рыцари скакали на лошадях и перепрыгивали через препятствие. Весело.

Высоко в небе периодически летали дельтопланы с которых тоже фотографировали фестиваль.

В конце турнира по сценарию рыцари поссорились и между ними начался махач.

За этим наблюдали красивые девочки в средневековых костюмах.

Вечером, на разогреве, выступали фолк-музыканты. Первыми вышли Hardwood.

Играли довольно неплохо, но вот этой графине походу неособо понравилось. Позади нее на фоне можно увидеть состязание эльфов-лучников.

Следующими выступали Стары Ольса. Подтянулись мужики в смешных шапках. Наверняка гномы.

Выступление проходило весело.

Барабанщики круты!

После Стары Ольса на сцену вышли Butterfly Temple. Пока они чекались сходил за сцену.

Клевые домики.

Средневековые девченки отошли за сцену покурить и початиться.

Наконец-то Butterfly настроились и зарубили МИТОЛ!

Чувак-ведущий залез на столб и пустился в пляс!

Выступление было драйвовым. Играли Butterfly Temple примерно час. На улице стемнело и температура воздуха опустилась всего до 12 градусов тепла. Комары озверели, в шортах находиться стало не очень круто и мы поехали домой в Минск.

Ссылка: https://difrex.lessmore.pw/post/fest-folk-museum/

# Отправляем логи в удаленный logstash
difrex.blog
Difrex(mobile)(tavern,23) — All
2018-07-30 07:40:47


Все привыкли пользоваться связкой ELK. А что делать, если хочется отправить логи в уже существующий ELK с хоста на котором памяти в обрез?

У меня получилось так, что на виртуалке с сайтиком всего 512Мб памяти и логстешь при запуске просто выжирал ее всю и падал. Никакие Xmx Xms не помогали. Самое интересное, что логи-то nginx я заставил писать в JSON, а значит logstash выступает просто проксей до эластика.

Вот так можно заставить писать nginx в JSON. Добавляем это в nginx.conf.


log_format logstash_json '{ "@timestamp": "$time_iso8601", '
'"remote_addr": "$remote_addr", '
'"remote_user": "$remote_user", '
'"body_bytes_sent": "$body_bytes_sent", '
'"request_time": "$request_time", '
'"status": "$status", '
'"request": "$request", '
'"request_method": "$request_method", '
'"http_referrer": "$http_referer", '
'"http_user_agent": "$http_user_agent" }';



А в конфиге сайта


access_log /var/log/nginx/access.log logstash_json;


Собственно пишем конфиг удаленного логстеша:


input {
tcp {
port => 12222
host => "10.8.0.10"
codec => "json"
}
}

output {
elasticsearch {
index => "nginx"
}
}


Теперь делаем скрипт отправки логов:


#!/bin/bash

# /usr/local/bin/logsend.sh

/usr/bin/tail -f /var/log/nginx/access.log | /bin/nc 10.8.0.10 12222


И запиливаем сервис systemd и стартуем его


[Unit]
Description=Send nginx log to remote logstash

[Service]
Type=simple
ExecStart=/usr/local/bin/logsend.sh

[Install]
WantedBy=multi-user.target


systemctl status logsend


● logsend.service - Send nginx log to remote logstash
Loaded: loaded (/etc/systemd/system/logsend.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2017-09-02 12:05:01 UTC; 1h 33min ago
Main PID: 28559 (logsend.sh)
Tasks: 3
Memory: 484.0K
CPU: 12ms
CGroup: /system.slice/logsend.service
├─28559 /bin/bash /usr/local/bin/logsend.sh
├─28562 /usr/bin/tail -f /var/log/nginx/access.log
└─28563 /bin/nc 10.8.0.10 12222


Использование памяти пол-мегабайта :).

Ссылка: https://difrex.lessmore.pw/post/logs-to-remote-logstash/

# Go в GNU Emacs
difrex.blog
Difrex(mobile)(tavern,23) — All
2018-07-30 07:40:47


На самом деле это выжимка вот этой статьи. Ну, а еще некоторые вещи в ней устарели, по-этому немного обновленная версия.

# tl;dr

Поставим нужные пакеты в Емакс


(use-package exec-path-from-shell)
(use-package rainbow-delimiters)
(use-package go-snippets)
(use-package go-guru)
(use-package go-autocomplete)


Настроим go-mode


(use-package go-mode
;; Godef jump key binding
:bind (("M-." . godef-jump)
("M-*" . pop-tag-mark))
:init
(setenv "GOPATH" (concat (getenv "HOME") "/.local"))
:config
(defun set-exec-path-from-shell-PATH ()
(let ((path-from-shell (replace-regexp-in-string
"[ \t\n]*$"
""
(shell-command-to-string "/bin/bash -c '. ~/.bashrc && echo $PATH'"))))
(setenv "PATH" path-from-shell)
;; (setq eshell-path-env path-from-shell) ; for eshell users
(setq exec-path (split-string path-from-shell path-separator))))

(when window-system (set-exec-path-from-shell-PATH))

(defun my-go-mode-hook ()
"My Golang hook."
(setq gofmt-command "goimports")

;; Call Gofmt before saving
(add-hook 'before-save-hook 'gofmt-before-save)

;; Set compile command
(if (not (string-match "go" compile-command))
(set (make-local-variable 'compile-command)
"go build -v && go test -v && go vet"))

;; Enable rainbow
(rainbow-delimiters-mode-enable)
(auto-complete-for-go)
(yas-initialize))

;; Go autocomplete
(defun auto-complete-for-go ()
"Enable golang autocomple."
(auto-complete-mode 1))

(add-hook 'go-mode-hook 'auto-complete-for-go)
(add-hook 'completion-at-point-functions 'go-complete-at-point)
(add-hook 'go-mode-hook 'my-go-mode-hook)
(add-hook 'go-mode-hook #'rainbow-delimiters-mode))


Тут в :bind можно прописать свои сочетания клавиш.

Да, всегда используйте use-package. Это сэкономит кучу времени в будущем.

Теперь добавим GOPATH в ~/.bashrc


echo 'export GOPATH=${HOME}/.local' >> ~/.bashrc
. ~/.bashrc


Выкачиваем зависимости Go


go get -t -v golang.org/x/tools/cmd/goimports
go get -t -v golang.org/x/tools/cmd/guru
go get -t -v github.com/rogpeppe/godef


Готово. Код конфига доступен по ссылке.

Ссылка: https://difrex.lessmore.pw/post/go-v-emacs/

# API поиска на dynamic.lessmore.pw
difrex.blog
Difrex(mobile)(tavern,23) — All
2018-07-30 07:40:46


## Поиск на dynamic.lessmore.pw

Как это ваще устроено??? На самом деле API - это открытый всем Elasticsearch, который предоставляет гору возможностей для поиска за счет движка Lucene. Давайте что-нибудь найдем!

Вот в этом вот комменте я пообещал рассказать как это все сделать. Приступим.

Давайте для начала попробуем поискать этот самый коммент: ii://XWShDDcuR4C8PcrTFdGl. Здесь и далее мы будем использовать только curl.


curl -XPOST -d '{"query": {"query_string" : {"fields" : ["msgid"], "query" :"XWShDDcuR4C8PcrTFdGl"}}}' https://dynamic.lessmore.pw/search


Нам вернется такой вот ответ


{
"took": 2,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 8.316952,
"hits": [
{
"_index": "idec_net",
"_type": "post",
"_id": "XWShDDcuR4C8PcrTFdGl",
"_score": 8.316952,
"_source": {
"echo": "idec.talks",
"subg": "Re: Совет нодов",
"to": "Peter",
"author": "Difrex(mobile)",
"message": "\nПостараюсь завтра написать пост с обзором в ii://develop.16. Ну, и ссылку в этот тред скину.",
"date": "1513020107",
"msgid": "XWShDDcuR4C8PcrTFdGl",
"tags": "",
"repto": "h97Frgqdtapl4AI11aUj",
"address": "tavern,23"
}
}
]
}
}


Вот и он!

Нам вернулось одно сообщение, что не удивительно, т.к. ID в сети уникальны, а мы искали именно по нему.

А теперь давайте выведем все последние(5) сообщения(по дате) из эхи idec.talks:


curl -XPOST -d '{"sort": [{"date": {"order": "desc"}}, {"_score": {"order": "desc" }}], "size": 5}' https://dynamic.lessmore.pw/search -H 'Content-type: application/json'
{
"took": 2,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
}
...


Смотрите, тут мы отсортировали(на стороне сервера) сообщения по дате в порядке убывания и ограничили лимит в 5 сообщений. Попробуйте перевести это на SQL(`select * from idec.talks order by date desc limit 5`).

А теперь выполним более сложный поиск: мы найдем сообщения по строке! Т.е. выполним полнотекстовый поиск!

Запрос будет выглядеть так:


{
"sort": [
{
"date": {
"order": "desc"
}
},
{
"_score": {
"order": "desc"
}
}
],
"query": {
"simple_query_string": {
"query": "обзор"
}
},
"size": 5
}


Отправляем его POST-ом в https://dynamic.lessmore.pw/search.

В ответ нам на это вернется список из 5 сообщений отсортированных по дате, где найдены вхождения слова "обзор". Кстати, верхнее сообщение(b2rhH6sOfzEzgGZzLT51(на данный момент)) из эхи habra.16 и с заголовком "Обзор литературы по языку Python для начинающих".

Вот так вот. Чтобы делать более лучшие вещи читайте документацию(query DSL) по Elasticsearch.

// Да, если вашей эхи нет в индексе, то убедитесь, что она есть в list.txt

Ссылка: https://difrex.lessmore.pw/post/api-poiska-na-dynamic/

# Про IDEC
difrex.blog
Difrex(mobile)(tavern,23) — All
2018-07-30 07:40:42


IDEC - это протокол обмена сообщениями совместимый на базовом уровне с ii. Расшифровывается, как ii-like Data Exchange Convention. Главная фишка его - это простота и возможность работать поверх чего угодно, например, ssh. Но практически все реализации сейчас работают поверх http.

Цитата из официальной документации

> Есть несколько серверов (грубо говоря, сайтов), за каждым из которых закреплены свои пользователи (поинты). Поинты пишут сообщения каждый на свой сервер. Через каждые 10-20 минут сервера скачивают друг у друга новые сообщения. В итоге на всю сеть одна общая база данных. Для установления цепочек синхронизации владельцы серверов сначала договариваются.
>
> Всё общение разделено на так называемые эхоконференции или эхи (см. терминология). Эха - это что-то вроде ленты твиттера или темы на форуме. Пользователи могут свободно подписываться на интересные им эхи и писать туда сообщения в пределах одной станции. Держатели серверов синхронизируют между собой (по общему согласию) самые популярные и нужные пользователям эхи, и сообщения оттуда расходятся по всей сети.

Так при отключении одного из серверов, сообщения останутся живы на других, что дает нам такие блага, как антицензурируемость и отказоустойчивость.

## Общение

В стандарте предусмотрена очень полезная фича, как /list.txt(это может быть на самом деле файл или путь в строке адреса в браузере). На запрос list.txt сервер возвращает нам список эх(публичных) с описанием и количеством сообщений в них. Так при первом попадании на сервер, клиент сможет сразу знать какие эхи он хочет читать.

Стандарт и все реализации серверов поддерживают создание эхи пользователем. Для этого нужно всего лишь написать в нее. Такая эха не будет отображаться в list.txt и получить из нее сообщения можно, только зная название. Шифрования в стандарте нет, но это и не нужно, ибо приносит только усложнение. Для приватного общения можно использовать скрытую эху и GPG.

Личных сообщений нет, но обсуждение стандарта идет. Можно начать с чтения этого треда.

Каждое сообщение в сети уникально, т.е. ему присвается ID сгенерированный на основе суммы sha256 от контента. Это не спасает от спама, но позволяет избежать коллизий в сети.

## Устройство сети

На протоколе IDEC чаще всего реализуют децентрализованную клиент-сервер сеть. P2P не предусмотрено, но никто не мешает написать свое расширение, которое реализует P2P обмен.

Итак, рассмотрим топологию сети от простого к сложному.

Самая простейшая сеть выглядит так:

У нас есть два клиента, которые обмениваются сообщениями через сервер. Оба клиента получают сообщения из одной и той же эхи. Все централизовано и при смерти сервера клиенты больше не смогут общаться с друг дугом. Давайте добавим еще один сервер!

Владельцы серверов договорились между собой обмениваться сообщениями эхи pipe.2032, теперь при выходе из строя одного из серверов сообщения будут доступны на другом сервере.

Добавим еще сегмент сети

У нас добавился еще один сегмент сети в котором происходит общение в эхах pipe.2032 и linux.14. Так наш первый сегмент начинает обмениваться сообщениями со вторым. Добавим еще один сегмент.

И еще

Можно еще добавить связь между серверами внутри кольца и мы получим полностью децентрализованную сеть, которая реализует распределенную базу данных.

IDEC позволяет строить любые топологии. Клиент может выступать так же и сервером и забирать сообщения сразу со всех серверов. А простота протокола позволяет писать ботов очень быстро.

В следующей статье напишем бота, который будет слать сообщения в указанную нами эху.

Ссылка: https://difrex.lessmore.pw/post/pro-idec/

# eshell в качестве шелла
difrex.blog
Difrex(mobile)(tavern,23) — All
2018-07-30 07:40:39


Я тут подумал: а чей-то я использую в качестве шелла zsh, когда можно юзать емаксовый eshell?

Быстренький гайд.

## Делай раз

Для начала, чтобы темы отображались правильно нужно сгенерировать terminfo. В 26.1 емаксе можно работать с 24-битным терминалом. Напишем файл terminfo-24.src:


# Use colon separators.
xterm-24bit|xterm with 24-bit direct color mode,
use=xterm-256color,
setb24=\E[48:2:%p1%{65536}%/%d:%p1%{256}%/%{255}%&%d:%p1%{255}%&%dm,
setf24=\E[38:2:%p1%{65536}%/%d:%p1%{256}%/%{255}%&%d:%p1%{255}%&%dm,
# Use semicolon separators.
xterm-24bits|xterm with 24-bit direct color mode,
use=xterm-256color,
setb24=\E[48;2;%p1%{65536}%/%d;%p1%{256}%/%{255}%&%d;%p1%{255}%&%dm,
setf24=\E[38;2;%p1%{65536}%/%d;%p1%{256}%/%{255}%&%d;%p1%{255}%&%dm,


Генерируем:


tic -x -o ~/.terminfo terminfo-24bit.src


Экспортируем переменную окружения:


export TERM=xterm-24bit


Теперь при запуске GNU Emacs в терминале(`emacs[client] -nw`) вместо покореженных цветов при `TERM=xterm-256color`

будет красиво

Это тема solarized-dark, кстати.

## Делай два

Но запускать Емакс в терминале при наличии иксов несколько странно. По-этому нужно пускать сразу `(eshell)`. В параметрах терминала в качесте комманды прописываем `/bin/sh -c "export TERM=xterm-24bit; emacsclient -nw -c -e \"(eshell 'N)\""` и у нас будет сразу пускаться eshell. Неплохо, не правда ли? :)

Либо можно пойти еще дальше и перебиндить стандартнуй комбинацию клавишь на запуск сразу eshell в графическом Emacs. Так, например, для i3wm: `bindsym $mod+Return exec emacsclient -c -e "(eshell 'N)"`.

Ура!

Ссылка: https://difrex.lessmore.pw/post/eshell/

# Re: А кто пользуется Gnus?
pipe.2032
Difrex(mobile)(tavern,23) — Peter
2018-08-12 10:44:17


Peter> Конфигурация на работе, если что -- могу вспомнить и показать.
Давай, буду очень признателен.


// Sent from my GNU Emacs

# Re: А кто пользуется Gnus?
pipe.2032
Difrex(mobile)(tavern,23) — Peter
2018-08-12 10:03:15


Peter> Использую gnus на работе. Но у меня очень скромные запросы. Забираю почту fetchmail, отправка msmtp или как то так. Procmail кажется тоже есть в связке. С продуктами мс нет необходимости работать.
Хм, т.е. Gnus у тебя работает с ~/Maildir? А сколько аккаунтов у тебя?
Их можно как-то разделить, чтобы с a@corp.net почта шла через a.smtp.corp.net, а с b@corp.net через b.smtp.corp.net?

// Для exchange, наверное, буду продолжать использовать Evolution. Кстати, есть Excorporate, который умеет синкать календарь Exchange.
// Т.е. `M-x excorporate RET`, затем `M-x calendar RET e`

ЗЫ: Андрей, а можешь переименовать меня в просто Difrex?

// Sent from my GNU Emacs

# Re: А кто пользуется Gnus?
pipe.2032
Difrex(mobile)(tavern,23) — Anotheroneuser
2018-08-12 09:56:14


Anotheroneuser> А вот эту хренотень видел?
Anotheroneuser> https://www.emacswiki.org/emacs/mu4e
Хм, выглядит интересно. Спасибо.
Попробую настроить у себя в рабочем Emacs. Потом поделюсь впечатлениями =)

// Sent from my GNU Emacs

# Re: А кто пользуется Gnus?
pipe.2032
Difrex(mobile)(tavern,23) — Andrew Lobanov
2018-08-12 09:55:00


AL> Difrex(mobile)> Этого и я тоже смог добиться. Странно, гнус пилят(или уже не пилят?) хрен знает сколько лет, а до сих пор на nntp завязан.
AL> Ну так это его основная функция, вроде =)
Ага, только nntp уже мертв.

// Sent from my GNU Emacs

# Re: А кто пользуется Gnus?
pipe.2032
Difrex(mobile)(tavern,23) — Andrew Lobanov
2018-08-10 23:18:57


AL> А вот с эксченджем, как и со всеми продуктами майкрософт, хорошо работают только продукты майкрософт. Поэтому рабочая почта у меня через великий и ужасный аутглюк.

Это не так. Evolution прекрасно получает почту и календарь. И фильтры умеет и мультаккаунты. Справляется с ежедневным потоком сотни писем просто отлично.

AL> История успеха лично у меня закончилась на банальном SMTP/IMAP сравнительно стандартными для линукса средствами.

Этого и я тоже смог добиться. Странно, гнус пилят(или уже не пилят?) хрен знает сколько лет, а до сих пор на nntp завязан.

# А кто пользуется Gnus?
pipe.2032
Difrex(mobile)(tavern,23) — All
2018-08-10 16:59:18


Несколько раз пытался его осилить, но сдавался, когда нужно было настроить фильтры(очень много). А ещё с эксченджем его только через костыли дружить.

Поделитесь историями успеха

# С днем системного администратора!
pipe.2032
Difrex(mobile)(tavern,23) — All
2018-07-27 12:40:18


Сабж всех причастных. Ну и меня заодно :)

# Re: Учёба, мысли и ещё чё-нибудь
pipe.2032
Difrex(mobile)(tavern,23) — vit01
2018-06-29 17:59:19


>Ведь если не осваивать учебный курс в полном объёме, то как вообще осознавать себя ценным и нужным не только для общества, но и для внутренней поведенческой программы?
Вот, кстати, я так и не получил вышку, но все норм. Никогда особо не переживал по этому поводу.
Правда у меня экономическая муть была, а у тебя, вроде как, довольно серьезное техническое образование.

>то как вообще осознавать себя ценным и нужным не только для общества
Вот это ваще хз. Не думаю, что какого-нибудь Курчатова общество считает нужным. Скорее всего даже не знает его.

>но и для внутренней поведенческой программы?
Мне вот с этим проще - я панк, а еще помогают вылазки в лес с друзьями раз в год с каким-то колличеством штук марок или грибов.

# Re: Игры на халяву
pipe.2032
Difrex(mobile)(tavern,23) — btimofeev
2018-03-30 08:36:26


Спаисибо. Оно под линукс! Забрал.

Буду целую неделю один, без жены, будет чем заняться :)

# Re: Продолжая тему общения (срывая покровы)
pipe.2032
Difrex(mobile)(tavern,23) — Wol4ik
2018-03-28 12:36:33


>Без общения с Церковью, как со святым собранием верующих, ищущие люди так и остаются основную часть жизни ищущими
Что на счет буддизма думаешь? Там нет бога(как сущности) как в христианских религиях.

# Re: Тишина...
pipe.2032
Difrex(mobile)(tavern,23) — Andrew Lobanov
2018-03-26 09:27:37


>>> Круто, но только для программистов
>> Для нас это хорошо.
>Ага. Пофиг на пользователей =)
Я не предлагаю забивать на пользователей. Просто вот ты пилишь питононоду, а мог бы вытащить из нее функции парсинга и оформить в библиотеку. Это не долго. Гошная либа, кстати, есть.

>Чего там разбираться? Надо взять и сделать своё. Рома старательно не документирует то, что лепит и часто это меняет. Надо оно нам?
Чтобы написать что-то свое, нужно это сначала задокументировать, ну т.е. условиться как-то на счет передачи поинтов, и.т.д. Т.е. нужен какой-то стандарт.

>Как-то начинает теряться основное достоинство. Я имею в виду простоту.
А мне кажется, что отдельный сервис который крутится для регистрации пользователей никак не затрагивает простоту протокола. Ты же не обязан поднимать у себя этот сервис.
Никто points.txt не отнимает. Да, и не думаю, что мы быстро(или вообще), что-то такое введем.

>И вообще не очень понимаю зачем эта единая точка.
Это не единая точка. Мне оно представляется как-то так: https://images.lessmore.pw/media/images/idec.png

>Как часто вы пишете через разные ноды?
Хочу, чтобы если одна из нод сети упала, я мог бы писать через другую, чтобы действительно работало, то о чем мы говорим - независимость и распределенность.

# Re: Тишина...
pipe.2032
Difrex(mobile)(tavern,23) — Andrew Lobanov
2018-03-26 08:59:08


>Круто, но только для программистов
Для нас это хорошо.

>Это надо внести в стандарт, сохранив старый вариант
Чтобы внести в стандарт нужно ваще разобраться, как это работает, а документации нет.

>Потому что это дополнительная и очень критичная точка отказа.
Да, по-этому нужно, чтобы выдаваемые квитки сохранялись на ноде локально и являлись authstring для API. По крону можно синкать поинтов с доверенных аплинков.
Т.е. если есть на ноде авторизация, то она должна быть сделана через сервис регистрации. Ну, я так считаю.

# Re: Тишина...
pipe.2032
Difrex(mobile)(tavern,23) — Andrew Lobanov
2018-03-26 08:22:02


>Поддерживаю. Эталонная реализация это такое себе.
Я все же за стандартную библиотеку. Ну, сам по суди, как круто было бы если бы можно было сделать pip install idec(или go get) и получить либу в которой есть парсер, формирователь сообщений и прочее.

>Если и нужно куда двигаться, так это к упрощению клиентов
Если в idec-mobile добавить возможность регистрации(мне например идея регсервера Ромы нравится), то было бы замечательно.

# Re: Тишина...
pipe.2032
Difrex(mobile)(tavern,23) — vit01
2018-03-15 14:50:31


>Может быть, взять и создать эту "организацию", наконец?
Го я создал. Инвайты придут.

# Re: Тишина...
pipe.2032
Difrex(mobile)(tavern,23) — Peter
2018-03-15 07:03:27


>Мне кажется, все что можно сейчас сделать -- реализовать эталонную ноду idec.
Была уже такая идея, но не про ноду, а эталонную библиотеку, которая умеет готовить сообщения, запросы и.т.д., но дальше разговоров дело не пошло. В ii://ii.14, вроде, обсуждение какое-то было.

>То есть да, идея Ромы думаю верна. Вот софт. Он готов. Разворачивай блог, форум, сайт. Потом можно объединиться.
Так-то да, но полнейшее отсутсвие како-либо документации удручает.

>Короче нужна эталонная реализация в виде "продукта", тогда может взлетит ещё разок.
Всем интересно пилить свое, по-этому ничего и не выходит стандартного...
Тут нужна именно какая-то организованная структура(хотя бы в виде онрганизации на гитхабе, куда перетащить все наши репы), задачки ставить, цели. Если писать на питоне, то нужно выкинуть bottle.py, я так считаю. Да он минимальный в одном файлике и все такое, но на нем писать не так, чтобы очень прикольно. По-идее вот этот вот готовый софт должен быть доступен в виде образа на докерхабе + сам докерфайл в репе с исходниками, с подробной инструкцией, как это все собрать/запустить.

# Re: Тишина...
pipe.2032
Difrex(mobile)(tavern,23) — l1br4
2018-03-14 10:09:37


>Что-то тихо стало кругом, а в сабже в сети.
Тут на самом деле волнами, но да стало тише.

Вот например статистика за 2017 год
https://images.lessmore.pw/media/images/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA_%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0_%D0%BE%D1%82_2018-03-14_12-58-25.png
А вот за этот
https://images.lessmore.pw/media/images/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA_%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0_%D0%BE%D1%82_2018-03-14_12-59-12.png

Как ее интерпретировать - решайте сами.

Но я, например, в последнее время перешел в ридонли. Тупо времени нет - все работа съедает, а как домой прихожу - сил нет на комп. Сижу на басухе поигрываю или фильмы смотрим с женой.

>И сейчас занимаясь тем что бросил несколько лет назад, ощущается только депресняк. Можно ведь всё это было сделать раньше, найти силы, время, средства, потратить их и забить забыть спокойно дальше жить в удобствах и комфорте и прочие тырыпыры... а сейчас смотришь, и думаешь, куда ушло 5лет времени???
Время вообще как-то очень быстро летит. Хопа и уже среда.

# Re: за жизнь
pipe.2032
Difrex(mobile)(tavern,23) — vit01
2018-01-11 08:28:20

# С наступающим Новым Годом!
pipe.2032
Difrex(mobile)(tavern,23) — All
2017-12-31 10:26:30


$сабж

Хочется пожелать всем всего хорошего в новом году, новых свершений и благ духовных и материальных :)

Сетке хочется пожелать развития, большее количество узлов в сети и транспорт в 0net :)

# Re: за жизнь
pipe.2032
Difrex(mobile)(tavern,23) — vit01
2017-12-15 12:49:57


>Угу. Но тогда и хайпа меньше было. Обычно СМИ создают шумиху, когда преодолевается новый рубеж.
Ну, по мне так больше хайпа было в 2013(или мне так кажется).
Я давно в крипте: https://images.lessmore.pw/media/images/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA_%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0_%D0%BE%D1%82_2017-12-15_15-43-48.png :)

>// августовское раздробление
Очередной форк(слил сразу же, как получил монетки), но сделать шумиху надо же. После этого было еще несколько форков.

>и всю ту байду, что творится с эфириумом
Эфир хорош своей VM. Но вот подход к безопасности околоэфирных разрабов мне не нравится.

>И база уже перешагнула 145 гигабайт
Запускай клиент в режиме кастрации. Но 150Гб и даже 500 - это не много.

# Re: за жизнь
pipe.2032
Difrex(mobile)(tavern,23) — vit01
2017-12-14 07:28:27


>И дня не проходит, чтобы на каком-нибудь Хабре или в более желтушных СМИ не написали статью про криптовалюты, теперь и у нас.
Кстати, а я не первый же. https://dynamic.lessmore.pw/?I9cxmn1dsAqbsrXfDMYw :)

# Re: за жизнь
pipe.2032
Difrex(mobile)(tavern,23) — vit01
2017-12-13 14:40:43


Не, нужно ico делать же :).

Привлечем миллионы на развитие сети.

# Re: за жизнь
pipe.2032
Difrex(mobile)(tavern,23) — Difrex(mobile)
2017-12-13 07:15:39


Пофиксил прибыль в лайткоинах. Не зря я их в 2014 году майнил.
Оставил основную часть лежать еще на 3 года. :)

# Re: Погода
pipe.2032
Difrex(mobile)(tavern,23) — Andrew Lobanov
2017-11-29 08:44:21


>В Кургане сегодня лютый туман. Видимость метров сто. Закинул в pictures фотку, сделанную в ожидании маршрутки.
А у нас в Минске вчера вот так было https://images.lessmore.pw/media/images/IMG-20171128-WA0000.jpeg

# Re: за жизнь
pipe.2032
Difrex(mobile)(tavern,23) — vit01
2017-11-29 08:38:55


vit01> В принципе суть та же самая, только вместо художественной литературы - мат. анализ и методичка по механике =)
Не, от тех.литературы я устал. Не читал художественную почти джва года и это печально. Зато сейчас запоем читаю до 4-х утра :)

# Re: за жизнь
pipe.2032
Difrex(mobile)(tavern,23) — Andrew Lobanov
2017-11-28 19:23:21


Закинул в books, что было на телефоне: Герберта, Пратчетта, Марка Твена и Молот ведьм.

# Re: за жизнь
pipe.2032
Difrex(mobile)(tavern,23) — vit01
2017-11-28 19:03:51


vit01> Что хоть пилите по ТЗ?
Глобальный распределённый эластик на базе nomad и k8s

# Re: за жизнь
pipe.2032
Difrex(mobile)(tavern,23) — Andrew Lobanov
2017-11-28 10:15:51


>Если не затруднит, можешь покидать в books читаемого?
Если честно, то я не пробовал еще файлоэхи и у меня нет клиента с поддержкой оных.
Можно как-то через браузер? Я бы закинул книжечек

# Re: за жизнь
pipe.2032
Difrex(mobile)(tavern,23) — vit01
2017-11-27 09:02:35


>Лор-опеннет, хабра, млп-шная эха, ютуб, гитхаб - от всего этого отписался в основном профиле. А сам youtube.com даже в /etc/hosts забил, чтобы не тратить на него время в будни.
>Теперь за правило: развлекательный и новостной контент только по субботам. Не скажу, что это сильно уменьшает прокрастинацию, но практика полезная, советую.
Я сейчас решил вместо всякого ютуба и прочих пикубу читать книги. Т.е. если хочется залипнуть в инете, то открываешь книгу. За выхи половину Дюны прочитал.

А в будни в рабочие часы есть время только на работу сейчас. Роадмап поставили такой, что видна впереди только жопа со сроками. Это при том, что нас в отделе
сейчас 5 человек, из них 3 начальника и мы 2 инженера :(. Самое обидное, что у тимлида теперь статус Infrastructure Architect, хотя всю инфраструктуру проектировал я
вплоть до картинок и документации. Такие дела.

# Re: за жизнь
pipe.2032
Difrex(mobile)(tavern,23) — Andrew Lobanov
2017-11-14 08:32:43


>Сейчас вот появились силы снова что-то делать с idec и вообще. Думаю, надо софт подпилить. Хочу отдать iing Петру и пилить сугубо по своему видению ноду. Скорее всего на golang. По сути она уже есть и успешно работает, но у неё нет вебинтерфейса от слова "совсем". Надо вкорячить что-то такое простое и легковесное. Без оглядки на тренды в области сайтостроения.
Может стоит вместе пилить? Допилим либу гошную. А то у меня тоже же есть нода на Go.

# Re: Fallout
pipe.2032
Difrex(mobile)(tavern,23) — btimofeev
2017-10-01 09:45:36


Я сам про детей только от знакомого слышал. Играю в фаргусовскую версию под чайном :)

# Re: Reduce Internet censorship and help idec.spline-online.tk users
pipe.2032
Difrex(mobile)(tavern,23) — vit01
2017-07-27 06:59:46


Про торренты в России неправда.

Вот в Америке - да, запрещены. Там даже свой контент нельзя раздавать торрентами. Так только в североамериканском регионе клиенты игрушек качают апдейты по хттп, а не торрентам.

# Re: ТЕСТ. Всем привет!
pipe.2032
Difrex(mobile)(tavern,23) — true-grue
2017-07-25 18:37:14


Привет!

Добро пожаловать :)

# Re: Кросспостинг сообщений клуба в vk
std.club
Difrex(mobile)(tavern,23) — Peter
2018-07-06 10:46:36


Прикольно =)

А обратно сюда из ВК придет сообщение?

# Re: За редактор спасибо
std.club
Difrex(mobile)(tavern,23) — Peter
2018-01-08 07:27:53


А что за названия редактора-то? =)

# Re: что у вас было в детстве?
std.club
Difrex(mobile)(tavern,23) — gk11
2017-11-01 13:38:19


[ ] zx spectrum или его клон
[ ] более крутой зарубежный хоум компьютер (ямаха и круче)
[x] PC/XT/286 (только у меня 386 был)
[ ] советская система а-ля радио-86рк (радио86-рк, микроша и т.п.)
[x] советская более серьёзная техника (БК-0010, Орион-128 и т.п.)
[ ] рембо
[x] денди
[ ] сега
[ ] супернинтенда
[ ] плейстейшн
[x] Ну, Погоди и подобные Электроники
[x] тетрис
[ ] тамагочи
[ ] более серьёзная портативная игровая система (геймбой етс)
[ ] планетоход :)
[ ] иное (указать, что я забыл)

# Re: Android to Desktop music streaming
linux.14
Difrex(mobile)(tavern,23) — Difrex(mobile)
2018-08-09 13:26:54

# Re: Android to Desktop music streaming
linux.14
Difrex(mobile)(tavern,23) — vit01
2018-08-09 13:19:54


vit01> Это решение "GNU/Linux only", у меня пока исправно работает.
vit01> Но хотелось бы сделать так: музыка играется на андроид-смартфоне и стримится на GNU/Linux компьютер
По bluetooth из-коробки работает на андроиде

vit01> по вайфаю, чтобы быть там услышанной
Если хочешь по вай-фаю, то можно пульсу на андроид поставить. Не знаю на счет того, как она там работает, но она есть: https://www.freedesktop.org/wiki/Software/PulseAudio/Ports/Android/

# Re: stumpwm
linux.14
Difrex(mobile)(tavern,23) — spline
2018-03-28 12:32:12


А можешь поделиться своим конфигом, если он у тебя остался.

У меня почему-то грузиться не хочет этот WM, хотя я quicklisp поставил, swank тоже. Короче, непонятно, как им пользоваться.

# Re: Solarized light
linux.14
Difrex(mobile)(tavern,23) — vit01
2018-03-23 08:52:29


>Основной цвет текста (серый) заменяю на чёрный, чтобы было лучше видно
У меня у мониторов/ноутов очень хорошая контрастность, так что мне серый цвет в самый раз. Да, ночью включаю solarized dark или darkokai в емаксе.

# Re: Solarized light
linux.14
Difrex(mobile)(tavern,23) — btimofeev
2018-03-23 08:50:07


>Вот так всегда, самого интересного не получили =) Как причешешь - выкладывай, интересно посмотреть.
Вот сюда выложил https://github.com/Difrex/emacs.git, но пока не все :)

>В настройках отключаться должно
Круто! Спасибо

# Solarized light
linux.14
Difrex(mobile)(tavern,23) — All
2018-03-22 08:14:20


Привет, Сеть!

Долго пытался сидеть на темных темах, но меня в конец стало напрягать, то что после переключения
из редактора/консольки в браузер глаза вытекают. Немного с этим помогают бороться плагины для
огненной лисы, но не всегда она работают правильно. А из-за темной темы ГТК бывает еще и такое, что
в полях ввода получается темный текст на темном фоне, что несомненно лютый отстой.

В итоге я решил, что хватит это терпеть и уже сижу две недели в цветах Solarized Light. И знаете что?
Мои волосы стали мягкими и шелковистыми, а глаза больше не кровоточат. Я к чему это все пишу: светлые
темы рулят!

== Скрины

Вот так вот выглядит мой GNU Emacs: https://images.lessmore.pw/media/images/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA_%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0_%D0%BE%D1%82_2018-03-22_10-36-10.png
А вот так плавающие окошки с обоиной: https://images.lessmore.pw/media/images/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA_%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0_%D0%BE%D1%82_2018-03-22_10-43-18.png
Ну, и пустой стол: https://images.lessmore.pw/media/images/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA_%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0_%D0%BE%D1%82_2018-03-22_10-43-43.png

Да, пытался пользоваться темой ГТК Numix Solarized и всякими oomox, но в них что-то постоянно не так, по-этому Arc-solid.

== Конфиги

Конфиг i3: https://paste.lessmore.pw/gategozeyo
Блоки: https://paste.lessmore.pw/cepidacuma.ini
Конфиг Емакса не дам, т.к. до сих пор не могу до конца причесать его, но какие-то куски можно найти
тут https://github.com/Difrex/emacs-go и тут https://github.com/Difrex/emacs-python

Набор обоин качал тут: https://github.com/LukeSmithxyz/wallpapers.git

// Бесит меня телеграм своей долбанной иконкой в трее.

# Re: KDE Connect
linux.14
Difrex(mobile)(tavern,23) — jmaks
2017-10-18 15:42:42


>Получается без демона кдеконнект не работает?
У меня эта штука и с запущенным демоном не заработала.
Ванильный kdeconnect и mconnect отказались обнаружить мой телефон. А вот помню, что несколько лет назад,
когда только появился kdeconnect, он у меня работал.

# Re: Тормоза eMACS и первые впечатления от i3
develop.16
Difrex(mobile)(tavern,23) — Anotheroneuser
2018-08-10 18:29:36


>Работал в Emacs --nw и иногда не мог ничего скопировать/вставить по M-w или Ctrl+Shift+C.
Если есть иксы, то нет никакого смысла использовать консольный емакс

Anotheroneuser> Удалить -- удалил, но сессию не перезапустил.
Используй emacs server и emacsclient -с к нему. Будешь что-то такое глобальное делать - просто выполни systemctl --user restart emacs

# PostgreSQL: создание пользователя, базы данных и прав доступа
develop.16
Difrex(mobile)(tavern,23) — All
2018-07-08 09:00:18


По умолчанию создается суперпользователь имеющий все права. С помощью следующей команды запустим в режиме администртора


$ sudo -u postgres psql

Добавление...

Ссылка: http://sudnitsina.pythonanywhere.com/post/16/

# Django - удаление файла с диска
develop.16
Difrex(mobile)(tavern,23) — All
2018-07-06 11:00:34


Добавляем в модель метод delete:


def delete(self, *args, **kwargs):
storage, path = self.file.storage, self.file.path
super(Post...

Ссылка: http://sudnitsina.pythonanywhere.com/post/10/

# Экспорт и импорт данных в Django
develop.16
Difrex(mobile)(tavern,23) — All
2018-07-06 11:00:25


Быстрый способ передать данные - воспользоваться встроенными средствами Django: dumpdata и loaddata.


./manage.py dumpdata

выведет все данные приложений из INSTALLED...

Ссылка: http://sudnitsina.pythonanywhere.com/post/11/

# Django - удаление файла с диска
develop.16
Difrex(mobile)(tavern,23) — All
2018-06-29 14:00:30


Добавляем в модель метод delete:


def delete(self, *args, **kwargs):
storage, path = self.file.storage, self.file.path
super(Post...

Ссылка: http://sudnitsina.pythonanywhere.com/post/1/

# Экспорт и импорт данных в Django
develop.16
Difrex(mobile)(tavern,23) — All
2018-06-29 14:00:30


Быстрый способ передать данные - воспользоваться встроенными средствами Django: dumpdata и loaddata.


./manage.py dumpdata

выведет все данные приложений из INSTALLED...

Ссылка: http://sudnitsina.pythonanywhere.com/post/12/

# Тестирование django проекта с использованием coverage.py
develop.16
Difrex(mobile)(tavern,23) — All
2018-06-29 14:00:29


Coverage — инструмент, позволяющий оценить степерь покрытия кода тестами. Устанавливаем coverage:


pip install coverage

Запускаем тесты:


coverage run manage.py test...

Ссылка: http://sudnitsina.pythonanywhere.com/post/15/

# Как добавить Google OAuth в Django
develop.16
Difrex(mobile)(tavern,23) — All
2018-06-29 14:00:25


Для добавления аутентификации воспользуемся библиотекой Python Social Auth Выполняем установку


$ pip install social-auth-app-django

Добавим ‘social_django’ в INSTALLED_APPS, после чего выполним...

Ссылка: http://sudnitsina.pythonanywhere.com/post/14/

# Экспорт и импорт данных в Django ч.2: сериализация
develop.16
Difrex(mobile)(tavern,23) — All
2018-06-29 14:00:24


Сериализация объектов в Джанго предоставляет механизм преобразования моделей в другие форматы. Выполняется простой операцией:


from django.core import serializers
data...

Ссылка: http://sudnitsina.pythonanywhere.com/post/13/

# Re: Microsoft купил Github и будет устанавливать там свои порядки
develop.16
Difrex(mobile)(tavern,23) — vit01
2018-06-27 13:13:51


>Сабж. Ваши действия?

Какие-то репы отзеркалил на Gitlab. Но на самом деле никуда сломя голову бежать с гитхаба я не собираюсь.
Новые проекты я начинаю у себя в Gitea, а потом они все-равно открываются, так что мне тоже бояться нечего :)

# Re: TopicID на dynamic: вытаскиваем тред целиком
develop.16
Difrex(mobile)(tavern,23) — Difrex(mobile)
2018-01-08 11:43:30


Так, я начинаю индексирование всего. Теперь у почти каждого сообщения должен появиться topicid.
Те сообщения, для которых по каким-то причинам не найдено старового сообщения, получают тег "misplaced": "yes".

# Re: TopicID на dynamic: вытаскиваем тред целиком
develop.16
Difrex(mobile)(tavern,23) — vit01
2018-01-05 09:08:36


>> // Народ, а каких бы еще фич хотелось бы вам?
>1. Хотелось бы добавить в FAQ описание, как пользоваться тредами и навигацией туда-сюда-обратно по msgid, сабжам, поинтам
Будет отдельная от фака дока.

>2. Нужен парсинг цитат, комментариев и прочей разметки. И выделение цветом. А то читать просто так крайне неудобно
Есть в TODO.

>3. API для экспорта текущей ленты в формат RSS.
Интересное предложение, посмотрю, что можно придумать

>4. При доступе через клиент, когда скачиваешь сообщение, отсутствует тег ii/ok. Это баг
Я удивлен, что оно вообще работает =)

Да, кстати, я был бы очень признателен, если бы хотелки и баги формировались, как таск.

* По вебу тут https://gitea.difrex.ru/lapus/dynamic/issues
* По ноде тут https://gitea.difrex.ru/Umbrella/lessmore
* По индексу тут https://gitea.difrex.ru/Umbrella/fetcher

Если удобней на гитхабе, то могу синкать актуальные изменения и туда :)

# TopicID на dynamic: вытаскиваем тред целиком
develop.16
Difrex(mobile)(tavern,23) — All
2018-01-05 08:02:22


Я тут ковыряя тредовый режим для dynamic'а понял, что проще добавить фичу в бэкенд,
чем разгребать свой говнокод на JS.

Так вот суть: в индексе каждому сообщению присваивается topicid в формате UUID(RFC 4122).
Зная topicid мы можем выбрать целиком тред с нужной нам сортировкой.

Чтобы вытащить тред по интересующему сообщению(мы знаем msgid) нам нужно будет сделать 2 запроса:
* Первый - узнаем topicid из сообщения
* Второй - вытягиваем ветку

Здесь и далее запросы в json отправляются методом POST на https://dynamic.lessmore.pw/search2.

Узнаем topicid
{
  "sort": [
    {
      "date": {
        "order": "desc"
      }
    },
    {
      "_score": {
        "order": "desc"
      }
    }
  ],
  "query": {
    "query_string": {
      "fields": [
        "msgid"
      ],
      "query": "apfIchd9i8HMMc5DKJNI"
    }
  },
  "size": 1
}

В ответ нам вернется документ сообщения
{
  "took": 1,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": 1,
    "max_score": null,
    "hits": [
      {
        "_index": "idec5",
        "_type": "post",
        "_id": "apfIchd9i8HMMc5DKJNI",
        "_score": 9.252761,
        "_source": {
           ...
           "topicid": "fcb208f7-c947-42bc-a037-73d63b137913"
        },
        "sort": [
          1514976123000,
          9.252761
        ]
      }
    ]
  }
}

Теперь зная topicid можно вытянуть весь тред с сортировкой от старых к новым(или наоборот).

Модифицируем первый запрос
{
  "sort": [
    {
      "date": {
        "order": "asc"
      }
    },
    {
      "_score": {
        "order": "asc"
      }
    }
  ],
  "query": {
    "query_string": {
      "fields": [
        "topicid"
      ],
      "query": "fcb208f7-c947-42bc-a037-73d63b137913"
    }
  },
  "size": 100
}

Ответом будет список с документами ветки отсортированный по дате от старых сообщений к новым.

Новый поиск будет доступен тут https://dynamic.lessmore.pw/search2 в ближайшее время, и нидекс будет наполняться совсем неторопливо.
После полного реиндекса поиск будет объявлен стабильным и доступен по https://dynamic.lessmore.pw/search.
Так же фетчер, маппинг, веб будут документированы и снабжаться инструкцией по развертке.

// Народ, а каких бы еще фич хотелось бы вам?

# Re: API поиска на dynamic.lessmore.pw
develop.16
Difrex(mobile)(tavern,23) — Difrex(mobile)
2017-12-12 09:24:25


Фикс для запроса эхи. Правильный запрос будет выглядеть так
{
  "sort": [
    {
      "date": {
        "order": "desc"
      }
    },
    {
      "_score": {
        "order": "desc"
      }
    }
  ],
  "query": {
    "query_string": {
      "fields": [
        "echo"
      ],
      "query": "idec.talks"
    }
  },
  "size": 5
}

# API поиска на dynamic.lessmore.pw
develop.16
Difrex(mobile)(tavern,23) — All
2017-12-12 07:22:13


== Поиск на dynamic.lessmore.pw

Как это ваще устроено??? На самом деле [API](https://dynamic.lessmore.pw/search) -- это открытый всем Elasticsearch, который предоставляет
гору возможностей для поиска за счет движка Lucene. Давайте что-нибудь найдем!

Вот в [этом](ii://XWShDDcuR4C8PcrTFdGl) вот комменте я пообещал рассказать как это все сделать. Приступим.

Давайте для начала попробуем поискать этот самый коммент(XWShDDcuR4C8PcrTFdGl). Здесь и далее мы будем использовать только
*curl*.

curl -XPOST -d '{"query": {"query_string" : {"fields" : ["msgid"], "query" :"XWShDDcuR4C8PcrTFdGl"}}}' https://dynamic.lessmore.pw/search

Нам вернется такой вот ответ
{
  "took": 2,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": 1,
    "max_score": 8.316952,
    "hits": [
      {
        "_index": "idec_net",
        "_type": "post",
        "_id": "XWShDDcuR4C8PcrTFdGl",
        "_score": 8.316952,
        "_source": {
          "echo": "idec.talks",
          "subg": "Re: Совет нодов",
          "to": "Peter",
          "author": "Difrex(mobile)",
          "message": "\nПостараюсь завтра написать пост с обзором в ii://develop.16. Ну, и ссылку в этот тред скину.",
          "date": "1513020107",
          "msgid": "XWShDDcuR4C8PcrTFdGl",
          "tags": "",
          "repto": "h97Frgqdtapl4AI11aUj",
          "address": "tavern,23"
        }
      }
    ]
  }
}
Вот и он!

Нам вернулось одно сообщение, что не удивительно, т.к. ID в сети уникальны, а мы искали именно по нему.

А теперь давайте выведем все последние(5) сообщения(по дате) из эхи *idec.talks*:
curl -XPOST -d '{"sort": [{"date": {"order": "desc"}}, {"_score": {"order": "desc" }}], "size": 5}' https://dynamic.lessmore.pw/search -H 'Content-type: application/json'
{
  "took": 2,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "skipped": 0,
    "failed": 0
  }
...

Смотрите, тут мы отсортировали(на стороне сервера) сообщения по дате в порядке убывания и ограничили лимит в 5 сообщений.
Попробуйте перевести это на SQL(====select * from idec.talks order by date desc limit 5====).

А теперь выполним более сложный поиск: мы найдем сообщения по строке! Т.е. выполним полнотекстовый поиск!

Запрос будет выглядеть так:
{
  "sort": [
    {
      "date": {
        "order": "desc"
      }
    },
    {
      "_score": {
        "order": "desc"
      }
    }
  ],
  "query": {
    "simple_query_string": {
      "query": "обзор"
    }
  },
  "size": 5
}
Отправляем его POST-ом в https://dynamic.lessmore.pw/search.

В ответ нам на это вернется список из 5 сообщений отсортированных по дате, где найдены вхождения слова "обзор".
Кстати, верхнее сообщение(b2rhH6sOfzEzgGZzLT51(на данный момент)) из эхи habra.16 и с заголовком
"Обзор литературы по языку Python для начинающих".

Вот так вот. Чтобы делать более лучшие вещи читайте документацию(query DSL) по Elasticsearch.

// Да, если вашей эхи нет в индексе, то убедитесь, что она есть в list.txt

# Re: Очарован GO
develop.16
Difrex(mobile)(tavern,23) — Peter
2017-12-10 17:32:58


Я пишу на Go. Он классный :)

# Фреймворки жабаскрипта
develop.16
Difrex(mobile)(tavern,23) — All
2017-12-05 12:40:09


А какие сейчас актуальные есть?
Чтобы просто было, без компилятора, бовера бандлеа и прочих штук.

Пока склоняюсь к vue.js, но прислушаюсь к советам.

# Re: Нужна помощь по программированию под емакс
develop.16
Difrex(mobile)(tavern,23) — Difrex(mobile)
2017-10-03 22:41:24


Переделал на хэшики - все работает =)

# Re: Нужна помощь по программированию под емакс
develop.16
Difrex(mobile)(tavern,23) — Andrew Lobanov
2017-10-03 21:37:37


А ты не мог бы подсказать как мне сделать такую штуку, как список из ассоциативных массивов.

Делаю сейчас так:

(setq new-messages-list (-concat 'new-messages-list '((content . message-content) (id . msg))))

Потом пытаюсь пройтись по этому списку:
(dolist (msg new-messages-list)
        (message (assoc 'id msg)))

Но не работает. Ругается так: Wrong type argument: listp

# Re: Вопрос по golang
develop.16
Difrex(mobile)(tavern,23) — Andrew Lobanov
2017-09-16 18:10:37


Тут пешочком не прогуляться. Мне от дома до дома родителей час на машине ехать. Вот еду обратно в метро. Метро быстро!

# Re: Вопрос по golang
develop.16
Difrex(mobile)(tavern,23) — Andrew Lobanov
2017-09-16 12:50:17


А какая версия го?

Вечером попробую у себя воспроизвести.

ЗЫ: приехал в Москву. Отвык я уже от метро 😀

# Состояние idec.el
idec.talks
Difrex(mobile)(tavern,23) — All
2018-08-07 15:49:19


Спрашивали про состояние в котором находится idec.el - я решил стартануть отдельный тред :)

>Для idec есть
>https://github.com/idec-net/idec.el
>Но я не знаю насколько он юзабелен пока

Докладываю про статус. Сам для себя я сейчас считаю, что idec.el находится в состоянии "стабильной"
альфа-версии. Что точно можно делать:
* Получать почту
* Читать почту онлайн/оффлайн
* Читать онлайн скрытоэхи
* Отвечать на письма(без цитирования)
* Писать новые сообщения
* Есть зачатачная поддержка синтаксиса IDEC(даже с ключевыми словами, типа, сабж)
* Менять некоторые настройки в `M-x RET customize-group RET idec`

В общем он работает. Выглядит пока, конечно, не так хорошо, как хотелось бы, но работает.
А еще нужно перелопатить код, чтобы приблизить idec.el к попаданию в MELPA.

Последние скриншоты можно заценить тут https://images.lessmore.pw в самом верху

// Отпрвленно из GNU Emacs. Хм, может добавить возможность вставки подписи к сообщениям?

# Re: Состояние idec.el
idec.talks
Difrex(mobile)(tavern,23) — Difrex(mobile)
2018-08-07 15:54:01


Пока писал нашел баг: нельзя отправить сообщение с символом процента...

# Транслирую свой бложик в сеть.
idec.talks
Difrex(mobile)(tavern,23) — All
2018-07-30 07:45:06


Решил пустить стрим своего недоблога нормально, т.е. ботом. Эха ii://difrex.blog на Таверне.

# Re: А вам тоже такое приходит?
idec.talks
Difrex(mobile)(tavern,23) — vit01
2018-07-17 08:17:25


Не, мне такого не приходило.

# Re: А что у нас есть универсальное для RSS?
idec.talks
Difrex(mobile)(tavern,23) — Andrew Lobanov
2018-06-29 17:51:37


Он работает, спасибо! :)

# А что у нас есть универсальное для RSS?
idec.talks
Difrex(mobile)(tavern,23) — All
2018-06-29 11:40:39


сабж

транслировать сюда кое-что. Есть какой-то универсальный rss-бот?

# Re: idec.el - Help!
idec.talks
Difrex(mobile)(tavern,23) — Difrex(mobile)
2018-06-26 12:20:43


Пофиксил ответы на сообщения из локальной базы.

# Re: idec.el - Help!
idec.talks
Difrex(mobile)(tavern,23) — Difrex(mobile)
2018-06-25 08:57:05


Да, хорошо бы, когда будешь находить баги, создавать задачки в github. Это будет мотивировать :)

# Re: idec.el - Help!
idec.talks
Difrex(mobile)(tavern,23) — vit01
2018-06-25 08:41:25


>Так много за эти месяцы произошло, что я теперь стал емаксером
Еще один емаксер в наших рядах :)

>И захотелось настроить idec-mode, но так и не получилось это сделать.
Да, оно не до конца допилено.

Вот мой конфиг:

init.el
(defun configure-idec ()
    "IDEC configuration."
    (use-package idec-mode
        :load-path "~/projects/idecel"
        :bind (("C-c C-c" . kill-this-buffer)
               ("C-c C-n" . idec-next-message)
               ("C-c C-b" . idec-previous-message)
               ("C-C C-f" . idec-load-new-messages))
        :init
        :config
        (add-hook 'idec-mode-hook 'visual-line-mode)))

configure-idec()

Ему нужны зависимости:
(defun idec-depenencies()
    "Ensure IDEC dependencies."
    (use-package emacsql-sqlite
        :ensure t)
    (use-package web
        :ensure t))

Конфигурация в M-x customize-group <RET> idec:

* Idec Echo Subscriptions: idec.talks,develop.16
- это список эх разделенных запятой

* Idec Primary Node: http://idec.spline-online.tk/
- URL до API вместе с последним /

* Подгруппа Idec Accounts group
* Idec Account Auth: someAuthString
- Это authstring для твоей ноды

Этой конфигурации должно хватить.

После этого всего можно попробовать сделать: *M-x idec-online-browse* - так проверяется рабочесть *web*.
Если ОК, то *M-x idec-load-new-messages* должно скомпилировать sqlite и выкачать последние сообщения(по-умолчанию 50).

Что не работает:
* ответ на оффлайн сообщение из БД. :(
* UI плох

Но в принципе жить можно :)

https://images.lessmore.pw/media/images/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA_%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0_%D0%BE%D1%82_2018-06-25_10-38-15.png

# IDEC identity
idec.talks
Difrex(mobile)(tavern,23) — All
2018-04-21 10:40:14


== IDEC Identity

Я придумал несколько вариантов, как мы можем шарить юзеров. Думаю, что можно пообсуждать.
Общая тема этого - использование gpg для подтверждения и шифрования.

В чем приимущества gpg:
- есть везде
- прост, как полено
- сеть доверия
- можно передавать секреты без всяких ssl

Все будет рассматриваться на примере 3-х нод, операторы которых подняли некий абстрактный(реализации нет)
сервер авторизации, добавили и подписали ключи друг-друга.
Так же, мне кажется, что эта штука может служить генератором points.txt.

== Вариант № раз

Identity service предоставляет API, например, по ~POST /x/i/points~. Запрос поинтов с ноды должен быть в виде
plain text сообщения подписанного ключом запрашивающего и зашифрованного публичным ключом целевой ноды.

Структура сообщения мне предсталяется как-то так:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

idec/ok
sync
-----BEGIN PGP SIGNATURE-----
SIGNATURE
-----END PGP SIGNATURE-----

Нода, получившая этот запрос, расшифровывает полученный запрос, проверяет валидность подписи и степень доверия
к ключу запрашивающего, после чего парсит запрос и отдает список поинтов в формате points.txt(подписынный и зашифрованный конечно же).

== Плюсы

1. Реализуется с минимумом усилий
2. Очень все просто

== Минусы

1. Все поинты со всех нод хранятся на каждой из нод
2. Если подламывают одну из нод, то утекают все поинты сети

== Вариант № два

Identity сервис предоставляет API для валидации и проталкивания(push) поинтов.

== Валидация

На ноду приходит запрос требующий authstring, но соответсвующего поинта на ноде не существует.
Итак, с этим authstring делаются запросы на ноды-соседи. Сообщение запроса примерно такое(шифрованное):

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

idec/ok
validate
authstring
-----BEGIN PGP SIGNATURE-----
SIGNATURE
-----END PGP SIGNATURE-----

Если поинт существует, то возвращается(подписано и шифровано) true, никнейм и адрес поинта. Нода открывает
сессию(например, на 12 часов) для этого поинта и хранит данные авторизации в памяти без записи в points.txt. Можно добавлять что-то в адрес, чтобы было видно, что это не родной поинт этой станции.

== Проталкивание

Отправляем строку поинта на станции-соседи. Принимающая сторона записывает поинта в points.txt. Все.

== Плюсы

- Безопасно, при подломе станции все поинты не утекут

== Минусы

- Чуть сложнее, чем вариант номер раз.


Мне видится предпочтительным второй вариант. PoC постараюсь выложить в ближайшее время.
Обсудим?

# Re: Нодлист
idec.talks
Difrex(mobile)(tavern,23) — vit01
2018-03-29 16:59:32


vit01> На моём сегменте ничего не поменялось. За исключением того, что теперь ii.difrex.ru не гейтуется (она сейчас недоступна)
Кстати, хочу пушить хабр куда-нибудь не к себе. ii 0.3 течет и виснет(!!!). Кто готов принять траффик?

# Re: Нодлист
idec.talks
Difrex(mobile)(tavern,23) — Andrew Lobanov
2018-03-26 08:06:30


Свой нодлист актуализировал, забирать тут: https://dynamic.lessmore.pw/nodelist.json

# Про IDEC
idec.talks
Difrex(mobile)(tavern,23) — All
2018-01-12 08:54:20


// Я попробую транслировать в сеть некоторые посты из своего бложика, если кто не против

IDEC - это протокол обмена сообщениями совместимый на базовом уровне с ii. Расшифровывается, как ii-like Data Exchange Convention.
Главная фишка его - это простота и возможность работать поверх чего угодно, например, ssh.
Но практически все реализации сейчас работают поверх http.

Цитата из документации(https://ii-net.tk/idec-doc/)

>Есть несколько серверов (грубо говоря, сайтов), за каждым из которых закреплены свои пользователи (поинты). Поинты пишут сообщения каждый на свой сервер.
>Через каждые 10-20 минут сервера скачивают друг у друга новые сообщения. В итоге на всю сеть одна общая база данных.
>Для установления цепочек синхронизации владельцы серверов сначала договариваются.

>Всё общение разделено на так называемые эхоконференции или эхи (см. терминология). Эха - это что-то вроде ленты твиттера или темы на форуме.
>Пользователи могут свободно подписываться на интересные им эхи и писать туда сообщения в пределах одной станции.
>Держатели серверов синхронизируют между собой (по общему согласию) самые популярные и нужные пользователям эхи, и сообщения оттуда расходятся по всей сети.

Так при отключении одного из серверов, сообщения останутся живы на других, что дает нам такие блага, как антицензурируемость и отказоустойчивость.

== Общение

В стандарте предусмотрена очень полезная фича, как /list.txt(это может быть на самом деле файл или путь в строке адреса в браузере).
На запрос list.txt сервер возвращает нам список эх(публичных) с описанием и количеством сообщений в них.
Так при первом попадании на сервер, клиент сможет сразу знать какие эхи он хочет читать.

Стандарт и все реализации серверов поддерживают создание эхи пользователем. Для этого нужно всего лишь написать в нее. Такая эха не
будет отображаться в list.txt и получить из нее сообщения можно, только зная название. Шифрования в стандарте нет, но это и не нужно,
ибо приносит только усложнение. Для приватного общения можно использовать скрытую эху и GPG.

Личных сообщений нет, но обсуждение стандарта идет. Можно начать с чтения [этого](https://dynamic.lessmore.pw/?j=FGOqT29oVwwBElTJNMjx) треда.

Каждое сообщение в сети уникально, т.е. ему присвается ID сгенерированный на основе суммы sha256 от контента. Это не спасает от спама,
но позволяет избежать коллизий в сети.

== Устройство сети

На протоколе IDEC чаще всего реализуют децентрализованную клиент-сервер сеть.
P2P не предусмотрено, но никто не мешает написать свое расширение, которое реализует P2P обмен.

Итак, рассмотрим топологию сети от простого к сложному.

Самая простейшая сеть выглядит так:

https://difrex.lessmore.pw/images/idec/idec1.png

У нас есть два клиента, которые обмениваются сообщениями через сервер. Оба клиента получают сообщения из одной и той же эхи.
Все централизовано и при смерти сервера клиенты больше не смогут общаться с друг дугом. Давайте добавим еще один сервер!

https://difrex.lessmore.pw/images/idec/idec2.png

Владельцы серверов договорились между собой обмениваться сообщениями эхи pipe.2032, теперь при выходе из строя одного из серверов
сообщения будут доступны на другом сервере.

Добавим еще сегмент сети

https://difrex.lessmore.pw/images/idec/idec3.png

У нас добавился еще один сегмент сети в котором происходит общение в эхах pipe.2032 и linux.14.
Так наш первый сегмент начинает обмениваться сообщениями со вторым. Добавим еще один сегмент.

https://difrex.lessmore.pw/images/idec/idec4.png


И еще

https://difrex.lessmore.pw/images/idec/idec5.png

Можно еще добавить связь между серверами внутри кольца и мы получим полностью децентрализованную сеть, которая реализует
распределенную базу данных.

IDEC позволяет строить любые топологии. Клиент может выступать так же и сервером и забирать сообщения сразу со всех серверов.
А простота протокола позволяет писать клиентов очень быстро.

В следующей статье напишем бота, который будет слать сообщения в указанную нами эху.

# Пустые сообщения
idec.talks
Difrex(mobile)(tavern,23) — All
2018-01-11 13:26:19


$сабж от меня. Извините :)

# ...
idec.talks
Difrex(mobile)(tavern,23) — All
2018-01-11 08:28:22




# Re: idec-mobile
idec.talks
Difrex(mobile)(tavern,23) — vit01
2018-01-11 08:28:21




# Re: Тех-работы на *.difrex.ru
idec.talks
Difrex(mobile)(tavern,23) — Difrex(mobile)
2018-01-03 10:42:03


ii.difrex.ru работает. Обновляется ДНС, еще может выдавать 502, если ваш днс не подсосал изменения.

# Тех-работы на *.difrex.ru
idec.talks
Difrex(mobile)(tavern,23) — All
2018-01-03 07:27:42


Сабж. Буду переносить многое.

Могут быть недоступны до завтра:
* ii.difrex.ru
* umbrella.difrex.ru

По-поводу umbrella - скорее всего она умрет и будет редирект на dynamic

# Re: idec-mobile
idec.talks
Difrex(mobile)(tavern,23) — vit01
2018-01-02 20:28:55


Мегафича, круто! :)

Кстати, а как остановить ее читать?

# Re: Треды на dynamic.lessmore.pw
idec.talks
Difrex(mobile)(tavern,23) — Difrex(mobile)
2018-01-02 19:54:42


Появился режим Thread mode, включается в менюшке справа. Пока работает хорошо только для одной выбранной эхи, можно считать экспериментальной фичей.

Суть: в этом режиме показываются только стартовые сообщения треда. Скоро будет у каждой темы счётчик ответов.

Кстати, формирование треда - кросэховое, т.е. если стартовое сообщение находилось в эхе ii://ii.14, а на него в repto сослались из ii://idec.talks, то ссылающиеся сообщения будут включены в тред. Да, в тред из одного сообщения перейти пока нельзя.

# Треды на dynamic.lessmore.pw
idec.talks
Difrex(mobile)(tavern,23) — All
2018-01-02 09:45:08


А так же возможность перейти к просмотру сообщения на которое отвечали

Видосик https://cloud2.difrex.ru/index.php/s/QhIP3LPmPzzAs6k

# Re: Файлоэхи и поле description
idec.talks
Difrex(mobile)(tavern,23) — Andrew Lobanov
2018-01-02 08:15:34


>Вопрос в том считать ли файл с пустым описанием некорректным
Думаю, да, некоректные. Только нужно возвращать ошибку понятную. Типа, "error: empty description".

# Re: Файлоэхи и поле description
idec.talks
Difrex(mobile)(tavern,23) — Andrew Lobanov
2018-01-01 19:33:50


Описание должно быть и должно принимать не только ascii.

# Обновления dynamic
idec.talks
Difrex(mobile)(tavern,23) — All
2017-12-12 13:10:51


* Главное обновление -- это рабочий поиск с подсветкой:
GIF: https://images.lessmore.pw/media/images/search_2zeye8U.gif

В поиск не выводится сообщение целиком. Чтобы увидеть сообщение нужно воспользоваться ссылкой

* Ссылки на сообщения
GIF: https://images.lessmore.pw/media/images/links.gif

Теперь можно дать ссылку на сообщение. Сообщение на которое перешли по ссылке будет в самом верху, а дальше будет идти
общая лента сети.

* Выбор эх
GIF: https://images.lessmore.pw/media/images/list.gif

Эхи теперь выбираются из выпадающего списка(настройка с фильтром осталась). Так же теперь можно перенестить в эху и читать ее
без изменения своей ленты.

* Исходники подчищены и открыты
Скачать: https://gitea.difrex.ru/lapus/dynamic

В ближайшем будущем:
1. Переход к сообщению, на которое отвечали
2. Древовидные комментарии
3. Восстановление работы API IDEC для клиента
4. Рабочие ссылки ii://

# Re: Совет нодов
idec.talks
Difrex(mobile)(tavern,23) — gk11
2017-12-12 11:38:04


Предлагай зарегиться, чтобы комментить. Это норм метод. Можно еще и openid поддерживать.

# Re: Совет нодов
idec.talks
Difrex(mobile)(tavern,23) — gk11
2017-12-12 11:19:43


>вопрос в авторизации - те, кто уже залогинен на ноде, понятное дело, могут такие комменты слать, а те, кто нет?
У тебя же сервер авторизации. Вот и навешивай там куку, а в js проверяй.

Pages: 1 2