Кто-нибудь из здешних его использует? Как он себя показывает в плане надёжности, как в плане крутясь просто молча и отвечая на запросы при этом не падая так и в плане всяких неожиданно выскакивающих траблов при разработке? Сильных требований к производительности нет, да и вроде он и проседать сильно не должен по сравнению с аналогами, но что насчёт требовательности к ресурсам железа?
Пишу свой супер-пупер производительный парсер на CL под sbcl,
GNU/Linux. И давно вот заметил что кусками равного размера чтение из
файла идёт быстрее чем если читать поток по символу.
BUFFERING-TESTS> (let (r)
(sb-ext:gc :full t)
(time (dotimes (i 15)
(setf r
(count-chars *test-text*))))
r)
Evaluation took:
1.514 seconds of real time
1.512376 seconds of total run time (1.490228 user, 0.022148 system)
99.87% CPU
3,487,695,298 processor cycles
63,488 bytes consed
6210660
BUFFERING-TESTS> (let (r)
(sb-ext:gc :full t)
(time (dotimes (i 15)
(setf r
(count-chars-with-buffering *test-text*))))
r)
Evaluation took:
0.693 seconds of real time
0.692603 seconds of total run time (0.669793 user, 0.022810 system)
100.00% CPU
1,597,583,804 processor cycles
323,520 bytes consed
6210660
Разница есть если даже пытаться сравнять количество итераций:
(defun count-chars-with-buffering (file
&optional (buffer-size *default-buffer-size*))
(with-open-file (in file)
(loop :with buffer = (make-string buffer-size)
:for e = (read-sequence buffer in)
:while (plusp e)
:summing
(loop :repeat e
:for i :upfrom 0
:for c = (schar buffer i)
:when c
:counting 1))))
BUFFERING-TESTS> (let (r)
(sb-ext:gc :full t)
(time (dotimes (i 15)
(setf r
(count-chars-with-buffering *test-text*))))
r)
Evaluation took:
1.193 seconds of real time
1.191737 seconds of total run time (1.172685 user, 0.019052 system)
99.92% CPU
2,748,553,404 processor cycles
323,520 bytes consed
6210660
BUFFERING-TESTS>
В парсере это привело к созданию прослойки над потоками - объекта, содержащего ссылку на
поток, буфер и инфу откуда программе начинать чтение. Остаётся
вопрос - для чего так реализовано? Недостающая оптимизация sbcl? В
других реализациях других языков тоже такая разница? Понятно что
сварганить вышеописанный объект может любой программист в два счёта,
но почему бы не сделать это в рамках реализации чтобы не было
разницы посимвольно ты читаешь поток или кусками? Почему бы эту
абстракцию не взять на себя ядру, у которого и так в IO
буфер буфером погоняет?
Вот варят люди в лаборатории наночастицы и оформляют грант на исследование влияния технологии на эксплуатационные параметры. Мы снимаем эти частицы с помощью электронного растрового микроскопа и на глаз определяем размер, строим гистограмму и достаточно удачно фитуем Логнормальное распределение. Распределение, к примеру, получается с матожиданием 3.7 нм с дисперсией 0.6 нм, что мы и докладываем. И вот среди всей этой конкурсно-грантовой тусовки бывает подходят какие-то типа эксперты и спрашивают: а какая погрешность в оценке размера наночастиц? Вот что им ответить?
Вот обыкновенная программа просто сваливает список файлов в файл и чтобы sh-утиль спокойна файлы по списку подхватывал нужно проделывать кучку экранирования:
На сервере из под огороженного пользователя запускаем sshd с зачуханным конфигом, сертификатом и портом. Клиент на устройстве просто подключается по ssh и сразу же запускает конкретную программу на сервере. То что эта программа на сервере тоже является на самом деле клиентом, но тут отношения сервер-клиент разруливаются в рамках одной машины на пингвине, ну и да ладно с этим. Вот что может быть проще и безопаснее?
ЗЫ в перспективе ssh соединение можно ещё потом в tor-туннель воткнуть, но пока и без этого можно жить.
Установку осилил, потихоньку работает, у меня как замена стокого андроида вполне устраивает. cast Valman_old. Как читалка, календарик, портативная карта города, музыкальный плеер вполне годен. Симки нет - для этого у меня более узкоспециализированный кнопочник.
Я не любитель сильно кастомизировать интерфейс без необходимости, поэтому прошу извинить за практически дефолтный LineageOS.
Есть у меня аппарат Samsung galaxy a3 (2017). Перед тем как начать как-то под себя перенастраивать андроид мне бы хотелось как аппарат работает на альтернативах. Хотелось бы узнать у знающих людей о рисках потерь различных функций при сносе.
Например я слышал что подобный аппарат специально был произведён для использования на предприятиях и снабжён некой samsung knox. Вроде как это подразумевает некоторые железные предохранители-триггеры, которые выгорают при сносе прошивки. Добрые люди подарившие мне подобный аппарат в подобные детали и не вникали. Да зачем нужен мне такой софт если я ему не доверяю как проприетарщине - я всему андроиду не доверяю, а этот софт стоит поперёк того чтобы заменить этот андроид. Однако я опасаюсь что потерь в функциях может быть больше.
Вот есть ли такие библиотеки генераторов парсеров где возможно такое. Вот идёт парсер, которому скормили правило, по строке. Если он находит на строке подстроку которая отвечает правилу полностью то тут поведение ничем не отличается от уже реализованных генераторов парсеров типа всевозможных regexp-либ или esrap. Интересно если строка закончилась и тогда парсер должен вернуть состояние. Это состояние можно скормить парсеру вместо правила (состояние скорее всего будет содержать правило иначе как-то мало смысла кормить остальное состояние с каким-то другим правилом) и отправить парсить какую-то новую строку. Причём в таком случае если парсер не упрётся опять с подобным результатом в конец строки, то результат работы парсера был бы такой же как если бы парсера изначально бы отправили по одной строке, которая была бы соединением первой и новой строк.
Вот у вас открыт редактор кода или просмотрщик и вы читаете код подобно книге страницу за страницей. Вот сколько обычно строк кода в одной странице у вас и вам при этом комфортно читать код? Ещё интересно при этом на каком языке вы читаете код обычно?
Вот мучает меня временами один вопрос, но в теме у меня довольно
поверхностные познания.
Вот есть в системе процесс с подозрительной активностью. Можно ли
создать такое окружение для процесса, с помощью которого можно:
Снизить риски нежелательных побочных эффектов на систему и
ценные данные от активности такого процесса
Как можно лучше изучить активность подозрительного процесса.
Ясно что есть почти фантастическая возможность, что программа это
супер крутой ИИ, который вынюхает мельчайшую уязвимость и поимеет
через неё всю систему. Поэтому вопрос не в гарантиях, а минимизации
вероятности неуспеха.
Возможно создание такого окружение наложит определённые
ограничения на активность остальной системы. Поэтому интересует
также вопрос градации удобство-безопасность.
Также интересен вариант системы с оффтопиком и андроидом, хотя я
уверен, что с прямыми руками в таких случае вероятность неуспеха как не крути выше.
Но espeak после такой сессии не подыхает и может дальше принимать текст на озвучку и озвучивать его. Как его убить с не вдаваясь в специфичные функции sbcl?
В последнее время заинтересовался способностью языковыми конструкциями описывать обстановку окружающего материального мира. Пока что Пришвина почитываю. Может кто посоветует что-нибудь аналогичное или получше? Интересует русскоязычная и англоязычная литература.
Быть свободной - только с этим сабж не является оффтопом
В основном режиме работы программа должна просто задавать вопросы один за другим, принимая стандартные ответы DONE, FAIL, CNCL, etc. или какую нибудь другую строку (число, время). Ответы записывать в базу вместе с временем ответа.
Набор вопросов - чеклист должен быть хорошо поддаваться настройке.
База ответов может быть экспортирована в файл хорошо поддающийся парсингу (XML, JSON, etc.)
Пока пользуюсь orgzly, но хорошо видно что программа не приспособлена для такого.