RSS
Pages: 1 ... 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 ... 80
[>] Машина снов на Arduino своими руками
develop.16
vit01(mira, 1) — All
2017-06-22 16:27:52


Прочитал в интернете недавно про такую штуку как машина сновидений. Грубо говоря, это картонный вращающийся цилиндр вокруг источника света, с прорезями, создающий мерцание частотой 8-13 Гц. Оптический эффект от этого мерцания вызывает резонанс в мозгу, в результате чего от просмотра бликов у человека едет крыша, возникают интересные "галюны".

Подробнее читаем здесь: https://ru.wikipedia.org/wiki/Машина_сновидений

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

Осторожно, девайс может вызвать приступ эпилепсии! Если станет плохо, ответственности не несу!

Итак, чтобы изготовить трип-девайс из подручных средств, нам понадобятся:

1. Arduino или Raspberry Pi (или любую другую плату для самоделкиных). В данном случае ардуино
2. Три разноцветных светодиода или один RGB-LED. У меня в DIY-комплекте, заказанном из Китая, как раз оказался RGB-светодиод, поэтому я решил воспользоваться именно им
3. Устройство для преломления, чтобы создавать на стенах красивые цветовые картинки и усилить "наркоманский" эффект. Я использовал в качестве преломлятеля хрустальный стакан с резным узором.
4. Кнопка для переключения частот (8-13 Гц), дабы настраивать сеанс "под свой вкус". У меня хорошей кнопки не оказалось, поэтому я взял вместо неё датчик обхода препятствий. На него не надо нажимать пальцем, а достаточно лишь провести рукой на близком расстоянии.
5. [Опционально] источник питания для контроллера, ради портативности.
6. [Опционально] увеличительное стекло, лупа. Поможет делать другие прикольные узоры на стенах и потолке.

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

Исходник скетча для Arduino:

// периоды свечения/затухания светодиодов;
// соответствуют частотам от 8 до 13 Гц
int periods[] = {62, 56, 50, 45, 42, 38};

// светодиоды к аналоговым выводам, кнопку - к цифровому
int r = A0;
int g = A1;
int b = A2;
int button = 13;

byte selected_period_index = 0; // 1 период
int selected_period = 62;       // 1 период
boolean pressed = false;        // кнопка была нажата
boolean tmp_pressed = false;

// сохранённые значения цветов
byte last_r = 0;
byte last_g = 0;
byte last_b = 0;

void setup() {
  randomSeed(0);
  pinMode(button, INPUT);
  pinMode(r, OUTPUT);
  pinMode(g, OUTPUT);
  pinMode(b, OUTPUT);
}

void changePeriod() {
  if (selected_period_index < 5) selected_period_index++;
  else selected_period_index = 0;

  selected_period = periods[selected_period_index];
}

void color_enable() {
  // переставляем цвета местами и добавляем
  // на красный цвет рандом
  last_b = last_g;
  last_g = last_r;
  last_r = random(50, 255);
  // минимальное значение 50 нужно,
  // чтобы избегать появления тусклых цветов
  
  analogWrite(r, last_r);
  analogWrite(g, last_g);
  analogWrite(b, last_b);
}

void color_disable() {
  analogWrite(r, 0);
  analogWrite(g, 0);
  analogWrite(b, 0);
}

void loop() {
  color_enable(); // 1, 2, 3 - ёлочка, гори!

  // если кнопка была нажата, меняем частоту мерцания
  tmp_pressed = (digitalRead(button) == HIGH);
  if (pressed && !tmp_pressed) changePeriod();
  pressed = tmp_pressed;

  delay(selected_period);
  color_disable();
  delay(selected_period);
}

После загрузки программы и тестирования откладываем девайс до наступления полной темноты. Ночью перед его включением посоветую подобрать какой-нибудь годной музыки. Буквально вчера тестировал эту хрень в полной тишине, сегодня надо будет врубить музыку. Кстати, в моей комнате есть зеркало, поэтому усиление эффекта происходило и с его помощью.

Варианты эксплуатации:

1. Либо с открытыми глазами смотрим на стены и потолок (можно использовать линзы/лупу для ещё более прикольных узоров)
2. Или закрываем глаза и смотрим прямо на источник света.

Вот так выглядит моя самодельная хрень: https://ii-net.tk/ii/ii-point.php?q=/x/file/dream-arduino.jpg

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

Прошу комментариев/вопросов, если кому-то стало интересно.

[>] Re: Машина снов на Arduino своими руками
develop.16
vit01(mira, 1) — vit01
2017-06-25 21:47:05


Усовершенствовал девайс, добавив туда второй светодиод и поменяв мою любимую для дебага Arduino UNO на портативную Arduino Pro Mini.

https://ii-net.tk/ii/ii-point.php?q=/x/file/dream-arduino-2.jpg

Вместо пауэрбэнка теперь три мизинчиковые батарейки, и трип-машину можно засунуть в карман. Цепь включается нажатием на контакты с питанием на плате (оказывается, кривая пайка может быть не только минусом, но и полезной фичей!).

Зачем мне понадобился второй светодиод?

1. При использовании единственного RGB-LED проявлялся не очень хороший эффект: полупроводники светодиода, часто моргая, перегревались, а перегрев являлся причиной случайных затуханий во время работы. Я бы мог разгрузить плату, добавив резистор, но не хотелось терять в яркости. Добавление второй лампочки означало то, что первая будет меньше мигать и меньше нагреваться (поставил так, чтобы они работали по очереди) -> "сеанс" теперь проходит плавно, без затуханий.

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

3. Пара разных источников света, как я выяснил на практике, гораздо сильнее "расшатывает" мозг, чем один. Действительно наркота какая-то

Упарываемся по-технарски %), хехехе
Вторая схема вообще полный улёт, рекомендую. И надеюсь, что роскомпозор не заблокирует IDEC за эту статью.

[>] Re: Машина снов на Arduino своими руками
develop.16
vit01(mira, 1) — vit01
2017-06-26 19:51:48


Андрей попросил видео сабжа в действии. Вот оно:

https://alicorn.tk/dashie/index.php/s/4PZLyfKTDDVSH5U

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

[>] Требуется сервер
develop.16
vit01(mira, 1) — All
2017-06-27 20:03:52


Товарищи, нужна ваша консультация.

По случаю успешного окончания школы (золотая медаль как-никак) мне подогнали денег, и у меня есть план на лето.

Хочу заказать хороший, годный VPS на 2 месяца, чтобы установить туда эмулятор Андроида и IDE. На сервере, конечно же, будут иксы и доступ через VNC + RDP.
View-only доступ к рабочему столу думаю предоставить всем, а пароль "для дела" дать некоторым из вас, кому захочется. В первую очередь Борису, потому что он IDEC Mobile иногда помогает пилить.

Таким шагом будет ускорена разработка клиента и другого софта для IDEC, потому что сервак будет доступен 24/7, и мне не надо будет тратить время на перезагрузки, ожидания запуска IDE и "въезд" в сборочное окружение.
Можно будет писать код и компилить на даче, в транспорте и так далее. Не отрываться от кодинга.

Плюс есть надежды, что кто-нибудь будет помогать или давать свои комментарии в реалтайме

Требования к серверу

1. ОЗУ - 3-4 гига. Желательно 4
2. Место на диске сколько получится, но хотелось бы 30-40 гигов
3. ОС - любой линь, за исключением source-based (генту, слака).
4. Цена в районе 400-500 рублей в месяц. Можно меньше.

Если подскажете какой рабочий вариант, то это будет очень круто. Планирую развернуть сабж уже на этой неделе.

