LINUX.ORG.RU

Сообщения ados

 
Форум — Talks

Когда вы можете доверять человеку?

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

 

ados
()
Форум — Development

Mongrel2

http://mongrel2.org/

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

 mongrel2

ados
()
Форум — General

Производительность чтения файла

Пишу свой супер-пупер производительный парсер на CL под sbcl, GNU/Linux. И давно вот заметил что кусками равного размера чтение из файла идёт быстрее чем если читать поток по символу.


(in-package cl-user)

(defpackage buffering-tests
  (:use :cl))

(in-package buffering-tests)

(defparameter *test-text*
  (merge-pathnames #P"Desktop/buffering-test/text.txt"
                   (user-homedir-pathname)))

(defun count-chars (file)
  (with-open-file (in file)
    (loop :for c = (read-char in nil nil)
          :while c
            :counting 1)))

(defparameter *default-buffer-size*
  (floor (* 4 (expt 2 10))))

(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 e)))

  
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 буфер буфером погоняет?

 , , ,

ados
()
Форум — General

Мелочи в подписях под полями

Вот код:


\documentclass[a4paper]{article}

\usepackage[T2A,TS1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[russian]{babel}
\usepackage[normalem]{ulem}

\usepackage [top=20mm,
             bottom=20mm,
             footskip=12mm,
             left=20mm,
             right=10mm]{geometry}

\renewcommand{\ULdepth}{1.8pt}

\makeatletter
\newcommand{\dynscriptsize}{\check@mathfonts\fontsize{\sf@size}{\z@}\selectfont}
\makeatother
\newcommand\textunderset[2]{%
  \leavevmode
  \vtop{\offinterlineskip
    \halign{%
      \hfil##\hfil\cr % center
      \strut #2\cr
      \noalign{\kern-.1ex}%
      \dynscriptsize
      \strut%
      #1
      \cr
    }%
  }%
}


\begin{document}

Обучающийся \textunderset{подпись}
      {\uline{\makebox[90mm]{}}}/\uline{\hfill%
        \textunderset{расшифровка подписи}%
      {\hfill Петров Д.Я. \hfill}\hfill}/

\end{document}

В подстрочном тексте «расшифровка подписи» опущена немного ниже чем «подпись». Как сделать чтобы они автоматически были на одной строке?

И ещё вопрос как делать такую подпись в две строчки?

 ,

ados
()
Форум — Science & Engineering

Погрешность определения размера наночастиц

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

 , матстатистика,

ados
()
Форум — General

Устал копипастить sed-скрипт

Вот обыкновенная программа просто сваливает список файлов в файл и чтобы sh-утиль спокойна файлы по списку подхватывал нужно проделывать кучку экранирования:

cat ../SIZES |../../utils/filter_size.py \<5M|sed -e '/^$/d'  -e 's/\\/\\\\/g' -e 's/"/\\"/g' -e "s/'/\\\\'/g" |xargs -I {} cp --parents '{}' ../r/

Чем бы вот эту команду с sed-ом заменить чем-нибудь по-лаконичнее?

 ,

ados
()
Форум — Development

Безопасный удалённый CLI-интерфейс

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

ЗЫ в перспективе ssh соединение можно ещё потом в tor-туннель воткнуть, но пока и без этого можно жить.

 , ,

ados
()
Галерея — Скриншоты

LineageOS 15.1, Samsung Galaxy A3

Вот после этого:

Сносить или не сносить...

Установку осилил, потихоньку работает, у меня как замена стокого андроида вполне устраивает. cast Valman_old. Как читалка, календарик, портативная карта города, музыкальный плеер вполне годен. Симки нет - для этого у меня более узкоспециализированный кнопочник.

Я не любитель сильно кастомизировать интерфейс без необходимости, поэтому прошу извинить за практически дефолтный LineageOS.

Gapps'ы не нужны поэтому без них.

 , ,

ados
()
Форум — Linux-org-ru

Операционная система Linux в России

Если мои скрины не подтверждаете...

... то может хотя-бы в Форум/Mobile переместите?

LineageOS 15.1, Samsung Galaxy A3

UPD

Со скриншотом тему можно закрыть. Но как быть с «операционной системой Linux» отсюда: www.linux.org.ru/about ?

Что это за такая система?

 

ados
()
Форум — Mobile

Сносить или не сносить...

Есть у меня аппарат Samsung galaxy a3 (2017). Перед тем как начать как-то под себя перенастраивать андроид мне бы хотелось как аппарат работает на альтернативах. Хотелось бы узнать у знающих людей о рисках потерь различных функций при сносе.

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

 , ,

ados
()
Форум — Development

Парсинг с продолжениями

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

 

ados
()
Форум — Linux-org-ru

Многомерный отчёт об опросе

Вот например здесь: Какой ОС вы пользуетесь на основном ПК?

Чтобы можно было видеть по сколько из выбравших, например, пункт M$ выбрало также каждый из других пунктов.

 ,

ados
()
Форум — Development

Макрос раскрывает код макроса

Есть макрос раскрывающийся в окружение с локальным макросом, определяемым macrolet-ом. Последний раскрывает код вроде:

`(,a ,b)

Только ,a должен подставить первый макрос, а ,b - локальный.

Код вроде такого:

(let ((x ...))
  `(macrolet ((m (y)
                `(,x ,y)))
     ...))

Такое можно описать с backquote синтаксисом?

 

ados
()
Форум — Development

Удобное количество строк для чтения кода

Вот у вас открыт редактор кода или просмотрщик и вы читаете код подобно книге страницу за страницей. Вот сколько обычно строк кода в одной странице у вас и вам при этом комфортно читать код? Ещё интересно при этом на каком языке вы читаете код обычно?

 

ados
()
Форум — Security

Unknown public key

Что за ключ такой unknown public key D1483FA6C3C07136? Ему можно доверять?

 ,

ados
()
Форум — Security

Капсула для процесса

Вот мучает меня временами один вопрос, но в теме у меня довольно поверхностные познания.

Вот есть в системе процесс с подозрительной активностью. Можно ли создать такое окружение для процесса, с помощью которого можно:

  1. Снизить риски нежелательных побочных эффектов на систему и ценные данные от активности такого процесса

  2. Как можно лучше изучить активность подозрительного процесса.

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

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

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

ados
()
Форум — Development

uiop/launch-process и espeak

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

(defmacro with-espeak-process ((&rest args)
                               &body code)
  `(let ((*espeak-process*
           (uiop:launch-program '("espeak" ,@args)
                                :input :stream
                                :output :stream)))
     (unwind-protect
          (progn ,@code)
       (uiop:close-streams *esrap-process*)
       (uiop:terminate-process *esrap-process*))))

Но espeak после такой сессии не подыхает и может дальше принимать текст на озвучку и озвучивать его. Как его убить с не вдаваясь в специфичные функции sbcl?

SBCL

 

ados
()
Форум — Talks

С днём космонавтики!

Сабж.

 

ados
()
Форум — Talks

Посоветуйте литературу

В последнее время заинтересовался способностью языковыми конструкциями описывать обстановку окружающего материального мира. Пока что Пришвина почитываю. Может кто посоветует что-нибудь аналогичное или получше? Интересует русскоязычная и англоязычная литература.

Заранее благодарю

 

ados
()
Форум — Development

Звуковая подсистема для игрового движка

В принципе маленькая игра готова с sbcl и интерфейсом через gobject introspection + gtk + cairo, но хотелось бы добавить ещё сабж.

 

ados
()

RSS подписка на новые темы