Ретрошара
Кто-нибудь пользуется? С кем обменяться ключиками?
cast ![]()
mertvoprog
Кто-нибудь пользуется? С кем обменяться ключиками?
cast ![]()
mertvoprog
…под личный бложик и пет-проекты?
Давным-давно брал на 2domains.ru.
Лучше брать домен у зарубежного регистратора? У какого? Какие подводные камни могут быть с оплатой или еще чем-нибудь?
Подхожу к компу, а там хомяк в RO. Ну и /var за компанию тоже.
В логах такое:
мар 10 13:48:26 aquila systemd-logind[898]: Lid closed.
мар 10 13:48:32 aquila kernel: ata3.00: exception Emask 0x10 SAct 0x1000 SErr 0x4040000 action 0xe frozen
мар 10 13:48:35 aquila kernel: ata3.00: irq_stat 0x00000040, connection status changed
мар 10 13:48:35 aquila kernel: ata3: SError: { CommWake DevExch }
мар 10 13:48:35 aquila kernel: ata3.00: failed command: WRITE FPDMA QUEUED
мар 10 13:48:35 aquila kernel: ata3.00: cmd 61/18:60:30:31:11/00:00:1b:00:00/40 tag 12 ncq dma 12288 out
res 50/00:00:00:00:00/00:00:00:00:00/00 Emask 0x10 (ATA bus error)
мар 10 13:48:35 aquila kernel: ata3.00: status: { DRDY }
мар 10 13:48:35 aquila kernel: ata3: hard resetting link
мар 10 13:48:35 aquila kernel: ata3: SATA link down (SStatus 1 SControl 300)
мар 10 13:48:35 aquila kernel: ata3: hard resetting link
мар 10 13:48:35 aquila kernel: ata3: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
мар 10 13:48:35 aquila kernel: ata3.00: configured for UDMA/133
мар 10 13:48:35 aquila kernel: ata3: EH complete
мар 10 13:48:41 aquila kernel: ata3.00: exception Emask 0x10 SAct 0x40000 SErr 0x4040000 action 0xe frozen
мар 10 13:48:41 aquila kernel: ata3.00: irq_stat 0x00000040, connection status changed
мар 10 13:48:41 aquila kernel: ata3: SError: { CommWake DevExch }
мар 10 13:48:41 aquila kernel: ata3.00: failed command: WRITE FPDMA QUEUED
мар 10 13:48:41 aquila kernel: ata3.00: cmd 61/88:90:00:ad:d2/00:00:5f:00:00/40 tag 18 ncq dma 69632 out
res 50/00:00:00:00:00/00:00:00:00:00/00 Emask 0x10 (ATA bus error)
мар 10 13:48:41 aquila kernel: ata3.00: status: { DRDY }
мар 10 13:48:41 aquila kernel: ata3: hard resetting link
мар 10 13:48:42 aquila kernel: ata3: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
мар 10 13:48:42 aquila kernel: ata3.00: configured for UDMA/133
мар 10 13:48:42 aquila kernel: ata3: EH complete
.
.
.
.
.
.
мар 10 13:54:17 aquila kernel: ata3.00: exception Emask 0x10 SAct 0x100000 SErr 0x450100 action 0x6 frozen
мар 10 13:54:17 aquila kernel: ata3.00: irq_stat 0x08000000, interface fatal error
мар 10 13:54:17 aquila kernel: ata3: SError: { UnrecovData PHYRdyChg CommWake Handshk }
мар 10 13:54:17 aquila kernel: ata3.00: failed command: WRITE FPDMA QUEUED
мар 10 13:54:17 aquila kernel: ata3.00: cmd 61/50:a0:58:f2:56/00:00:43:00:00/40 tag 20 ncq dma 40960 out
res 50/00:50:58:f2:56/00:00:43:00:00/40 Emask 0x10 (ATA bus error)
мар 10 13:54:17 aquila kernel: ata3.00: status: { DRDY }
мар 10 13:54:17 aquila kernel: ata3: hard resetting link
мар 10 13:54:17 aquila kernel: ata3: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
мар 10 13:54:17 aquila kernel: ata3.00: configured for UDMA/133
мар 10 13:54:17 aquila kernel: ata3: EH complete
мар 10 13:54:27 aquila kernel: ata3: limiting SATA link speed to 1.5 Gbps
мар 10 13:54:27 aquila kernel: ata3.00: exception Emask 0x10 SAct 0x20 SErr 0x450100 action 0x6 frozen
мар 10 13:54:27 aquila kernel: ata3.00: irq_stat 0x08000000, interface fatal error
мар 10 13:54:27 aquila kernel: ata3: SError: { UnrecovData PHYRdyChg CommWake Handshk }
мар 10 13:54:27 aquila kernel: ata3.00: failed command: WRITE FPDMA QUEUED
мар 10 13:54:27 aquila kernel: ata3.00: cmd 61/58:28:30:f3:56/00:00:43:00:00/40 tag 5 ncq dma 45056 out
res 50/00:58:30:f3:56/00:00:43:00:00/40 Emask 0x10 (ATA bus error)
мар 10 13:54:27 aquila kernel: ata3.00: status: { DRDY }
мар 10 13:54:27 aquila kernel: ata3: hard resetting link
мар 10 13:54:27 aquila kernel: ata3: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
мар 10 13:54:27 aquila kernel: ata3.00: configured for UDMA/133
мар 10 13:54:27 aquila kernel: ata3: EH complete
Потом еще пара страниц не относящихся к делу сообщений, и дальше журнала нет по понятным причинам.
SMART:
smartctl 7.2 2020-12-30 r5155 [x86_64-linux-5.10.19-1-lts] (local build)
Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
Model Family: HGST Travelstar 7K1000
Device Model: HGST HTS721010A9E630
Serial Number: JR1004BNJKM6VM
LU WWN Device Id: 5 000cca 8e6e43178
Firmware Version: JB0OA3U0
User Capacity: 1 000 204 886 016 bytes [1,00 TB]
Sector Sizes: 512 bytes logical, 4096 bytes physical
Rotation Rate: 7200 rpm
Form Factor: 2.5 inches
Device is: In smartctl database [for details use: -P show]
ATA Version is: ATA8-ACS T13/1699-D revision 6
SATA Version is: SATA 3.0, 6.0 Gb/s (current: 3.0 Gb/s)
Local Time is: Wed Mar 10 19:42:30 2021 +07
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
General SMART Values:
Offline data collection status: (0x00) Offline data collection activity
was never started.
Auto Offline Data Collection: Disabled.
Self-test execution status: ( 0) The previous self-test routine completed
without error or no self-test has ever
been run.
Total time to complete Offline
data collection: ( 45) seconds.
Offline data collection
capabilities: (0x5b) SMART execute Offline immediate.
Auto Offline data collection on/off support.
Suspend Offline collection upon new
command.
Offline surface scan supported.
Self-test supported.
No Conveyance Self-test supported.
Selective Self-test supported.
SMART capabilities: (0x0003) Saves SMART data before entering
power-saving mode.
Supports SMART auto save timer.
Error logging capability: (0x01) Error logging supported.
General Purpose Logging supported.
Short self-test routine
recommended polling time: ( 2) minutes.
Extended self-test routine
recommended polling time: ( 170) minutes.
SCT capabilities: (0x003d) SCT Status supported.
SCT Error Recovery Control supported.
SCT Feature Control supported.
SCT Data Table supported.
SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x000b 100 100 062 Pre-fail Always - 0
2 Throughput_Performance 0x0005 100 100 040 Pre-fail Offline - 0
3 Spin_Up_Time 0x0007 119 119 033 Pre-fail Always - 2
4 Start_Stop_Count 0x0012 100 100 000 Old_age Always - 1122
5 Reallocated_Sector_Ct 0x0033 100 100 005 Pre-fail Always - 0
7 Seek_Error_Rate 0x000b 100 100 067 Pre-fail Always - 0
8 Seek_Time_Performance 0x0005 100 100 040 Pre-fail Offline - 0
9 Power_On_Hours 0x0012 086 086 000 Old_age Always - 6553
10 Spin_Retry_Count 0x0013 100 100 060 Pre-fail Always - 0
12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 1115
191 G-Sense_Error_Rate 0x000a 100 100 000 Old_age Always - 0
192 Power-Off_Retract_Count 0x0032 100 100 000 Old_age Always - 36
193 Load_Cycle_Count 0x0012 078 078 000 Old_age Always - 223725
194 Temperature_Celsius 0x0002 157 157 000 Old_age Always - 38 (Min/Max 11/51)
196 Reallocated_Event_Count 0x0032 100 100 000 Old_age Always - 0
197 Current_Pending_Sector 0x0022 100 100 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0008 100 100 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x000a 200 200 000 Old_age Always - 39
223 Load_Retry_Count 0x000a 100 100 000 Old_age Always - 0
SMART Error Log Version: 1
ATA Error Count: 39 (device log contains only the most recent five errors)
CR = Command Register [HEX]
FR = Features Register [HEX]
SC = Sector Count Register [HEX]
SN = Sector Number Register [HEX]
CL = Cylinder Low Register [HEX]
CH = Cylinder High Register [HEX]
DH = Device/Head Register [HEX]
DC = Device Command Register [HEX]
ER = Error register [HEX]
ST = Status register [HEX]
Powered_Up_Time is measured from power on, and printed as
DDd+hh:mm:SS.sss where DD=days, hh=hours, mm=minutes,
SS=sec, and sss=millisec. It "wraps" after 49.710 days.
Error 39 occurred at disk power-on lifetime: 6547 hours (272 days + 19 hours)
When the command that caused the error occurred, the device was active or idle.
After command completion occurred, registers were:
ER ST SC SN CL CH DH
-- -- -- -- -- -- --
84 51 01 07 90 cc 0d Error: ICRC, ABRT at LBA = 0x0dcc9007 = 231510023
Commands leading to the command that caused the error were:
CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
-- -- -- -- -- -- -- -- ---------------- --------------------
61 08 50 00 90 cc 40 00 03:50:09.783 WRITE FPDMA QUEUED
ef 10 03 00 00 00 a0 00 03:50:09.783 SET FEATURES [Enable SATA feature]
ec 00 00 00 00 00 a0 00 03:50:09.782 IDENTIFY DEVICE
ef 03 42 00 00 00 a0 00 03:50:09.782 SET FEATURES [Set transfer mode]
ec 00 00 00 00 00 a0 00 03:50:09.781 IDENTIFY DEVICE
Error 38 occurred at disk power-on lifetime: 6547 hours (272 days + 19 hours)
When the command that caused the error occurred, the device was active or idle.
After command completion occurred, registers were:
ER ST SC SN CL CH DH
-- -- -- -- -- -- --
84 51 01 07 90 cc 0d Error: ICRC, ABRT at LBA = 0x0dcc9007 = 231510023
Commands leading to the command that caused the error were:
CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
-- -- -- -- -- -- -- -- ---------------- --------------------
61 08 68 00 90 cc 40 00 03:50:09.413 WRITE FPDMA QUEUED
ef 10 03 00 00 00 a0 00 03:50:09.413 SET FEATURES [Enable SATA feature]
ec 00 00 00 00 00 a0 00 03:50:09.412 IDENTIFY DEVICE
ef 03 42 00 00 00 a0 00 03:50:09.412 SET FEATURES [Set transfer mode]
ec 00 00 00 00 00 a0 00 03:50:09.411 IDENTIFY DEVICE
Error 37 occurred at disk power-on lifetime: 6547 hours (272 days + 19 hours)
When the command that caused the error occurred, the device was active or idle.
After command completion occurred, registers were:
ER ST SC SN CL CH DH
-- -- -- -- -- -- --
84 51 01 07 90 cc 0d Error: ICRC, ABRT at LBA = 0x0dcc9007 = 231510023
Commands leading to the command that caused the error were:
CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
-- -- -- -- -- -- -- -- ---------------- --------------------
61 08 28 00 90 cc 40 00 03:50:09.033 WRITE FPDMA QUEUED
ef 10 03 00 00 00 a0 00 03:50:09.033 SET FEATURES [Enable SATA feature]
ec 00 00 00 00 00 a0 00 03:50:09.032 IDENTIFY DEVICE
ef 03 42 00 00 00 a0 00 03:50:09.032 SET FEATURES [Set transfer mode]
ec 00 00 00 00 00 a0 00 03:50:09.031 IDENTIFY DEVICE
Error 36 occurred at disk power-on lifetime: 6547 hours (272 days + 19 hours)
When the command that caused the error occurred, the device was active or idle.
After command completion occurred, registers were:
ER ST SC SN CL CH DH
-- -- -- -- -- -- --
84 51 01 07 90 cc 0d Error: ICRC, ABRT at LBA = 0x0dcc9007 = 231510023
Commands leading to the command that caused the error were:
CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
-- -- -- -- -- -- -- -- ---------------- --------------------
61 08 18 00 90 cc 40 00 03:50:08.663 WRITE FPDMA QUEUED
ef 10 03 00 00 00 a0 00 03:50:08.663 SET FEATURES [Enable SATA feature]
ec 00 00 00 00 00 a0 00 03:50:08.662 IDENTIFY DEVICE
ef 03 42 00 00 00 a0 00 03:50:08.662 SET FEATURES [Set transfer mode]
ec 00 00 00 00 00 a0 00 03:50:08.661 IDENTIFY DEVICE
Error 35 occurred at disk power-on lifetime: 6547 hours (272 days + 19 hours)
When the command that caused the error occurred, the device was active or idle.
After command completion occurred, registers were:
ER ST SC SN CL CH DH
-- -- -- -- -- -- --
84 51 00 00 00 00 00
Commands leading to the command that caused the error were:
CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
-- -- -- -- -- -- -- -- ---------------- --------------------
ec 00 00 00 00 00 a0 00 03:50:03.301 IDENTIFY DEVICE
61 08 01 07 90 cc 0d ff 03:50:02.961 WRITE FPDMA QUEUED
61 08 28 00 90 cc 40 00 03:50:02.923 WRITE FPDMA QUEUED
ef 10 03 00 00 00 a0 00 03:50:02.923 SET FEATURES [Enable SATA feature]
ec 00 00 00 00 00 a0 00 03:50:02.922 IDENTIFY DEVICE
SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Extended offline Interrupted (host reset) 80% 4412 -
# 2 Short offline Completed without error 00% 3199 -
# 3 Extended offline Completed without error 00% 24 -
# 4 Short offline Completed without error 00% 4 -
SMART Selective self-test log data structure revision number 1
SPAN MIN_LBA MAX_LBA CURRENT_TEST_STATUS
1 0 0 Not_testing
2 0 0 Not_testing
3 0 0 Not_testing
4 0 0 Not_testing
5 0 0 Not_testing
Selective self-test flags (0x0):
After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.
Какой вердикт? Срочно бэкапиться?
P.S.
После перезагрузки стали падать вкладки в лисе. Вроде к HDD не относится, хотя хз…
Пацаны, к нам снова традиционный дуршлаг с подогревом от Интел подъехал:
https://www.opennet.ru/opennews/art.shtml?num=54717
Организовать скрытый канал связи для передачи данных между процессами со скоростью около 4 мегабит в секунду, в котором не используется разделяемая память, процессорный кэш и специфичные для ядер CPU ресурсы и процессорные структуры. Отмечается, что предложенный метод создания скрытого канала очень трудно блокировать существующими методами защиты от атак по сторонним каналам.
Ай, хорошо!
То есть
Если ты про руби, то у тебя куча ошибок в слове «всратые»
— не нарушает никаких правил форума.
А ответ
Типичный фанатик. Кроме сортирных, других мыслей в голове нет.
— это 4.3.
З.Ы. Ну раз сайт требует поставить тэг, то пусть будет швим.
Помоги перенести скрипт bash -> sh
Сообщение удалено bryak по причине 4.3 Провокация flame (-1)
Почему бы не переписать скрипт на Python?
Или тебе принципиально хочется пострадать?
EXL ★★★★★ (05.03.21 13:53:43)
Сообщение удалено bryak по причине 4.1 Offtopic (0)
Ответ на: комментарий от EXL 05.03.21 13:53:43
Ему даже bash запрещают. А ты python предлагаешь.
wandrien (05.03.21 13:54:58)
Тебе заняться больше нечем??
Небольшая задача. Вот так — не работает:
Ext_Ajax_promise = async function(options) {
return new Promise(function(resolve, reject) {
options.callback = function(options, success, response) {
let result = {
response: response,
options: options
}
(success ? resolve : reject)(result);
}
Ext.Ajax.request(options);
});
}
Кто за 2 секунды понял, почему, — тот молодец и гуру джаваскрипта. А я не молодец, я ломал голову минут 10.
Если кто-то не догадался, где ошибка, то смотрите историю правок поста — там скрыта рабочая версия.
Мораль простая: не слушайте адептов «простого синтаксиса» и всегда шарашьте точки с запятой.
Задавайте ваши ответы.
Привет! Поделитесь опытом внедрения разных встраиваемых реализаций.
Есть идея для одного приложения. Планирую, что оно будет поставляться в двух вариантах:
То есть во втором случае бинарь будет включать в себя и интерпретатор, и код на скриптовом языке, и всю необходиму обвязку, чтобы веб-приложение «не заметило разницы».
В связи с этим встал вопрос о выборе встраиваемого интерпретатора и соответственно языка. Пока работа над основным кодом не начата, и у меня есть только небольшой прототип на Ruby, еще не поздно сменить язык.
Вспомнились такие встройки:
Что касается обычного веб-приложения, мне нет большой разницы, на каком из этих трёх языков писать серверную часть. Поэтому выбор определяется встройкой.
Мой вопрос в том, какой инструмент выбрать. Взяв какой язык и какой встраиваемый интерпретатор я поимею наименьшее количество проблем по поддержанию совместимости кода приложения одновременно с мейнстримовым интерпретатором и со встраиваемым?
P.S.:
Жирный V8 в appimage тащить не хочу. Электрон не предлагать.
Есть ли разница, добавлять новые столбцы в таблицу после последнего столбца или где-нибудь в середине списка?
Разница по производительности работы таблицы или еще какие-то подводные камни?
Извините, но я прочитал https://docs.python.org/3/library/logging.html и нихрена не понял.
Во всех нормальных обертках для записи логов можно переопределить уровень логирования для конкретного модуля, сделав уровень выше дефолтного. А в питоне вы можете сделать его только ниже, а не выше.
Что они курили и что курить теперь мне?
UPD:
В качестве решения сделал модуль для манки-патчинга дефолтного логгера. См. в комментариях.
В очередной раз при правке кода на питоне у меня пригорело от list comprehensions.
А вот что пишут настоящие живые люди, которых никто не заставляет под дулом пистолета:
I find the list comprehension much clearer than
filter+lambda
Или:
Personally I find list comprehensions easier to read. It is more explicit what is happening from the expression
[i for i in list if i.attribute == value]as all the behaviour is on the surface not inside the filter function.
Ну давайте посмотрим, как этот much clearer way выглядит in the wild. Как-то так:
def getSupportedTrackers(self):
trackers = self.getTrackers()
if not self.site.connection_server.tor_manager.enabled:
trackers = [tracker for tracker in trackers if ".onion" not in tracker]
trackers = [tracker for tracker in trackers if self.getAddressParts(tracker)] # Remove trackers with unknown address
if "ipv6" not in self.site.connection_server.supported_ip_types:
trackers = [tracker for tracker in trackers if helper.getIpType(self.getAddressParts(tracker)["ip"]) != "ipv6"]
return trackers
Просто сплошной [blabla for blabla in blablas if ...blabla...].
Просто в начале каждой такой строки ты должен мысленно стирать кусок [tracker for tracker in trackers if и читать, что же там дальше. И как писал Роберт Мартин в «Чистом коде», любые конструкции, которые принуждают читателя тренироваться пропускать себя мимо глаз, являются источником скрытых ошибок. Пропустив 500 раз мимо глаз типовой фрагмент кода, на 501-й раз вы пропускаете ПОЧТИ такой же фрагмент, в котором содержится ошибка. И в силу одинаковой натренированности рефлексов у всех разработчиков продукта, эта ошибка может оставаться незамеченной годами.
Давайте посмотрим, как этот же код можно преписать на лямбдах на руби:
def getSupportedTrackers():
trackers = @getTrackers()
if not @site.connection_server.tor_manager.enabled
trackers = trackers.filter {|tracker| not tracker.include? ".onion"}
end
trackers = trackers.filter {|tracker| @getAddressParts(tracker)}
if not @site.connection_server.supported_ip_types.include? "ipv6"
trackers = trackers.filter {|tracker| helper.getIpType(@getAddressParts(tracker)["ip"]) != "ipv6"}
end
return trackers
end
Уже стало лучше за счёт уменьшения количества бойлерплейта, который приходится пропускать мимо. Но 3 вызова trackers.filter подряд и два идентичных вызова getAddressParts говорят нам, что этот код надо переписать.
Заметьте, что необходимость рефакторинга для устранения дублирования не была очевидна в коде с list comprehensions, потому что они за своей многословностью и нечитабельным синтаксисом скрывают суть происходящего.
Убираем дублирование:
def getSupportedTrackers()
tor_enabled = @site.connection_server.tor_manager.enabled
ipv6_enabled = @site.connection_server.supported_ip_types.include? "ipv6"
trackers = @getTrackers()
trackers = trackers.filter {|tracker|
if (not tor_enabled) and (tracker.include? ".onion")
next false
end
address_parts = @getAddressParts(tracker)
if not address_parts
next false
end
if (not ipv6_enabled) and (helper.getIpType(address_parts["ip"]) == "ipv6")
next false
end
next true
}
return trackers
end
Этот код хотя и выглядит не так компактно при взгляде на экран издалека, на самом деле проще в чтении и в поддержке. Здесь нет дублирования, которое заставляет читателя многократно сверять строки, чтобы убедиться, что разработчик имел в виду именно то, что увидел читатель. А каждая строка выражает свою мысль без лишних бессмысленных слов, которые нужно отфильтровывать глазами.
P.S. Или для любителей длинных однострочников:
def getSupportedTrackers()
tor_enabled = @site.connection_server.tor_manager.enabled
ipv6_enabled = @site.connection_server.supported_ip_types.include? "ipv6"
trackers = @getTrackers()
trackers = trackers.filter {|tracker|
next false if (not tor_enabled) and (tracker.include? ".onion")
address_parts = @getAddressParts(tracker)
next false if not address_parts
next false if (not ipv6_enabled) and (helper.getIpType(address_parts["ip"]) == "ipv6")
next true
}
return trackers
end
Но этот вариант по моему мнению хуже.
Перемещено leave из talks
Опубликовал статью, посвященную устройству подсистемы TTY.
Подсистема TTY — одна из ключевых особенностей Unix и Unix-подобных операционных систем.
В этой статье я постараюсь кратко, но достаточно ёмко и доступно для читателей разного уровня подготовки разобрать устройство подсистемы TTY и её взаимодействие с другими частями программной среды.
Описание архитектуры TTY, изложенное здесь, не является на 100% корректным. Некоторые части были намеренно упрощены или опущены, чтобы итоговая картина получилась более простой и цельной. Эти детали не являются критичными для понимания принципов работы TTY. При необходимости все необходимые детали могут быть восстановлены чтением страниц руководств в составе операционной системы.
Статья представляет собой высокоуровневое описание функциональных частей и режимов TTY с точки зрения пользователя или прикладного программиста.
>> Подробности
Windows calculator портировали на Linux
В таком виде — вызывающе неверная информация. См. подтверждение здесь: Windows calculator портировали на Linux (комментарий)
Предлагаю перенести новость в толксы. Обсуждение в комментах интересное, но на новость не тянет. Программу просто переписали на другой язык, а не портировали.
Отщепенцы со дна общества под названием «оптимизаторы» придумали новый способ поискового спама для обхода эвристик Гугла: переводить машинным переводом Stack Overflow и заливать типа сайты вопросов и ответов на русском и других языках.
Зачастую этот мусор в результатах поиска оказывается выше, чем страницы, с которых он был спи^Wпереведён.
Поскольку в Гугл писать бесполезно, и достучаться туда сложнее, чем до правительства, и также поскольку Гугл так боится расстроить рекламодателей, что не предоставляет пользователю вообще никаких средств контроля поисковой выдачи, то бороться приходится подручными средствами.
В общем, поставил в лису uBlacklist. Всем рекомендую.
Показания htop: https://ibb.co/fC34MBw
В первую очередь проверил tmpfs, там пусто:
$ df -h -t tmpfs
Файловая система Размер Использовано Дост Использовано% Cмонтировано в
run 3,9G 1,6M 3,9G 1% /run
tmpfs 3,9G 0 3,9G 0% /dev/shm
tmpfs 4,0M 0 4,0M 0% /sys/fs/cgroup
tmpfs 6,2G 96K 6,2G 1% /tmp
tmpfs 788M 116K 788M 1% /run/user/1000
Главный подозреваемый – ядерный модуль VirtualBox.
Вчера днём утекло около 3 гигов. Перезагрузил, запустил VBox, оставил на ночь. За ночь утекло еще 6.
https://git.archlinux.org/pacman.git/commit/?id=454ea024383eab60295e4c4fdf2c329475887b2c
2020-05-11 This removes support for autotools in favour of meson.
Этому миру нужен герой…
Bedrock Linux – это «метадистрибутив», что в понимании авторов означает «программа для управления другими дистрибутивами».
Вы ставите любой дистрибутив по вкусу (из списка поддерживаемых) тем способом, который вам нравится. После этого запускаете установщик Bedrock Linux. Bedrock Linux перехватывает управление над системой, внедряясь в качестве дефолтного инита, изменяя и добавляя точки монтирования и т.п. После перезагрузки вы оказываетесь в системе, которая работает «внутри» Bedrock Linux. Вы можете устанавливать другие операционные системы семейства Linux «рядом» с основной системой и свободно смешивать софт из них. (Общий /bin, список файлов *.desktop, bash-completion, man pages и другие интеграционные фичи).
Библиотеки при этом не общие, таким образом дистрибутивы не нарушают бинарную совместимость друг друга.
Это всё красивая теория. Что на практике:
Я пожертвовал установленным на флешке Арчем, чтобы поэкспериментировать с Bedrock. Этот Арч, как и все мои Арчи, представляет собой клона основной системы, которая работает около 10 лет без переустановок. Так что я заранее был готов, что при накатывании сверху Bedrock всё развалится. Как пишут авторы, они тестируют работу системы только поверх свежеустановленного дистрибутива.
Для начала:
# ./bedrock-linux-0.7.17-x86_64.sh --hijack Arch
No file detected at /sbin/init. Unable to hijack init system.
Смотрим в код. Установочный скрипт даже не пытается обнаружить, какой инит на самом деле использован:
if ! [ -r "/sbin/init" ]; then
abort "No file detected at /sbin/init. Unable to hijack init system."
fi
Мне лень писать ln -s ... вручную, поэтому просто ставлю пакет, который притащит нужный симлинк:
# pacman -S systemd-sysvcompat
Вот такой у меня повидавший жизнь и кучу апдейтов экземпляр Арча, в котором не стоит systemd-sysvcompat. Ладно, пофиксил, едем дальше.
Запускаю установку, на этот раз Bedrock ставится нормально. Говорит, что внедрился в операционную систему, и что надо перезагрузиться.
Сначала смотрю, что он сделал:
/bedrock со своими конфигами и бинарниками./sbin/init на свой скрипт запуска.Других изменений не заметно.
Конфиг в /boot/grub/grub.cfg не поправил и даже не сказал, что я должен это проверить. А в конфиге вписан совсем не тот init:
menuentry "Archlinux Ester (mainline)" {
linux /boot/vmlinuz-linux root=$root_dev ro init=/usr/lib/systemd/systemd
initrd /boot/initramfs-linux.img
}
Правлю инит. Перезагружаюсь.
Получаю сообщение «No suitable video mode found. Booting in blind mode.» и… система не грузится.
Ну, это мой косяк. Сообщение было и раньше, и пока systemd не переключит видеорежим, экран действительно оставался чёрным.
Догадываюсь, что Bedrock пытается на чёрном экране показать мне своё boot menu. Нажимаю enter. Запускается systemd. Ура, у нас есть картинка.
Снова лезу в /boot/grub/grub.cfg. Добавляю строку insmod all_video. Перезагружаюсь.
На этот раз всё нормально, Bedrock рисует загрузочное меню, и оно отображается на экране. Предлагает грузиться через systemd или через runit-init, который у меня, оказывается, тоже установлен. Я и не помню, что его сюда ставил. Правда, в runit-init грузиться смысла нет, половина программ в Арче просто не поймут отсутствие systemd.
Загружаюсь. Сети у приложений нет. Обнаруживаю, что у меня хаос в ip route и в /etc/resolve.conf. NetworkManager видит Wifi, но, видимо, какой-то подземный стук вмешался в работу. Вручную правлю маршруты и резолверы имён. Сеть появляется.
==> Вы находитесь здесь.
Теперь надо разобраться, что мешает автоматике настраивать сеть правильно. Пока на этом из приключений всё. И дальше можно ставить рядом приложения из Debian, Void, Alpine, да хоть Gentoo компилировать.
Stay tuned!
Сабж в этом году окончательно вышел из-под контроля.
Какие вам присылали бессмысленные PR-ы?
Там opennet наркоманию принёс:
Нашел случайно. Чей сервер, не знаю:
Не всё на английском, часть на французском. Есть как историческая информация, так и актуальная.
| ← назад | следующие → |