[>] Re: Требуется сервер
develop.16
vit01(mira, 1) — Difrex
2017-06-27 21:45:46


Difrex> firstbyte.ru

У них самый выгодный тариф - это за 399р. дают 2 гига ОЗУ и 40 гигов места.

Вот посмотрел сейчас на поисквпс, здесь советует несколько вариантов:

https://poiskvps.ru/index.php?search_hdd_min=25&search_hdd_max=60&search_ram_min=3072&search_ram_max=4096&search_price_max=500

Самый выгодный, на мой взгляд, последний, где 4 гига предлагают за 420 рублей. Но и остальные с 3 гигами не отстают.

Подожду ещё предложений от сетян.

[>] Re: Машина снов на Arduino своими руками
develop.16
vit01(mira, 1) — btimofeev
2017-06-28 18:09:30


btimofeev> А эффект от этого реально какой-то есть?

Если сидеть с открытыми глазами, то это как на дискотеке, только немного под трансом. Так или иначе, это интересно, рекомендую.

С закрытыми - уже трип какой-то напоминает. Через некоторое время сидения с закрытыми глазами появляются разные глюки, воображение усиливается. Можно вполне "выпасть" из реальности, наблюдая причудливые хренотени у себя в голове. Оказывается, сабж используют даже для психотерапии.
То есть мигалка нужна, если тебе слишком скучно, а фантазия плохо развита. Устройство как бы "подстёгивает" мозг на что-нибудь эдакое.

Наверное, некоторые слышали про сенсорную депривацию. Суть в чём: человека запирают в тёмной, звукоизолирующей комнате. Он там голышом залезает в специальную ванну, с водой при температуре тела. Все эти условия вызывают так называемый "информационный вакуум", благодаря которому мозг начинает придумывать всякую фигню (в виде глюков), чтобы остаться на плаву.

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

[>] Re: Требуется сервер
develop.16
vit01(mira, 1) — Difrex
2017-06-28 21:48:58


Difrex> MSK-highmem-KVM-SAS-2 439р

Ой, я невнимательно просмотрел каталог :)

Спасибо за рекомендацию, заказал именно этот вариант, уже получил рута и пробую настраивать.

[>] IDEC Mobile: кодинг в прямом эфире
develop.16
vit01(mira, 1) — All
2017-06-29 10:09:57


Надоели скучные сериалы и реалити-шоу? Хочется посмотреть на эпик-мега-экшен?

Смотреть немое кино бесплатно без смс и регистрации:

$ vncviewer -Shared -ViewOnly debug.ii-net.tk:5901

Юзер debug
Пароль 303045

Встречайте актёров:

1. Андроид студия - главная героиня шоу. Обаятельная, привлекательная, но иногда очень капризная и упёртая свол^W IDE.
2. Виртуальный Android 4.4 - надёжный и неприхотливый эмулятор, который через годика два выйдет на пенсию. Обладает загадочным характером, будет периодически появляться и исчезать
3. Курсор мыши. Часто бездельничает, но иногда тыкает по кнопкам, бегает по спагетти-быдлокоду и выделяет текст.
4. Терминал. Всегда в своём репертуаре. Отображает белый текст на чёрном фоне.

[>] Re: IDEC Mobile: кодинг в прямом эфире
develop.16
vit01(mira, 1) — Difrex
2017-06-30 20:08:37


Кстати, как ни странно, пробросить порт дебага через ssh на удалёнку и набрать adb connect localhost субъективно кажется менее напряжным, чем возиться с проводами и подключением по локалке =)

Так что нафиг эмуляторы, буду продолжать работать с реальными устройствами. Но 4 гигабайта ОЗУ оказались не лишними. Теперь хотя бы браузер рядом с IDE не страшно включённым держать. И второй, запасной комп дома разгруженный сидит, так что разработка теперь без всяких напрягов и ненужных ожиданий происходит.

P.S. Кодинг-эксгибиционизм-шоу до сих пор идёт. Кому хочется (и тому, кто может в андроид), могу даже RW-пароль скинуть

[>] Stringlate - перевод Android-приложений в два клика
develop.16
vit01(mira, 1) — All
2017-07-10 22:00:30


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

https://github.com/LonamiWebs/Stringlate
https://f-droid.org/packages/io.github.lonamiwebs.stringlate/

Использовать его очень просто: вводите адрес Git-репозитория (есть интеграция с Github), дальше приложение само скачает и распарсит нужные ресурсы.

Потом можно спокойно править переводы через удобный GUI. После окончания работы можно экспортировать результат в файл, поделиться им по Email или сразу открыть Pull Request/Issue в репозитории. Рекомендую и одобряю.

[>] [DIY] Как банка тушёнки улучшит жизнь в Vim & Emacs
develop.16
vit01(mira, 1) — All
2017-07-16 12:21:54


