LINUX.ORG.RU

Сообщения ados

 

Пособие по утилизации

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

Анонимусы могут советовать в моих темах в техразделах - перенесу сюда хоть как-то соответствующее сей теме.

 

ados
()

cl-gobject-introspection и glib-таймауты

Коли я уж экспериментирую с glib-объектами, то решил заодно и родные таймауты попробовать. Значит у объекта GtkWindow к сигналу realize приделываю запуск таймаута с перерисовкой. Пока что код такой:

    (gir:connect window :realize
                 (lambda (window)
                   ;;(declare (ignore window)) 
                   (gir:invoke (*glib* "timeout_add")
                               0
                               200
                               (gir::make-closure
                                (lambda ()
                                  (gir:invoke (window
                                               :queue-draw))
                                  1 ; true
                                  ))
                               (cffi:null-pointer)
                               (cffi:null-pointer))))

Пока что проблема - GLib.timeout_add 3-м аргументом нужен почему-то int а не замыкание:

CAIROLAB> (gir:nget-desc *glib* "timeout_add")
#F<timeout_add(#V<priority: INTEGER> #V<interval: INTEGER>
               #V<function: INTEGER> #V<data: POINTER> #V<notify: INTEGER>): (#V<RETURN-VALUE: INTEGER>)>
CAIROLAB> 

У меня в GLib вместо timeout_add интроспектируется timeout_add_full:

    <function name="timeout_add"
              c:identifier="g_timeout_add"
              shadowed-by="timeout_add_full"
              introspectable="0">

У него же:

        <parameter name="function"
                   transfer-ownership="none"
                   scope="notified"
                   closure="3"
                   destroy="4">
          <doc xml:space="preserve">function to call</doc>
          <type name="SourceFunc" c:type="GSourceFunc"/>
        </parameter>

Если подобное решение возможно, то как оно по сравнению с созданием нечто своего на sb-thread?

Cast monk

 

ados
()

Нужна помощь с английским

Вот тут цепочка пар предложений на русском и мои переводы их на английский:

Здесь видна особенность в том что дебаг-корректировка сообщает стартовую позицию сигнала в исходном потоке.

A feature of that debug correction communicate signal's start position in input stream may be seen here.

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

More accurate correction of infomation about errors in signal's content should be implemented on higher level of signal system taking into account of transformation features content from input to signal's content.

В большинстве случаев это не обязательно.

In most cases it's not necessary.

Просьба поправить и сделать замечания

 

ados
()

Балансировка по ресурсу флеш памяти

Вот есть у меня записывающее устройство, в котором очевидно хранилище памяти на базе флеш-памяти. ФС - vfat. По мере использования данные в память и записываются и стираются, как обычно. Как известно у флеш-памяти ограничен ресурс - количество циклов записи. Какова вероятность отсутствия механизмов балансировки записываемых ячеек памяти по ресурсу? Зависит ли работа таких механизмов от файловой системы?

 

ados
()

Фиксированная нагрузка на процессор

Есть одна машинка, а на ней оффтопик и ещё одна проблема - она не справляется с отводом тепла. Машинка довольна стара и у неё довольно низкий предел перегрева - 85C. Но тем не менее, наблюдая за её работой с виндой и с настройкой биоса, я считаю что проблемы в драйверах винды. Цифры 2006 в дате версии драйверов, связанных с системой ACPI эту версию подкрепляют. Если что машинка служит всего около 4 лет. Если послушать пользователя машинки раньше таких проблем не было. Больше особо наблюдений выбить не удаётся - следить за температурой с помощью Open Hardware Monitor начали только недавно.

Поэтому думаю провести эксперимент - запустить с флешки systemrescuecd (флешка с этой системой у меня уже есть) и с помощью программы которая может с заданным уровнем загрузить процессор и sensors проследить как машинка справляется с отводом тепла из под linux. У меня вопрос по поводу первой программы - существует ли её реализация для таких экспериментов? Если нет, то как её реализовать?

Набор программных платформ на systemrescuecd довольно скуден и наверно я буду писать такую программу на python.

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

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

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

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

PS обе машинки - ноутбуки

 ,

ados
()

Несколько чтений одного и того же файла

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

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

