Вот и дожил я: нет связи с госуслугами, с вконтакте, с двачем и банками, с гитхабом и с сорсфоржем, с хабром, со слэшдотом и с реддитом, с опеннетом, яндекс не работает… про гугл и duckduckgo всякие вообще молчу.
Почему-то работает только LOR только хардкор и википедия. Вот смотрю на это всё великолепие и думаю: а зачем ещё интернет нужен?
Хорошая поддержка Lineage OS и подобными системами
Адекватная цена. Не дороже 3-х средненьких аппаратов.
Компактность. Наверно следует оставить надежду, вписывая этот пункт. До сих пор мутит от перехода от старого аппарата с 136x66 на более
современные «лопатофоны». Но мало ли, может, нанотехнологии всё же победят?
Хорошо если можно было расширять память картой памяти. Но походу с этим придётся распрощаться.
Вот захотелось мне тут, чтобы мой CL-код работал не только на GNU,
но ещё и на windows. Очень желательна как можно близкая
совместимость, поэтому начал с любимого SBCL. И с этой самой SBCL
хуже всего пошло: попробовал разные версии, а результат один:
тупо завершение с кодом 5 у 64-битных бинарников, код 57 у
32-битных (винда 64-битная). Больше никаких данных. Не важно:
командуешь ему swank поднять или просто запуститься. И, честно, это
немного удивило - ведь уже прошли времена когда строка windows
пустовала в таблице:
Удивила и Clozure CL 1.13, хоть и не припомнить когда CCL была замечена в
неприязни к оффтопику. Оказалась более разговорчивой:
(progn (load "c:/Users/bc64/AppData/Roaming/.emacs.d/site-lisp/slime-2.31/swank-loader.lisp" :verbose t) (funcall (read-from-string "swank-loader:init") :from-emacs t) (funcall (read-from-string "swank:start-server") "c:/Users/bc64/AppData/Local/Temp/slime.1068"))
Exception on foreign stack
Exception occurred while executing foreign code
? for help
[3964] Clozure CL kernel debugger: [3964] Clozure CL kernel debugger: [3964] Clozure CL kernel debugger: %rax = 0x000000000038fda0 %r8 = 0x0000000000000080
%rcx = 0xffffffffffffffff %r9 = 0x000000000038fda0
%rdx = 0x000000000038fcf0 %r10 = 0x000000000038fc60
%rbx = 0x00000000006a88b0 %r11 = 0x00000001300b0000
%rsp = 0x000000000038fc68 %r12 = 0x000000210000bb5d
%rbp = 0x000000000038fcc0 %r13 = 0x000000010009f11f
%rsi = 0x000000000001300b %r14 = 0x0000000000000058
%rdi = 0x000000014002845e %r15 = 0x0000000000000000
%rip = 0x00000001300b0000 %rflags = 0x00010202
[3964] Clozure CL kernel debugger: [3964] Clozure CL kernel debugger:
register number :
register number :
register number :
register number :
register number :
register number :
register number :
register number :
register number :
register number :
register number :
register number :
value for GPR 6 :
value for GPR 6 :
Уже чуть успокоило когда без задоринок запустился игрушечный
clisp 2.49 и выполнил игрушечный-же код. А потом, чуть разобравшись
в настройках slime, удалось запустить и 32-битную ccl со swank-ом. У
64-битной ccl результат остаётся, как описано выше.
Как традиционно заведено на винде все запускаемые бинарники, просто
скачаны из интернета.
Остаётся вопрос к опытным лисперам: есть ли жизнь с SBCL на винде?
Есть один python-проект для общения с сервисом в сети. Интерфейс
выполнен в виде набора скриптов, причём одни скрипты используют разный
набор модулей в проекте, т.е. одному скрипту нужен модуль для работы с
БД и с сетью, другому просто покопаться в БД. Для настройки всего
этого использую один файл настроек. При этом пытаюсь сделать чтобы все
эти модули настраивались одной и той же процедурой:
#!/usr/bin/env python3
from pprint import pprint
from rpc_module.fetch import fetch_some
import config
config.configure(config_file = "init.ini")
pprint(fetch_some())
Может конечно config в корне загрузить config каждого модуля, каждый
из которых настроит переменные в коде каждого модуля, но таким образом
загрузится почти весь код всех модулей, что далеко не каждому скрипту
нужно. Пока решил, что init.py каждого модуля добавляет процедуру
настройки в список из корневого config.py, а единая процедура просто
запускает все процедуры в этом списке:
## __init__.py
from ..config import __configurators
from .config import configure
__configurators.append(configure)
## config.py
from collections import deque
from configparser import ConfigParser
__configurators = deque()
def read (f = "config.ini"):
c = ConfigParser()
c.read(f)
return c
def configure (config_file = None):
if config_file is None:
config = read()
else:
config = read(config_file)
for configurator in __configurators:
configurator(config)
Стало у меня больше свободного времени. В такие моменты я как обычно возвращаюсь к идее парсера одного языка разметки. Язык почти как xml, практически можно сказать что спецсимволы ‘<’, ‘>’, ‘/’ заменены на другие. Тексты на языке очень похожи на тексты исходников для вёрски в LaTeX.
Задуманный парсер ограниченее LaTeX - вся разметка языка на конструкциях вида \markA, \markB{argument}, \markC[optional argument]{arg}. Всё остальное употребляется как обычный текст.
Вот нужен совет как определить чтение этих конструкций, хотя бы в виде regexp’а вроде «\[a-zA-Z]+». Как и TeX парсер должен быть ориентирован на человеческие тексты, а значит знаки препинания из тела конструкции вылетают. Также парсер должен работать с исходниками для TeX/LaTeX, который расчитан на математические выражения - плюсы, минусы + спецсимволы для TeX ‘_’, ‘^’, ‘$’ и прочее под ограничением. Забавно, но эксперименты с pdflatex наталкивают на ещё большую ограниченость парсинга по сравнению с TeX - его \def вполне может включать в тело конструкций практически все выше перечисленное. Ладно мне такой парсер гораздо труднее реализовать, главное - нужно ли это? Получается парсер не рассчитан на подобные TeX-хаки.
Как посоветуйте определять конструкции? Хочется ведь прилично именовать разметку без всяких \MyNewSuperPuperGiperMegaTag.
PS. По сути проблема - как делать многословные идентификаторы в языке типа «go-forward» или «go_forward» когда практически все символы с клавиатуры под ограничением, кроме алфавита и символа «@» (привет от команды \makeatletter)? К проблеме можно подойти философски - имеется диалектическое противоречие 2-х процессов: с одной стороны у нас обработка текстов материальными машинами с ПО подобным TeX и ограничениями как у TeX, с другой - процесс работы с текстами используя материальную клавиатуру со всеми известным ограничением на набор символов (почему бы не дать языку возможность быть массово используемым?). И, вроде бы, \def TeX-а позволяет обходить принятый в сообществе LaTeX стиль разметки - как показывают эксперименты с pdflatex, подобные хаки работают весьма нестабильно. Да и вопрос - зачем они нужны при использовании самого LaTeX. Из этого всего выводится очевидное - использовать смену регистра вроде \goForward.
Вот есть задача создать обучающий материал - в едином файле проигрывается презентация с речью лектора в аудиодорожке. На ум приходит преобразование листов презентации в растровые изображения и скармливание их ffmpeg с речью в аудиофайле. Видео получается довольно простое - презентации я делаю обычно в latex с beamer’ом, никакой анимации да и зачем она с моими задачами. Минус незначительный - после pdflatex получаем векторный pdf, а после ffmpeg у нас растровые изображения. Зато причаститься к знанию можно с любого устройства и интегрировать в материал какое-нибудь видео по теме.
В России до конца года будет запущен пилотный проект защищенного интернета, который будет доступен только гражданам страны по персональному идентификатору. В этой cети будут доступны только безопасные, проверенные сервисы, владельцы которых исполняют все требования действующего законодательства. Эксперты отмечают, что вся необходимая для защиты граждан от опасного контента инфраструктура в РФ уже построена.
Пользователю нужно будет зарегистрироваться по паспорту, получить личный идентификатор – и далее из любой точки мира можно будет войти в «защищенную часть интернета». Благодаря этому спецслужбы смогут легко «найти того, кто владеет этим аккаунтом». При этом депутат отметил, что незащищенный интернет тоже сохранится, но там ответственность за свои персональные данные и иные аспекты безопасности будут нести сами пользователи.
«Главной целью является обеспечение безопасности граждан. Обеспечение сохранности их персональных данных, защита от спам-рассылок, от мошенничества, от сайтов, которые называются фишинговыми, т. е. воруют денежные средства путем подмены получателя или дублирования страниц популярных сайтов»
Здравствуйте, мои дорогие любители продукции от Apple, роботизации,
прочих современных технологий и эффективных инвестиций.
Apple и Foxcoon смогли пролоббировать в Индии новый закон, разрешающий
женщинам брать 12-часовые и ночные смены. Об этом пишет Gadget
Tendency.
Закон будет действовать в штате Карнатака, где Foxconn собирается
построить завод по производству iPhone. Согласно документу,
максимальная продолжительность рабочей недели в штате будет ограничена
48 часами. При этом допустимое количество сверхурочных часов, которые
можно взять в течение трёх месяцев, вырастет с 75-ти до 145-ти.
Как и прежде корпорация Apple на деле демонстрирует уровень рыночного флагмана,
который служит примером всему человечеству.
Сразу непонятно, что проект делает. Зато добавляется куча затуманивающих «либо», «а также» и прочие «в случаях, предусмотренных настоящим Кодексом». В пояснительной записке, понятно, «всё для фронта, всё для победы», но для каких-то абстрактных антитеррористических операций - вполне и без замеса на Украине может работать. Да и всё равно эта записка никакой законной силы иметь не будет.
Но вот одни знакомые мне подсказывают, если со всеми этими изменениями ТК собрать и вкурить, то получается что по левой пятке правительства на любом предприятии (на оборонку чёткого указания нет) рабочий легко может быть обязан работать подряд вторую смену, без обязательного минимального временного периода после предупреждения о смене графика, отменив свой отпуск, без компенсаций за отменённый отпуск, без каких-то доплат за переработку, без всякого согласия самого рабочего и всё вот это совершенно законно.
Как-то давно в интернете писалось, что если матёрому линуксоиду стало скучно на своей хорошо работающей системе, то лучше пойти на базар и взять железку о которой в интернете почти ничего неизвестно - с ней должно стать веселее. Так вот выкопал аппарат, правда, не совсем на базаре, но не суть - Digma EVE 100. Вроде запускается, но экран чёрный и ничего не происходит. Сказали, что там должен запуститься оффтопик, но даже systemrescuecd на моей usb-флешке не помогает. Гугл подсказал с boot menu по клавише F7 - не помогло. Вскрыл корпус, чтобы выдернуть нечто похожее на жёсткий диск с виндой и не нашёл что выдёргивать, оффтоп походу встроен в материнку. Удивило, что вся материнка занимает 1/4 площади всего лаптопа.
Собираюсь в лес уходить и чтобы читать труды Маркса, Энгельса и прочих в электронном видевбрасывать на ЛОРе оставаться на связи решил раздобыть сабж. Ориентируюсь на заряд 20-30 Ач. Есть ли здесь с опытом использования подобных устройств? Каких производителей можете посоветовать?
Вопрос - если у меня для такой банки блок питания с током выхода 2.1 А и у банки на входе с тем же напряжением заявлено 3 А то при заряде банки блок питание сгорит?
Понятно что GNU рождён в центре мирового капитализма, а сканинавия хоть и славится своими социалистическими достижениями, скандинавские страны от капитализма, как в СССР, так и не ушли (стоило человеку заикнуться о масштабной отмене частной собственности как в спокойной и культурной Швеции откуда-то повылазили террористы). Понятно что с исчезновением страха перед импортом революции с востока этот социализм потихоньку разваливается.
Но всё же уж очень сильно от GPL веет отказом от частной собственности. Может из-за такого социалистического зерна Linux так туго осваивается на рынке (или осваивается рынком).
Что-то мне приснилось на днях и подумал я запилить на коленке
библиотеку для сабжа.
Основа системы - объект типа модель, который включает в себя ячейки с
данными. Между ячейками есть связи, которые описываются наподобии:
(A, B, C) -> (X, Y)
и далее описывается код расчёта данных для ячеек в X и Y в зависимости
от данных в ячейках A, B, С. При изменении данных отдельных ячеек в
модели на основании вышеописаннх связей какие-то ячейки надо
пересчитать, а какие-то нет (отображения функциональны). Называть этот
процесс будем обновлением модели. Задача - определить данные каких
именно ячеек нужно пересчитать и какой оптимальной последовательностью
вычислений это сделать. Подобная задача решается такими программами
как система сборки make и менеджерами пакетов. Здесь особенность в
том, что основа ячейки - переменные в памяти программы.
Возникли следующие идеи:
Во-первых это понятие представления. Представление состоит из отдельных
видов. Это чем-то похоже на модель с ячейками, но виды - это не
области памяти, а порты в которые данные выводятся и уже не
возвращаются (наподобие стандартных потоков, сокетов). Представление
привязано к определённому типу моделей, а данные для видов зависят от
данных в ячейках модели наподобие как зависят данные в ячейках между
собой. Может в отдельном представлении могут быть переменные, но они
уже не зависят от данных модели.
У одного объекта типа модели может быть несколько представлений причём
как разных типов так и схожих. Поэтому адрес на объект модели должен
быть содержаться в составе объекта представления - без отношения
наследования из ООП не смотря на привязанность типа представления
к типу модели.
Во-вторых это расслоение вычисления. Понятно что отношения ячеек
формируют граф и чтобы построить алгоритм обновления модели полезно бы
разбить граф на уровни, где вычисление данных в ячейках одного уровня
зависит от данных в ячейках уровнем ниже. Соответственно между уровней
ячеек - уровни вычислений. При достаточной функциональности вычисления
одного уровня могут выполняться в нескольких потоках
исполнения. Циклические зависимости у ячеек запрещены.
Может ещё есть алгоритмы совершеннее вышеописанных идей? Какие
алгоритмы полезно изучить для реализации такого?
int dispatch ( maxcant,
(* callback));
int maxcant ;
void (* callback) (Pkthdr, string) ;
callback specifies a routine to be called with two arguments: a Pkthdr instance describing the data passed and the data itself.
На деле функции никакие аргументы не передаются:
In [238]: import pcapy
In [239]: reader = pcapy.open_offline(my_pcap_file)
In [240]: reader.dispatch(-1, lambda hdr, data: print(hdr.caplen()))
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
TypeError: <lambda>() missing 2 required positional arguments: 'hdr' and 'data'
The above exception was the direct cause of the following exception:
SystemError Traceback (most recent call last)
<ipython-input-240-c10b6d091522> in <module>
----> 1 reader.dispatch(-1, lambda hdr, data: print(hdr.caplen()))
SystemError: <built-in method dispatch of Reader object at 0x7fad32317a90> returned a result with an exception set
т.к. в CL у которого plokami:capture поверх того же pcap_dispatch всё работает на ура:
CL-USER> (block b
(plokami:with-pcap-reader (reader *my-pcap-file*)
(plokami:set-filter reader "udp")
(plokami:capture reader -1
(lambda (sec usec caplen len buffer)
(declare (ignore sec usec buffer))
(when (/= caplen len)
(return-from b nil))
(format t "Packet length: ~A bytes, on the wire: ~A bytes~%"
caplen len))))
t)
Packet length: 76 bytes, on the wire: 76 bytes
Packet length: 76 bytes, on the wire: 76 bytes
Packet length: 92 bytes, on the wire: 92 bytes
Packet length: 135 bytes, on the wire: 135 bytes
Packet length: 76 bytes, on the wire: 76 bytes
Packet length: 92 bytes, on the wire: 92 bytes
Packet length: 74 bytes, on the wire: 74 bytes
Packet length: 74 bytes, on the wire: 74 bytes
Packet length: 173 bytes, on the wire: 173 bytes
Packet length: 197 bytes, on the wire: 197 bytes
Packet length: 84 bytes, on the wire: 84 bytes
Packet length: 84 bytes, on the wire: 84 bytes
Packet length: 144 bytes, on the wire: 144 bytes
Packet length: 156 bytes, on the wire: 156 bytes
Packet length: 76 bytes, on the wire: 76 bytes
Packet length: 92 bytes, on the wire: 92 bytes
Packet length: 79 bytes, on the wire: 79 bytes
Packet length: 79 bytes, on the wire: 79 bytes
Packet length: 95 bytes, on the wire: 95 bytes
Packet length: 107 bytes, on the wire: 107 bytes
Packet length: 72 bytes, on the wire: 72 bytes
Packet length: 72 bytes, on the wire: 72 bytes
Packet length: 152 bytes, on the wire: 152 bytes
Packet length: 100 bytes, on the wire: 100 bytes
Packet length: 76 bytes, on the wire: 76 bytes
Packet length: 92 bytes, on the wire: 92 bytes
T
Недавно открыл для себя утилиту lsof, с помощью которой можно проследить чтобы какой-нибудь google-chrome не лазил в какие не следует файлы. Есть ли что-то подобное для подглядывающих в буфер обмена или делающих скриншоты в иксах?
Как-то досталась мне акустическая гитара и я понемногу учусь играть. Всякая элементарщина на 2-3 струнах вроде получается, но я мечтаю научиться воспроизводить на слух.
Для этого набросал простенький скрипт, проигрывающий случайные ноты, и которые нужно отгадать. За образец нот скрипт, а точнее вызываемый им mpv, проигрывает аудиозаписи вышеупомянутой гитары.
Но вот теперь мне бы хотелось приобщаться к стандартам и, желательно, чтобы образцовые ноты проигрывались разными инструментами. Проблема в том что вне интернета мне посоветоваться не с кем - в моём окружении практически нет музыкантов. И не факт что гитара как надо настроена - спектры, полученные с программного спектрометра и микрофона android-смартфона, с несколькими пиками на 3-4 октавы определённость вносят плохо. В интернете пока нашёл это https://www.youtube.com/watch?v=Nr2Zh2um5SM - спектры ещё хуже, не говоря о комментариях к видео.
Где лучше всего достать образцовые ноты? И может ли GNU/Linux как-то их синтезировать?