Прочитав статью на Хабре про педалирование Vim ( https://habrahabr.ru/post/232177 ), я загорелся идеей сделать себе самодельную педальку для текстовых редакторов.
Как из того анекдота про педаль для Emacs, чтобы Ctrl зажимать, только уже не как анекдот, а на самом деле.

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

Внимание, даже если у вас нет Arduino, то всё равно дочитайте статью, там будет кое-что интересное про Linux!

Итак, если у нас будет педаль, то надо же куда-то ногой нажимать, верно? Съев на даче тушёнку, я не поспешил выбрасывать банку из-под неё, а вымыл и унёс домой.

Фотка 1: https://alicorn.tk/dashie/index.php/s/cIjtxJbHZJnNFbz

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

Фотка 2: https://alicorn.tk/dashie/index.php/s/LRPbdF5O9DBL535

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

Самый первый вариант крепления: фотка 3: https://alicorn.tk/dashie/index.php/s/SA4jEyiOgFwEvWX

Учитель трудов в школе за такую халтуру поставил бы 2 или заставил бы переделывать (потому что на месте креплений внизу планка скололась; делалось всё криво, на глазок, и ничего не отшлифовано), но работать оно работает. Тем более, переделывать мне больше не на чем, т.к. дома и так хорошего дерева в дефиците.

Самая маленькая (и длинная) деревяшка крепится к жестяной пластине с помощью рыболовной лески, продетой в сквозные отверстия и завязанной в узел. К вертикальным перегородкам она приделана с помощью клея "Момент" в специально выточенную пазуху.

Сверху леска проходит ненадёжно, так что груз-противовес срывается, если резко дёрнуть педаль. Но ничего, не проблема, делаем шилом ещё два отверстия сверху и закрепляем груз снова. Ещё укрепим вертикальные планки, чтобы они не съезжались во время работы.

Фотка 4: https://alicorn.tk/dashie/index.php/s/biXXRbjlbcfV2s3

Итак, механическая часть готова, теперь займёмся программной. Нам понадобится любая модель Arduino, способная подключаться по USB (Uno, Nano, Mega и.т.д, в моём случае - Uno). При нажатии педали будет срабатывать датчик, который будет отлавливаться контроллером. В качестве датчика можно использовать обычную кнопку, детектор магнитного поля (геркон) или любой самодельный прибамбас, который умеет замыкать цепь. Геркон я попробовал, и это было неудобно, поэтому взял кнопку.

Arduino версий Micro и Leonardo умеет эмулировать HID-устройства, поэтому мы можем назначить пересылку любой клавиши, а решение будет кроссплатформенным. Кстати, на Windows и в графических DE вроде KDE/GNOME педаль была бы полезна для Alt+Tab или для переключения раскладки с русской на английскую.

Как позднее оказалось, Arduino Uno/Mega и им подобные требуют перепрошивки USB-контроллера, потому что родной поддержки эмуляции HID у них нет. Но мой Uno - китайский, так что нужных разъёмов для этого у него нет. Подключаться же к чипу напрямую мне боязно, потому что он, во-первых, мелкий, во-вторых, в случае кирпича восстанавливать мне его нечем (второй Uno пока у меня нет).

------------

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

Отличная идея! Почесав репу и найдя информацию о модуле ядра под названием UHID (в Archlinux он включен по умолчанию), начал с ним ковыряться. Это было не так-то просто, поэтому пока напишем прошивку для педали.

Скетч для Arduino:

int detector = 13; // наш датчик для педали
int pedal_pressed = LOW;
int last_pressed = LOW;

void setup() {
  pinMode(detector, INPUT);
  Serial.begin(9600);
}

void trigger_press()   { Serial.print("on\n"); }
void trigger_release() { Serial.print("off\n"); }

void loop() {
  // нажата ли педаль в данный момент
  pedal_pressed = digitalRead(detector);

  if (pedal_pressed == HIGH && last_pressed == LOW) trigger_press();
  else if (pedal_pressed == LOW && last_pressed == HIGH) trigger_release();

  last_pressed = pedal_pressed;
  delay(100); // на всякий случай ждём 0.1 сек, дабы не делать слишком много проверок
}

Примеров использования для UHID в сети я практически не нашёл. Есть только один не очень исчерпывающий пример из исходников ядра Linux и кусок документации.

Интересующиеся могут ознакомиться с ними здесь:

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/hid/uhid.txt?id=refs/tags/v4.10-rc3
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/samples/uhid/uhid-example.c?id=refs/tags/v4.10-rc3

Взяв uhid-example.c из исходников ядра и поработав с ним, я добавил туда куски кода вот отсюда: ii://TIzgUZRrWGcQSEkKBDiP, чтобы читать данные, которые поступают из Arduino.

Код из этого исходника может пригодиться и вам, чтобы эмулировать нажатия клавиш в абсолютно любых программах. Конечно же, нужен root-доступ для запуска, но зато работать оно будет везде: и в консоли, и в Xorg.

#include <errno.h>
#include <fcntl.h>
#include <poll.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <termios.h>
#include <unistd.h>
#include <linux/uhid.h>

/*
rdesc - это магическое заклинание духа хаоса Дискорда
я узнал его, подключив к нетбуку USB-клавиатуру и посмотрев в файл
 /sys/kernel/debug/hid/<dev>/rdesc, чтобы посылать аналогичные заголовки
из программы. Надо ведь как-то притворяться клавиатурой :)
*/

STATIC unsigned char rdesc[] = {
	0x05, 0x01,
	0x09, 0x06,
	0xa1, 0x01,
	0x05, 0x08,
	0x19, 0x01,
	0x29, 0x03,
	0x15, 0x00,
	0x25, 0x01,
	0x75, 0x01,
	0x95, 0x03,
	0x91, 0x02,
	0x95, 0x05,
	0x91, 0x01,
	0x05, 0x07,
	0x19, 0xe0,
	0x29, 0xe7,
	0x95, 0x08,
	0x81, 0x02,
	0x75, 0x08,
	0x95, 0x01,
	0x81, 0x01,
	0x19, 0x00,
	0x29, 0x91,
	0x26, 0xff,
	0x00, 0x95,
	0x06, 0x81,
	0x00, 0xc0
};

static int uhid_write(int fd, const struct uhid_event *ev)
{
	ssize_t ret;

	ret = write(fd, ev, sizeof(*ev));
	if (ret < 0) {
		fprintf(stderr, "Cannot write to uhid: %m\n");
		return -errno;
	} else if (ret != sizeof(*ev)) {
		fprintf(stderr, "Wrong size written to uhid: %ld != %lu\n",
			ret, sizeof(ev));
		return -EFAULT;
	} else {
		return 0;
	}
}

static int create(int fd)
{
	struct uhid_event ev;

	memset(&ev, 0, sizeof(ev));
	ev.type = UHID_CREATE;
	strcpy((char*)ev.u.create.name, "test-uhid-device");
	ev.u.create.rd_data = rdesc;
	ev.u.create.rd_size = sizeof(rdesc);
	ev.u.create.bus = BUS_USB;
	ev.u.create.vendor = 0x15d9;
	ev.u.create.product = 0x0a37;
	ev.u.create.version = 0;
	ev.u.create.country = 0;

	return uhid_write(fd, &ev);
}

static void destroy(int fd)
{
	struct uhid_event ev;

	memset(&ev, 0, sizeof(ev));
	ev.type = UHID_DESTROY;

	uhid_write(fd, &ev);
}

static int event(int fd)
{
	struct uhid_event ev;
	ssize_t ret;

	memset(&ev, 0, sizeof(ev));
	ret = read(fd, &ev, sizeof(ev));
	if (ret == 0) {
		fprintf(stderr, "Read HUP on uhid-cdev\n");
		return -EFAULT;
	} else if (ret < 0) {
		fprintf(stderr, "Cannot read uhid-cdev: %m\n");
		return -errno;
	} else if (ret != sizeof(ev)) {
		fprintf(stderr, "Invalid size read from uhid-dev: %ld != %lu\n",
			ret, sizeof(ev));
		return -EFAULT;
	}

	switch (ev.type) {
	case UHID_START:
		fprintf(stderr, "UHID_START from uhid-dev\n");
		break;
	case UHID_STOP:
		fprintf(stderr, "UHID_STOP from uhid-dev\n");
		break;
	case UHID_OPEN:
		fprintf(stderr, "UHID_OPEN from uhid-dev\n");
		break;
	case UHID_CLOSE:
		fprintf(stderr, "UHID_CLOSE from uhid-dev\n");
		break;
	case UHID_OUTPUT:
		fprintf(stderr, "UHID_OUTPUT from uhid-dev\n");
		break;
	case UHID_OUTPUT_EV:
		fprintf(stderr, "UHID_OUTPUT_EV from uhid-dev\n");
		break;
	default:
		fprintf(stderr, "Invalid event from uhid-dev: %u\n", ev.type);
	}

	return 0;
}

static char ctrl_down = 0;

static int send_event(int fd)
{
  struct uhid_event ev;
  memset(&ev, 0, sizeof(ev));
  ev.type = UHID_INPUT;
  ev.u.input.size = 9;

  // вот это та самая хрень, которая делает виртуальное нажатие
  // первый элемент массива data - это клавиши-модификаторы
  // 0 - это их отсутствие (в данном случае для key_release)
  // а единичка - это как раз левый Ctrl

  ev.u.input.data[0] = ctrl_down;
  ev.u.input.data[1] = 0x0;

  return uhid_write(fd, &ev);
}

int main(int argc, char **argv)
{
	int fd;
	const char *path = "/dev/uhid";
	struct pollfd pfds[2];
	int ret, r;
	struct termios state;
	char serialbuf[5];

	ret = tcgetattr(STDIN_FILENO, &state);
	if (ret) {
		fprintf(stderr, "Cannot get tty state\n");
	} else {
		state.c_lflag &= ~ICANON;
		state.c_cc[VMIN] = 1;
		ret = tcsetattr(STDIN_FILENO, TCSANOW, &state);
		if (ret)
			fprintf(stderr, "Cannot set tty state\n");
	}

	fprintf(stderr, "Open uhid-cdev %s\n", path);
	fd = open(path, O_RDWR | O_CLOEXEC);
	if (fd < 0) {
		fprintf(stderr, "Cannot open uhid-cdev %s: %m\n", path);
		return EXIT_FAILURE;
	}

	fprintf(stderr, "Create uhid device\n");
	ret = create(fd);
	if (ret) {
		close(fd);
		return EXIT_FAILURE;
	}

	pfds[0].fd = STDIN_FILENO;
	pfds[0].events = POLLIN;
	pfds[1].fd = fd;
	pfds[1].events = POLLIN;

	int device_fd = open("/dev/ttyUSB0", O_RDONLY | O_NOCTTY | O_NDELAY);
	if (fd == -1) {
		perror("open_port: Unable to open /dev/ttyUSB0 - ");
		return 1;
	} else {
		fcntl(device_fd, F_SETFL, FNDELAY);
	}
	
	while (1) {
		ret = poll(pfds, 2, -1);
		r = read(device_fd, serialbuf, 5); // получаем данные с педали
		
		if (ret < 0) {
			fprintf(stderr, "Cannot poll for fds: %m\n");
			break;
		}
		if (pfds[0].revents & POLLHUP) {
			fprintf(stderr, "Received HUP on stdin\n");
			break;
		}
		if (pfds[1].revents & POLLHUP) {
			fprintf(stderr, "Received HUP on uhid-cdev\n");
			break;
		}

		if (pfds[0].revents & POLLIN) {
		  // проверка поступающих данных с ардуины
		  if (r > 0 && strncmp(serialbuf, "on\n", 3) == 0) {
		    ctrl_down = 0;
		    send_event(fd);
		    memset(&serialbuf, 0, 5); // очищаем буфер
		  }
		  else if (r > 0 && strncmp(serialbuf, "off\n", 4) == 0) {
		    ctrl_down = 1;
		    send_event(fd);
		    memset(&serialbuf, 0, 5);
		  }
		}
		if (pfds[1].revents & POLLIN) {
			ret = event(fd);
			if (ret)
				break;
		}
	}

	fprintf(stderr, "Destroy uhid device\n");
	destroy(fd);
	return EXIT_SUCCESS;
}

Всё что остаётся - это подключить нашу педаль по USB и запустить скомпилированный бинарник из-под рута.

Сейчас я пишу это сообщение в Emacs с использованием педали. Вполне неплохо работает. Вот видите - даже из банки тушёнки можно что-нибудь полезное запилить :)