CL-USER> (let ((file #P"file.txt"))
                (with-open-file (*standard-input* file)
                  (with-open-file (in file)
                    (read-char *standard-input*)
                    (read-char in)
                    nil)))
NIL
CL-USER> 

и вроде никаких проблем.

Я помню винду с её жуткими придирками по поводу занятости файлов работами в приложениях и есть вопрос: а насколько будут такие фокусы кросплатформенны?

 

ados
()

Эксперименты с обработкой текста

PERCHAR-VS-BUFFERING> (format t "~A-~A~%"
                              (lisp-implementation-type)
                              (lisp-implementation-version))
SBCL-1.3.20
NIL

Код здесь: https://pastebin.com/f6RtgQPE

Заранее извиняюсь за на коленке налабанный говнокод.

Для экспериментов нашёл свою старую курсовую в LaTeX и, редактируя и копипастя, раздул файл до 200M.

Вот результаты экспериментов у меня:

PERCHAR-VS-BUFFERING> (let ((*buffer-size* (* 4 (expt 2 10))))
                        (time
                         (with-open-file (*standard-input* #P"text3.tex")
                           (let ((lv (multiple-value-list (run-perchar))))
                             (setf *x* lv)
                             (first lv)))))
Evaluation took:
  4.092 seconds of real time
  4.092759 seconds of total run time (4.042829 user, 0.049930 system)
  100.02% CPU
  9,427,500,968 processor cycles
  7,733,248 bytes consed
  
114337080
PERCHAR-VS-BUFFERING> (defparameter *x2* *x*)
*X2*
PERCHAR-VS-BUFFERING> (let ((*buffer-size* (* 4 (expt 2 10))))
                        (time
                         (with-open-file (*standard-input* #P"text3.tex")
                           (let ((lv (multiple-value-list (run-with-buffering))))
                             (setf *x* lv)
                             (first lv)))))
Evaluation took:
  3.162 seconds of real time
  3.162505 seconds of total run time (3.117984 user, 0.044521 system)
  100.03% CPU
  7,284,480,890 processor cycles
  7,765,280 bytes consed
  
114337080
PERCHAR-VS-BUFFERING> (equal *x* *x2*)
T
PERCHAR-VS-BUFFERING> 

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

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

PS для некоторых проверок запускал wc -m. Хотя задача у него гораздо проще чем у реализаций на CL, но что примечательно - он проигрывал в скорости от самой медленной реализации на CL более чем на 800 мс.

PS2 Жирный и тупой троллинг от хомячков т.н. мейнстрима и других д**ов здесь не нужен

 ,

ados
()

Я в полном восторге от прогресса в проекте maxima

Арч, sbcl 1.3.20, maxima 5.40.0, slime+swank староват правда. Вот с каких пор я без всякого пердолинга с почти дефолтным .sbclrc от quicklisp могу просто запустить imaxima в эмаксе? Могу просто с таким немудрённым кодом:


(in-package :cl-user)

(load "/usr/share/sbcl-source/contrib/asdf/uiop.lisp")
(load "/usr/share/sbcl-source/contrib/asdf/asdf.lisp")


(require 'asdf)

(progn
  (flet ((%gpath (p)
           (push (merge-pathnames p
                                  *default-pathname-defaults*)
                 asdf:*central-registry*))) 
    (let ((*default-pathname-defaults*
            #P"/usr/share/sbcl-source/contrib/"))
      (map nil #'%gpath
           '(#P"sb-cltl2/"
             #P"sb-introspect/")))
    (let ((*default-pathname-defaults* (user-homedir-pathname)))
      (%gpath #P".emacs.d/site-lisp/slime/"))) 

  (asdf:oos 'asdf:load-op :swank))

;; я уверен тут много лишнего с недавних времён

(swank:create-server :dont-close nil
                     :port 23146)

... запустить с ней swank без беспорядочного засирания в ~/.cache? Подключиться и начать ломать её как мне вздумается? И спокойно без всякого геморроя загрузить что-нибудь через quicklisp, например gsll? Когда наступил этот праздник?

 , , , ,

ados
()

Epson Stylus Photo T59

Есть принтер маркированный как Epson Stylus Photo T59:

# lsusb|grep -i printer
Bus 001 Device 117: ID 04b8:0007 Seiko Epson Corp. Printer

Собрал соответствующие PPD с AUR и зарегал принтер:

lpadmin -p MYEPSON -E -v "usb://EPSON/Stylus%20Photo%20T50?serial=4C43544B3030383162" -m "epson-inkjet-printer-stylus-photo-t50-series/EPSON_T50_Series.ppd"

При попытке печатать получаю:

(/opt/epson-inkjet-printer-stylus-photo-t50-series/cups/lib/filter/epson_inkjet_printer_filter) crashed on signal 11.

Более менее полный лог здесь.

 

ados
()

рк и долботятлство

Есть одна группа людей с которой мне бы хотелось связаться. У группы принята связь по raidcall. Попробовать я не проч и уровень общения сильно конфиденциальным быть не планируется. Однако оказалось, что мало того что это проприетарщина так ещё у неё форма регистрации выполнена по незашифрованному HTTP. Это нормально у проприетарщиков настолько забивать на безопасность или я парюсь из-за какой-то мелочи?

 

ados
()

Будет ли матан-капча на лоре?

Некоторых индивидов можно не банить, а слегка изощрённого сабжа прописать, например.

 матан-капча,

ados
()

urxvt: eval:paste_clipboard не пашет

... вопреки тексту man urxvt-eval.

Вот кусок конфига:

URxvt.keysym.M-w: eval:selection_to_clipboard
URxvt.keysym.C-y: eval:paste_clipboard

M-w работает, C-y не работает. Причём если eval:paste_clipboard заменить на что-то рабочее, оно работать будет. clipboard не пуст.

 ,

ados
()

Космонавт и телеметрия

Доконал меня в одно время Arch своими сюрпризами при полных обновлениях - решил попробовать debian testing. Опыт получился весьма не ахти. Не исключено, что кривость рук немного подыграла здесь. Решил, что у меня машинка пока ещё новая и debian довольно консервативный дистрибутив для такого. На опыте также убедился в ложности утверждения что «прикладной софт в Debian testing стабильнее чем в арче».

Поэтому планирую пощупать софт из репозиториев космонавта. Устанавливать планирую как я привык - запуск systemrescuecd с флешки, развёртывание debootstrap с минимальной файловой системой и пакетным менеджером, подключением к репозиториям космонавта, далее: ядро + всякая системная мелочь, lightdm, awesome, emacs, блекджек и прочее.

Теперь вопрос в чём. Я давно так близко не контактировал с дистрибутивом космонавта, но слышал что он всё больше становится похож на винду. У меня вопрос как там с телеметрией? Какого прогресса достигли дистростроители космонавта в этом плане? Как от такого «прогресса» защищаться?

 ,

ados
()

Настолько eval в бетоне убогий?

In [9]: summing = True

In [10]: o = '>'

In [11]: sum1 = 0
    ...: if summing:
    ...:     scode = "sum1+=x; "
    ...: else:
    ...:     scode = ''
    ...: fcode = """
    ...: def checkf (x):
    ...:     {}
    ...:     return x {} s
    ...: 
    ...: """
    ...: 
    ...: eval(fcode.format(scode, o))
    ...: 
  File "<string>", line 2
    def checkf (x):
      ^
SyntaxError: invalid syntax


In [12]: checkf
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-12-5b8dbfd36076> in <module>()
----> 1 checkf

NameError: name 'checkf' is not defined

 

ados
()

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

Вот есть директория на удалённом сервере. Из ней там проделываю:

find . -type f -exec sha256sum {} + > ../SHA256SUMS 2>/dev/null

Потом качаю директорию с сервера по медленному шифрованному каналу и провожу проверку на стороне клиента sha256sum -c SHA256SUMS.

Каким может быть чекер если вместо sha256sum использовать du -b?

 

ados
()

Заголовок библиографии с красной строки

Делаю так:

\renewcommand{\bibname}{
\leftline{\large \textbf{СПИСОК ЛИТЕРАТУРЫ}}} 

Заголовок просто прижат к левому краю. А нужен сабж. Есть предложения?

 

ados
()

Ограничить видимость inner-класса кодом outer-класса

Вот кусок кода:


class ViewPort ():

    class ZoomMode (Enum):
        Normal = 0
        Stretched = 1
        Proportional = 2

    def get_zoom_mode (self): 
        return ZoomMode[self.zoom_mode_var.get()]

Хочу чтобы этот код работал, но он не работает. Вроде работает так:


class ViewPort ():

    class ZoomMode (Enum):
        Normal = 0
        Stretched = 1
        Proportional = 2

    def get_zoom_mode (self): 
        return self.ZoomMode[self.zoom_mode_var.get()]

Кроме вынести определение ZoomMode за определение ViewPort и сложить это всё в отдельном файле есть ещё варианты?

 

ados
()

Чтож оно жрёт как не в себя?

Оно только запущенное через дефолтный гейзер сжирает over 220M оперативы. Это же в 4 раза больше самой жирной реализации CL - sbcl, запущенной со slime-ом! Ладно там у sbcl можно понять - есть навороченный компилятор, но у racket что? Может этот жор настраиваемый?

Я конечно могу потерпеть такой жор рантайма, когда он запущен для разработки чего-либо, но нельзя-ли жор немного поубавить для конечного приложения?

ЗЫ из-за этого жора я так понимаю мелкие скрипты на racket как и с SBCL тоже в пролёте?

 

ados
()

Старое, похожее на Jagged Alliance

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

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

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

 вспомнить игру

ados
()

Расширяемая ячейка

Пишу gui на python+tkinter. Использую grid - первая строка 2 ползунка и ttk.Label с картинкой, на второй строке полностью один ttk.Label с текстом. Можно ли повысить приоритет расширения у ячейки с картинкой, чтобы при изменении размера окна все остальные виджеты не меняли свой размер и оставались прижатыми к краям окна, а все изменения размера окна «поглощал» виджет с картинкой?

 , , ,

ados
()

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