В качестве бонуса выкладываю найденный на просторах сети PDF со стандартом на HID-устройства. Любые непонятные моменты там можно уточнить, это очень годный документ: https://alicorn.tk/dashie/index.php/s/dISkfEraH8xVgDm
Первые 5 страниц - вода, читать с 6.

[>] Re: TopicID на dynamic: вытаскиваем тред целиком
develop.16
vit01(mira, 1) — Difrex(mobile)
2018-01-05 12:53:12


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

1. Хотелось бы добавить в FAQ описание, как пользоваться тредами и навигацией туда-сюда-обратно по msgid, сабжам, поинтам

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

3. API для экспорта текущей ленты в формат RSS.

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

[>] Re: Освоение программирования
develop.16
vit01(mira, 1) — Anotheroneuser
2018-05-14 19:10:44


>> Переходи сразу к lua
Anotheroneuser> Привлекательная мысль, благодарю. И очень сэкономит время.

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

Но всё-таки соглашусь с остальными товарищами и посоветую начать с Lua.

На мой взгляд, самое важное в обучении программированию - это иметь возможность сразу "потрогать" результат своего труда. А если твоя краткосрочная цель есть написание игрушек на Инстеде, то Lua - это точное попадание. Так у тебя будет мотивация улучшать свои навыки, и, натренировавшись, можно будет углубляться, переходить от простого к сложному. К тем же плюсам, например.

// python тоже очень крут в плане низкого порога вхождения и неплохо оптимизирует рутину

P.S. Когда начнёшь изучать Lua, попробуй установить Awesome WM. Будешь изучать язык и одновременно тюнинговать свой рабочий стол =)

[>] Re: Освоение программирования
develop.16
vit01(mira, 1) — Andrew Lobanov
2018-05-17 05:33:48


>>>  Awesome WM

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

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

[>] Microsoft купил Github и будет устанавливать там свои порядки
develop.16
vit01(mira, 1) — All
2018-06-05 15:47:57


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

[>] Re: Microsoft купил Github и будет устанавливать там свои порядки
develop.16
vit01(mira, 1) — Andrew Lobanov
2018-06-18 19:30:40


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

AL> Как там развиваются события? Уже пора переходить на self-hosted? =)

Пока решил лично для себя, что валить не буду, потому что

1. Весь мой код свободный, и приватных репозиториев нет, следовательно бояться нечего
2. МС пока не предпринимают никаких действий, потому что хотят сохранить аудиторию (тем более, многие от испуга уже свалили на гогс или гитлаб)
3. Git распределённый, и альтернатив для хостинга достаточно, поэтому мигрировать всегда успеем, если вдруг прижмёт

[>] org-mode и выход из дома
develop.16
vit01(mira, 1) — All
2018-10-02 05:52:28


У меня в org-mode на каждый день есть актуальное расписание занятий в универе и не только

Обычно я выхожу из дома за N минут до начала 1 пары

Задачи

1. Сделать такие уведомления в org-mode, чтобы напоминали, когда пора выходить
2. Таймер обратного отсчёта [время до выхода из дома HH:MM и/или до начала пары]

Если для 1 задачи можно сделать костыль через SCHEDULED, то насчёт обратного отсчёта не знаю, куда копать

Можете подсказать простое и красивое решение?

+++ Отправлено через IDEC Mobile
+++ GNU/Linux, Android, physics, MLP:FIM

[>] Re: org-mode и выход из дома
develop.16
vit01(mira, 1) — Difrex
2018-10-07 07:25:32


vit01>> Можете подсказать простое и красивое решение?
Difrex> Нужно писать самому =)

Таки заморочился и написал то, что требуется :)

https://github.com/vit1-irk/org-agenda-timeleft

Приятно удивил тот факт, что org-mode умеет перегонять расписание в машиночитаемый CSV

Получается, с помощью org-mode можно не только автоматизировать своё личное расписание, но и делать более сложную обработку информации. Например, статистику строить или даже какую-нибудь систему для умного дома сделать

+++ Отправлено через IDEC Mobile
+++ GNU/Linux, Android, physics, MLP:FIM

[>] org-mode и Github Projects
develop.16
vit01(mira, 1) — All
2018-11-14 18:36:41


У Гитхаба есть фича под названием Projects. Это что-то вроде Kanban-списков для составления планов. Каждый Project содержит в себе набор карточек, в каждой из которых можно хранить заметки и отмечать сделанные дела.

В репозитории IDEC Mobile есть основной план, доступный всем, в котором я открываю и закрываю задачи. Всё бы хорошо, но, имея под рукой такой мощный инструмент как Emacs, крайне расточительно лезть каждый раз в браузер, чтобы поглядеть на список дел по проекту с кодом.

Давайте это исправим, используя python и org-mode

1. $ pip install PyGithub
Документацию по пакету можно посмотреть здесь: https://pygithub.readthedocs.io/en/latest/introduction.html

2. Получаем access-token для API Гитхаба
Идём сюда: https://github.com/settings/tokens
Получаем Personal Access Token с доступом к вашим репозиториям, копируем

3. Создаём python-скрипт с подобным содержанием:

#!/usr/bin/env python3

from github import Github

g = Github("your-access-token")

# 0 - это первый проект, в данном случае он единственный
prj = g.get_user().get_repo("idec-mobile").get_projects()[0]

# вывод форматируется в виде списка org-mode
print("\n+ {" + prj.name + "} <" + prj.html_url + ">")
for column in prj.get_columns():
        print("\n\t+ " + column.name)

        for card in column.get_cards():
                if card.archived:
                        continue
                
                print("\t\t+ " + str(card.note))

4. В файле org-mode прописываем блок для запуска кода
:results output raw ставить обязательно, иначе org-mode будет оформлять вывод скрипта как текст вроде цитаты, а нам надо, чтобы он был в виде org-списка

#+BEGIN_SRC shell :results output raw
~/path/to/your/python/script
#+END_SRC

5. Если в Emacs не настроен org-babel, то в конфиге прописать вот это (свои языки прописать по желанию)

  (org-babel-do-load-languages
   'org-babel-load-languages
   '(
     (shell . t)
     (python . t)
     (emacs-lisp . t)
     (C . t))
   )

6. Можно запускать. Не забудьте chmod +x для питоноскрипта
Для выполнения кода в org-mode надо лишь навести курсор на блок этого кода и нажать C-c C-c

Список гитхабопроектов появится рядом с меткой #+RESULTS:

[>] Re: CI
develop.16
vit01(mira, 1) — Difrex
2019-04-12 18:21:55


>>Drone CI тянет за собой Docker и, насколько понимаю, запускает его на каждый чих, при каждой сборке. Это оттолкнуло сразу
Difrex> Почему оттолкнуло? У тебя получаются изолированные повторяемые билды каждый запуск.

Дело не в этом. Docker - сам по себе оверхед, жрёт кучу свободного места на диске своими образами. Да и как-то ради простенького сборочного процесса сохранять отдельный контейнер жирновато.

Difrex> Посмотри на CircleCI - там LISP(Clojure) :)
Difrex> А вообще, если ты хочешь опенсорс собирать, то бери TravisCI и не парься со своими серваками.

CircleCI и Travis не подходят по причине того, что это Software as a Service. Да, это удобно, быстро, прикольно, но надо всегда иметь способы быть независимыми от чужого дяди.

В конечном итоге придётся, видимо, осваивать докерные штучки вроде DroneCI и GitlabCI, а пока что я делаю тупо всё на баш-скриптах и не заморачиваюсь.

+++ Отправлено через IDEC Mobile
+++ GNU/Linux, Android, physics, MLP:FIM

[>] Re: Шуточные песенки про С (Папа может в СИ)
develop.16
vit01(mira, 1) — Peter
2019-08-11 11:19:27


Peter> Но вторая -- давно известная шутка. А вот "ПАПА МОЖЕТ СИ" первый раз услышал. :)

Это широко известная группа Научно-Технический Рэп. Их самые хитовые песни - это "Делай бэкап", "Тыжпрограммист", "Дедлайн", "Курим мануал"

А вот по их песням про математику (да, такие у них тоже есть) я на первом курсе заучивал теоремы. Очень креативные тексты и "качающая" музыка.

+++ Отправлено через IDEC Mobile
+++ GNU/Linux, Android, physics, MLP:FIM

[>] Re: android dev
develop.16
vit01(mira, 1) — jmaks
2019-11-03 21:19:39


jmaks> vit01, btimofeev
jmaks> Подскажите товарищи, накидайте годной маны, как быстро без регистрации и смс, собрать простую приложуху под сабжевую систему на смартвоне любом, умеющую одной кнопкой --пересобирать мир--, запускать стрим потока в строенный в приложуху радиво плеер?!

btimofeev уже всё объяснил, достаточно лишь разгрести исходники парочки приложений-плееров на F-Droid

jmaks> Ну и вообще, как бы другие советы, на чем/под чем и как лучше, удобнее, современнее собирать apk?!

От себя добавлю, что нынче Qt очень подтянулись в поддержке андроида. Если уже знаешь Qt и умеешь на нём писать, то начать и поддерживать приложение будет нетрудно.

+++ Отправлено через IDEC Mobile
+++ GNU/Linux, Android, physics, MLP:FIM

[>] Рассказ, сочинённый тульпой
creepy.14
vit01(mira, 1) — All
2017-01-14 18:46:03


// Немного трешака для эхотага.

Источник: http://tulpa-leekah.tumblr.com/post/42012078490/%D1%80%D0%B0%D1%81%D1%81%D0%BA%D0%B0%D0%B7-%D1%81%D0%BE%D1%87%D0%B8%D0%BD%D1%91%D0%BD%D0%BD%D1%8B%D0%B9-%D1%82%D1%83%D0%BB%D1%8C%D0%BF%D0%BE%D0%B9

Однажды молодой человек по имени Константин, работавший в магазине дорогого электроинструмента бухгалтером и любивший засиживаться на работе надолго после закрытия, по своему обыкновению сидел там, не в силах оторваться от конференций, чанов, форум и всего остального, что составляет комьюнити тульпамансеров. Его собственная тульпа, Тринити из известной трилогии, сидела рядом, с любопытством наблюдая за ходом разговоров и иногда просила написать что–то от её лица. Обсуждали посессинг, который они уже месяц пытались начать практиковать, но похвастаться пока было нечем, поэтому он и спрашивал советов у более опытных тульповодов. Интересные дискуссии так раззадорили его, что он вспотел. Тем более, что батареи жарили, как назло, несмотря на всего -5 за окном. Подумав, он открыл большое окно настежь. Прохладный воздух из темного внутреннего двора здания приятно освежал, и он забыл о времени и всём окружающем, не замечая, как во дворе остановилась машина, несколько хмурых личностей украдкой заглянули в окно, и кто-то вполголоса сказал:

– Серега, подъезжай, там один лох сидит. Не придётся вламываться - окно открыто.

Через четверть часа тишину офиса, нарушаемую лишь тихим мурлыканием радио, взорвали двое мужиков в масках, впрыгнувших в помещение с пистолетами в руках.

– Смирно, пидарас! Живо показывай сейф, пока не зажмурился!

Костя почувствовал, что всё тело онемело, как обычно бывало, когда его травили в школе и институте, язык отказался слушаться, он с трудом поднялся, и под двумя прицелами безропотно двинулся в сторону подсобки, где стоял сейф и лежали кучи канцелярских и торговых принадлежностей. Грабители чувствовали сломленность юноши, не требовавшую дополнительной порции устрашения. За несколько шагов Костя успел передумать всё. То, что он остался после конца рабочего дня, вместо того, чтобы поставить магазин на сигнализацию – исключительно его вина, как и открытое окно. Договор о коллективной мат. ответственности возложит на его плечи неоплатные долги, ведь в сейфе – почти миллион выручки за несколько дней. Да и полиция вряд ли быстро отбросит версию того, что он – сообщник. Могут и подставить, посадить, ради "палки"... С этими мыслями он переступил порог подсобки и внезапно провалился в бездну небытия и безвременья...

Очнувшись, лежа на полу в позе "звезды", он не сразу понял, где он и что происходит. Сначала пришла боль. Саднило лицо, по нему к шее текло что–то тёплое. Подняв руку и выпустив зажатый в ней свой сотовый телефон, он коснулся лица. Рука была вся в крови. Во второй руке был пистолет. Пистолет? С отвращением Костя отбросил его, стали возвращаться воспоминания последних минут до того, как его "вырубило".

– Выходит, магазин ограбили. Ладно, "спасибо, что живой", хотя бы. Надо вставать и оценить свои повреждения.

Приподняв голову, Костя обомлел – всё было забрызгано кровью, лежали два тела, рядом с одним из которых, отдельно, лежала человеческая рука. Посмотрев на окно, он увидел еще одно тело, по пояс свесившееся с подоконника. Кровь капала откуда-то из него, стекая по батарее и образовав немалую лужу на полу.

Не успел он отойти от шока, как во дворе послышались сирены, дома озарили красно-синие всполохи, кто-то подергал входную дверь, и вскоре через то же самое окно в помещение аккуратно заглянули, одновременно сканируя его стволами автоматов и взглядом, люди в камуфляже. Увидев картину, уверенно запрыгнули внутрь, стараясь не наступать в кровь. Один из них, не сводя ствола с Кости, велел открывать дверь. Зашли уже обычные сотрудники полиции. Все были явно немало озадачены. С ними же были и охранники, знакомые Константину – они проводили инкассацию, а также в магазине стояло видеонаблюдение от их фирмы. Почему-то на Костю они смотрели совсем не так дружелюбно, как обычно. Саша, один из охранников, эмоционально рассказывал майору полиции:

– Еще раз говорю вам, своими глазами только что видел запись видеонаблюдения – пацан всех покрошил за секунды!

Майор молчал, нахмурив брови, и с каменным лицом оглядывал тела в лужах крови. Подъехала еще одна машина, послышался топот ног, мат, крики "Пресса" и в магазин вломились оператор и журналист "ТАУ". Как оказалось впоследствии, начальник охраны Саша, начав просмотр последних событий с камер магазина после поступления тревожного сигнала, тут же отправил запись последних десяти минут до сработки в местных телеканал. Как он позже скажет "Чтобы оградить моего друга Костю от возможного произвола следствия, подмены или скрытия улик коррумпированными полицейскими", а на самом деле – зная о вознаграждении в пять тысяч рублей за "горячие новости" от телеканала.

Журналист, воспользовавшись замешательством майора, пулеметной очередью начал задавать вопросы Саше:

– Вы же герой! В одиночку отразили вооруженное нападение! Вы чем-то занимаетесь? Ну, боевыми искусствами? Как вы решились на такое?

Майор, опомнившись, знаками показал своим сотрудникам выдворить журналюг.

– Тайна следствия! Комментарии будут после разбирательства!

К дома подъехала еще одна машина. Большой черный джип с номерами ААА. Двое строго одетых мужчин прошли в помещение, показали какую-то корочку майору, заставив его заметно сникнуть, подошли к Косте, и, придерживая его за плечи, вывели. Поездка прошла в молчании, люди в костюмах лишь дали Косте антисептическую повязку из набора автомобильной аптечки и велели прижать её к щеке. В какой-то момент ему накинули на голову черный тряпичный мешок, мол для его же собственной безопасности. Приехав, вывели не снимая мешка и повели куда-то, предупреждая о ступеньках. Внезапно мешок сняли, вокруг оказался большой, светлый зал с техническими стойками наподобие серверных, стоящими вдоль стен. Перед стеной из мониторов стояли люди, Костя узнал помещение магазина в изображениях. Охранных камер было три, они полностью фиксировали происходящее с разных ракурсов.

– Давайте в очередной посмотрим целиком, на нормальной скорости. Да-да, и он тоже пусть посмотрит, чтобы уяснил, что нет возможности списать это на какое-то стечение обстоятельств.

Костя с изумлением уставился на мониторы. Вот он сидит, периодически поворачиваясь и произнося какие-то слова в сторону. Камеры писали без звука, поэтому он не стеснялся разговоров с Тринити в такие моменты. Вот запрыгивают люди в масках, наводят пистолеты, вот он идёт в подсобку, на секунду замирает на пороге, его как будто передергивает, он поднимает свою руку, сжимает и разжимает кулак, грабители явно нервничают, что-то выкрикивают, махают пистолетами. Он заходит в подсобку, берет с полки ключи от сейфа.

– А вот здесь приблизьте. – сказал один из наблюдавших.

Изображение приблизилось, скорость уменьшилась. Костя увидел, как он на изображении "невзначай" роняет сабельный резак для ценников, проходя мимо полок, присаживается к сейфу, одной рукой вставляет ключ, а второй, находящейся вне поля зрения нападавших, быстро-быстро откручивает крепление увесистого стального ножа резака и встаёт. Нож остаётся в руке, заслонённой телом Кости от целящегося в него грабителя. Второй, как видно на других камерах, отошел в сторону, заинтересовавшись дорогущим перфоратором на витрине и явно намереваясь его забрать.

– Верните нормальный режим теперь.

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

– Обратите внимание на хват оружия при стрельбе. – прокомментировал кто-то из зрителей.

Костя вышел из подсобки, держа пистолет просто около груди согнутой в локте, и казалось – совсем расслабленной рукой, как держат дети водяные пистолетики. Выбежавший из торгового зала на шум второй грабитель не успел сделать и шага – первая пуля попала в щеку, вторая вспышка выстрела, слившаяся на видео с первой, так быстро он был повторён, выпустила черный фонтанчик из левого глаза падавшего бандита. На шум выстрелов в открытое окно сунулся еще один человек с пистолетом, изображение кости мгновенно дернулось в сторону и одновременно в стене, в том месте, где он бы доли секунды назад, появилась дырка а пистолет в Костиной руке произвёл еще одну двойную вспышку и два черных фонтанчика из глаз засунувшего в окно человека.

– Смотрите, в это время тот, с отрубленной рукой, выходит из подсобки и стоит уже за спиной нашего стрелка, который, кем бы он ни был, явно оглушен выстрелами в закрытом помещении и не слышит шагов сзади. – показал на камеру с другого ракурса мужчина в белом халате.

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

Даже не глядя на трупов, Костя мягко пробежал к окну, осторожно оглядел двор, следуя за взглядом пистолетом, так и удерживаемым около груди, после чего подошел к кассе, нажал тревожную кнопку, достал телефон, набрал трехзначный номер, сказал несколько слов, после чего, подумав, лег. Через некоторое время его передернуло, и он далее последовали события, о которых он уже помнил и сам.

– Надеюсь, ты понимаешь, что здесь такое не пройдет. – сказал один из его провожатых, которые тоже с интересом наблюдали за видео.

...

– Мы проанализировали видео, уворот от пули был произведен уже после выстрела.

...

– Что с общественным резонансом?

– В порядке. Журналистам сообщили, что герой не желает огласки, но был представлен к государственной награде за проявленное мужество. Охранника, слившего видео, уже допросили. Страницу Константина в контакте ведут от его лица.

...

Камера-одиночка. К металлическому креслу пристёгнут ремнями человек с почти черным от побоев лицом, на правой части лица – разошедшийся шов с торчащими обрывками ниток. Ногтей на руках нет.

– Костя, ты же понимаешь, что всё равно умрёшь. Расскажи нормально, какова именно процедура твоего "посессинга" и "форсинга", вместо той чуши, что ты уже неделю нас потчуешь, и ты умрёшь быстро.

– Это всё Двоевод! Он всё знает! Я мамой-покойницей клянусь, я по его гайдам всё делал!

– Что ж. Жаль. Видимо, система, которой он пользовался, подразумевает стирание памяти в критических ситуациях. Сергей, кончай его.

Жамк.

(с) Endar, 01.02.2013

[>] Re: ii/idec
std.club
vit01(mira, 1) — spline
2017-04-14 20:39:05


> Простейшую реализацию клиента можно написать даже на bash.

Таковая, между прочим, у нас есть. Ну, если busybox можно считать заменой bash

С помощью этой штуки можно полноценно общаться:

https://github.com/vit1-irk/ii-db-utils/blob/master/ii-bb.sh

[>] Re: ii/idec
std.club
vit01(mira, 1) — z-Hunter
2017-04-15 16:46:49


> В общем, писать из CutieFeed теперь можно, а вот новых сообщений он не принимает теперь. В общем, к сожалению, мне этот софт пока что представляется неюзабельным.

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

Может быть, скинешь скриншот настроек, чтобы тебе помочь? Там есть свои особенности в настройке.

> Что ещё можно попробовать на винде?

Цезий на винде работает, насколько помню.

[>] Re: ii/idec
std.club
vit01(mira, 1) — z-Hunter
2017-04-16 06:56:01


>>Может быть, скинешь скриншот настроек, чтобы тебе помочь? Там есть свои особенности в настройке.

> Да, вот: http://prntscr.com/ewx4uh

Выключи поддержку расширенного /u/e, твоя станция в него не умеет.

И после этого почисти кэш /x/c, этот пункт есть в главном меню

[>] Re: ii/idec
std.club
vit01(mira, 1) — vit01
2017-04-16 07:04:40


Мда, и я только сейчас заметил, что это старая версия CutieFeed
В новой версии есть кнопка "Настроить всё автоматически", которая сама расставляет нужные галочки

Я давно не делал сборки под винду, потому что у меня просто-напросто нет винды. Среди сетян виндузятников тоже не было до этого, поэтому на exe-шник для клиента забил.

Надо бы собрать свежую, что ли.

[>] Re: труба зовёт
pipe.2032
vit01(mira, 1) — 51t
2014-07-24 08:03:43


второй конец трубы работает

[>] см. болталка ii-fork, Re: Труба в параллельный мир
pipe.2032
vit01(mira, 1) — All
2014-07-24 17:29:18


сабж

Гейтовать или нет? Думаю, сие перспективно. Если ещё и новый python фетчер прикрутить, то это вообще бомба будет. Тем более, я давно хочу открыть филиал в "параллельном мире". С наступлением 2015 года архив сети туда однозначно скинуть надо. Как бэкап, хотя бы.

[>] Re: см. болталка ii-fork, Re: Труба в параллельный мир
pipe.2032
vit01(mira, 1) — 51t
2014-07-24 18:09:50


> лично я - категорически против как нарушения любых законов, так и потакания нарушению этих законов, а также поощрения безнаказанности и безответственности. а что там куда ходит - я не знаю.
Но законы же не нарушались. Также пользоваться скрытосетями у нас пока не запрещено. Если что-то не то запостят, буду делать премодерацию - гадость не пройдёт. Хотя пока что лучше не надо гейтовать.

[>] Re: см. болталка ii-fork, Re: Труба в параллельный мир
pipe.2032
vit01(mira, 1) — 51t
2014-07-24 18:38:19


Ну ладно, буду сам тогда свой личный архив копить: авось кому-нибудь и пригодится. А вообще - это я к тому сделал, что в перспективе для ii может быть совершенно любой канал передачи информации: хоть i2p, хоть tor, хоть веб, хоть офлайн. Я даже думал над концепцией ftp транспорта.

Это был просто эксперимент: как он показал, гейтование i2p сайтов - это довольно просто, поэтому в случае чего с этим проблем нет.

[>] Re: см. болталка ii-fork, Re: Труба в параллельный мир
pipe.2032
vit01(mira, 1) — 51t
2014-07-24 18:58:00


> ну, если вы это считаете актуальной проблемой - можете разбирать :)
А мы тут причём? Это лично мои собственные мысли, моя паранойя. =) Пока что не актуально, но в перспективе - вполне.

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

[>] Re: андроид
pipe.2032
vit01(mira, 1) — 51t
2014-07-25 08:02:28


> аууу, раскольники!
не раскольники

> есть кто дома
я не дома, но в ii :)

> (кстати, нехай все подписываются на эху :)
это моя локалка, за бон отвечает Андрей. Тем более, нашим не будет интересно.

> кто-нибудь помнит гитхаб анрдоид клиента - был ли он вообще, и если был, то где.
Гитхаба нет, есть битбакет, ссылка у меня на ирк38тк есть. только там старая версия

> и где, кстати, nt.exe?
не знаю, надо спросить

[>] Re: андроид
pipe.2032
vit01(mira, 1) — 51t
2014-07-25 10:01:56


> так смысл эхи - обмениваться между двумя сетями
Сообщил в im.100. Если захотят, загейтуют.

> блин, ну сепаратисты, какая разница
Другая сеть, лучше говоря.

> спроси, а то люди страдают :)
Спросил.

[>] Re: андроид
pipe.2032
vit01(mira, 1) — 51t
2014-07-25 17:41:04


> Сеть у нас одна, всеобщая и всемирная, для всего света.
Так понятно, что всё равно в одном болоте сидим =)

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

> Кстати, я за месяц и клиент разбавил кучей фич, и сервер, и фетчер, и другого дописал, в том числе подсчёт хэшей для эх для "экономии трафика".
python клиентами и сервером занимается gadfly, а не я. "Экономию трафика" я уже реализовал, как Андрей протестирует, так и запустим здесь. Насчёт андроид клиента без понятия, куда-то делся .exe

> добавили одну непонятную дублируемую фичу в протокол
Это какую же ещё? =)

> которой ни один клиент не пользуется?
Были б клиентописатели, да ушли куда-то. Но прикрутить обещали...

> От меня вообще бесконечно ускользает смысл отделения...
Мы особо никуда и не отделялись. Просто разошлись по своим станциям. Но смысл был в том, что здесь гораздо спокойнее, чем у тебя. То ты уходишь, то возвращаешься, то снова уходишь - нестабильно. То всяких guestов и саморегистрантов в сеть пускаешь, чтобы они гадили и матерились. Ненадёжный ты товарищ... Ну ещё парочку фич добавили, но это не есть смысл.

[>] Re: obsd.rss.14
pipe.2032
vit01(mira, 1) — 51t
2014-07-25 17:47:04


> что с сабжевой эхой? надо определиться, кто будет в неё грабить, и что.
Говорил же - похоже, что меня на rss твиттера забанили за большое количество запросов.

> а то без неё - как без рук :( за коммитами не последишь...
Эха по сути твоя, ты и решай. Либо грабить полные тексты, либо я возьму другой rss транспорт твиттера.

[>] Re: Тест)
pipe.2032
vit01(mira, 1) — szia
2014-07-26 16:28:42


test passed

[>] Re: гейтовать
pipe.2032
vit01(mira, 1) — krivedk0
2014-07-27 05:41:03


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

> в фидо не сидел
Я тоже в фидо не сидел =) Но принцип понял. Тут, в ii должно быть по другому немножко. Если хочешь полностью разобраться, что к чему, и как всё работает, тебе в http://iinet.sexy/techdoc

[>] 51t
pipe.2032
vit01(mira, 1) — All
2014-07-27 05:44:24


Как с бэкапами? Продолжать делать? У меня сегодня дождь, и на дачу не еду, следовательно, сервер может простоять включенным весь день.

[>] Re: гейтовать
pipe.2032
vit01(mira, 1) — krivedk0
2014-07-27 10:27:44


Наоборот. Без гейта ты не можешь скачивать себе для чтения сообщения. А отправка производится отдельно, другой программой.

[>] Re: гейтовать
pipe.2032
vit01(mira, 1) — krivedk0
2014-07-27 10:38:00


> Т.е если я скачиваю себе на машину сообщения с другой станции - это гейт. Тогда зачем обмениваться сообщениями станциям ?
Чтобы сообщения ходили между ними. То есть для того, чтобы у каждой станции была своя, собственная копия базы данных. К примеру, если станция 51t.ru с её сообщениями упадёт, как на сегодня намечалось, то сообщения всё равно не пропадут, так как они закачаны на irk38.tk. Скачивание каждой станцией всех сообщений себе с других станций - это основа надёжности. Так сообщения не затеряются.

Ну и к тому же, держать сообщения на одной станции удобнее, потому что тебе не придётся постоянно менять адрес сервера в конфигурационном файле =)

[>] Re: гейтовать
pipe.2032
vit01(mira, 1) — 51t
2014-07-27 12:53:07


> крутые, модные и гламурные клиенты имеют функции via и sendvia :)
Не очень-то и нужно. Именно поэтому я до сих пор сижу на 0.3 =)

[>] Re: гейтовать
pipe.2032
vit01(mira, 1) — krivedk0
2014-07-27 13:11:39


> только 1 вопрос : зачем гейтовать эху на ноде на которой она создана ?
Чтобы получать сообщения обратно со станций, которые загейтовали эху у нас.

К примеру, spline загейтовал у нас эху lit.14. Теперь он может читать эху у себя на сервере и писать туда у себя же. А что он нам написал, мы не увидим, потому что сообщения остались у него на ноде. Чтобы мы могли получать сообщения, которые он написал у себя на станции в данной эхе, нам надо гейтовать с него эху.

[>] Re: гейтовать
pipe.2032
vit01(mira, 1) — krivedk0
2014-07-27 13:21:49


Это для того, чтобы мы могли получить обратную связь на свои отправленные сообщения.

[>] Re: Тест)
pipe.2032
vit01(mira, 1) — szia
2014-07-27 16:52:22


Так труба, вроде бы, всё ещё работает

[>] Re: Унлы
pipe.2032
vit01(mira, 1) — intersect
2014-07-28 10:49:15


Привет! Добро пожаловать на ноду. С ii твоя жизнь наладится, и ты отучишься от вредных привычек =)

[>] Re: вынесенное обсуждение
pipe.2032
vit01(mira, 1) — 51t
2014-07-30 13:54:42


> Чтобы они писали в 2032, надо чтобы все писали в 2032 :)
Эта эха только у меня гейтуется. Остальные могут не видеть наши сообщения.

> По факту, это в вашей болталке 200 сообщений - это сообщения статуса, и ещё один раз 300 сообщений ни о чём было написано, которые непосвящённым читать просто смысла нет.
В нашей болталке 1774 сообщения, куда делись остальные 1200? =) А вообще, про твою болталку тоже можно сказать, что непосвящённым там почти нечего почитать.

> Кстати, какие устоялись правила?
По эхам. У нас свои эхи, их изменение/перенос решается вместе. То, что ты тут "предложил", не значит, что мы свои локалки сразу же побросаем и пойдём всё менять. Надо обсуждать не только со мной это, но и со всеми остальными.

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

> Лучше ii.14, чтобы не было соблазнов потом про "софт или ещё что-то". про ii - в ii, и нет смысла делать много эх. Суперэх, где народ торчит, должно быть вообще две - это болталка и ии-лка.
У тебя ии-лка и болталка - это одно и то же. Эха для софта - про софт, всё нормально. Сколько должно быть эх и "суперэх", решать не тебе, а поинтам. Сколько эх надо - столько и будет.

> Что значит "слишком много"? Полсети тут, полсети там. В чём смысл? Я месяц за этим понаблюдал, так и не понял, зачем.
Не полсети. У тебя огромное количество поинтов, могут вообще непонятные личности (типо гостей и мимо проходивших) появляться. Нас меньше гораздо. Мы тут кроме тебя и пары человек почти никого и не знаем. Мало людей - значит спокойнее.

> "Народа не надо" - это мнение всех членов сети?
Нет, не всех. Пары человек, наверное. Остальные пусть скажут, надо или не надо.

> Нужно пойнтов вести в pipe.2032 (поднять её высоко в списке и веб-интерфейсе, ссылаться на неё), а im - это пусть будет ваша локалка и эха для статусов. (У себя я im.1407 вообще закрою в пользу pipe.2032) И всё про серверы, клиенты, сервисы и прочее - делать в одной общей эхе. Тогда и у меня необходимость мониторить вашу станцию отпадёт.
Говорю же - с этим предложением к эхокоординатору.

[>] Re: вынесенное обсуждение
pipe.2032
vit01(mira, 1) — 51t
2014-07-30 15:59:38


> Надо прокидывать
Андрей прокинет вечером, будем вместе обсуждать. У меня всё загейтовано

> впрочем, в вашей локалке тоже, если честно, нечего почитать, и большинство интересного там я создаю. :)
Ты считаешь высказывания в духе "вы всё делаете не так, я лучше знаю, как надо" интересными?

> Речь идёт о гейтовании сетей, я со своей стороны, и вы со своей. Кто там представляет вашу сторону, и в каком количестве - решайте сами. Только чтобы это решение в излишней бюрократии не утонуло.
Скоро в эту эху придёт эхокоординатор и, может быть, поинты, и будем решать. Мне тоже определиться надо, что гейтовать, а что нет. И нам вместе с тобой надо решать, на какой уровень интегрироваться.

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

> А пойнты банально не могут принимать решения насчёт того, что не находится в зоне их компетенции. Они просто не могут представить, как это будет. И если спихнуть всю ответственность на пойнтов... пойнты не могут всё это придумывать, решать, планировать - иначе бы они уже давно собрались и создали бы такую сеть.
Ещё раньше ты утверждал, что поинты - это полноправные члены сети и сообщества, а тут вдруг заявляешь обратное. Если для них всё делается, то они тоже имеют право заявлять о своём мнении и что-то решать.

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

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

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

[>] Re: вынесенное обсуждение
pipe.2032
vit01(mira, 1) — 51t
2014-07-30 16:45:01


> У вас было и куча самостоятельности и переданные от меня пойнты, и многое другое - где это всё?
Какие ещё переданные поинты? Поинты сами приходили. Самостоятельность - есть.

> Кстати, за пойнтов ответственность несёт нод. Это закон и основа сети. Делегирование ответственности - один из первых декретов, который появился ещё до самой ii.
Поэтому я готов в случае спама быстренько снять тебя с фетча. И своих, кто делает подобные вещи. Но пока что наши поинты хорошо себя ведут, в отличие от ваших.

> Для них всё делается. И есть интересные для них вопросы. Есть вообще неинтересные. А есть те, которые могут быть вообще контрконструктивны (если вместо какого-то действия, которое в принципе устроит всех, инициируешь разбирательство, после которого одним ЧУТЬ БОЛЬШЕ нравится одно, другим - другое, и они начинают спорить по этому поводу, обижаться и так далее - в этом случае это вообще вредно, кроме того, это просто маскирует тот факт, что ты не можешь принять нормальное решение).
> А за создание сети ответсвенность несут те, кто её делают. Это тоже нормально, не вижу повода для паники.
Понятно, но если поинта интересуют такие вопросы - то пусть и он принимает участие. Если не интересует, то примем решение сами.

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

[>] Re: вынесенное обсуждение
pipe.2032
vit01(mira, 1) — guest
2014-07-30 16:45:50


> Я тебе mail написал. Глянь, а то баги кие-то
Ок. Но раз уж ты здесь сидишь - лучше зарегистрируйся, а не пиши от анонимного guestа. :)

Pages: 1 ... 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 ... 80