Архив гостевой книги с 08.04.2021 г. по 04.08.2021 г.

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

Учтите, что комментарии на этом сайте премодерируются.

[Ещё более старые комментарии можно найти на предшествующей странице архива >>>]

Почему при

Почему при сдвиге вправо -5 shr 3, получается число не 31, а вот такая чертовщина 536870911? (11111011》00011111).

admin аватар

А с чего вы

А с чего вы взяли, что число -5 компилятор Паскаля будет рассматривать как восьмибитное? Насколько я понимаю, разрядность чисел "по умолчанию" зависит от платформы, но однобайтовые в этой роли вообще никогда не используются. В данном случае, очевидно, компилятор рассматривает числа как 32-битные. Ну а дальше уже всё совсем просто, эта ваша "чертовщина", будучи переведённой в 16-ричное представление, выглядит вот так: 1fffffff Всё абсолютно корректно, старшие три бита нолики, остальные 29 бит единички.

Безымянные структуры

Недавно увидел, что структура, описанная через typedef, может объявляться без имени. Например, у структуры:

typedef struct {
	int key, value;
} ht_item;

--- нет имени, но тип ht_item можно использовать. Правильна ли такая запись? Или трудно потом будет отловить ошибки с такими анонимными структурами?

admin аватар

У этой записи

У этой записи есть минимум один серьёзный недостаток: описать звено списка, дерева или иной подобной связной структуры так не получится, поскольку на момент, когда потребуется указать тип поля указателя на соседний элемент, сослаться на сам описываемый тип возможности не будет.

С какого момента такую запись "легитимизировали" и была ли она допустима до нашествия стандартизаторов — не знаю, не изучал вопрос. Сам я вообще не пользуюсь typedef'ом для структур, всегда пишу struct mystr, мне не лень.

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

была ли она

была ли она допустима до нашествия стандартизаторов
Была. В первом издании K&R 1978 года в разделе, посвященном typedef, есть пример

typedef struct { double re, im; } complex;
Parthen аватар

В мою школу

В мою школу пришел приказ об исключении FreePascal из средств, доступных на ЕГЭ по информатике. Остались PascalABC, Cи и Python.
Иногда мне кажется, что в МинОбре звучит примерно эта музыка:
https://yewtu.be/watch?v=o5Tm8zV8FlA

admin аватар

Что вы, что вы,

Что вы, что вы, Воланд же хороший и вообще классный. Если говорить о персонажах "Мастера и Маргариты", то минобровцев следует сравнивать скорее с тем буфетчиком, который задвигал про осетрину второй свежести. Мерзкие людишки, от которых ничего кроме вони.

Basic

А как же Basic и ШАЯ? Кстати, какой конкретно диалект бейсика был в ЕГЭ, кстати? Номеров строчек в заданиях не видно.

И что же это бейсик без номеров строк — не бейсик, а фигня какая-то.

Насчёт FPC — это они офигели. У ABC нет полной совместимости с нормальным паскалем, и, учитывая, .Net, не будет.

Parthen аватар

Тормозите, Basic и

Тормозите, Basic и ШАЯ -- это языки на которых программы в текстах заданий показывают.
А я говорю про то, на чем писать вторую часть. Так вот FreePascal убрали в том смысле, что убрали его компилятор.

admin аватар

Бейсиковские

Бейсиковские номера строк не имеют смысла при наличии текстового редактора. Когда весь мир писал на бейсике с нумерованными строками, привычный ныне цикл "редактируем-компилируем-запускаем-goto1" на многих компьютерах было невозможно реализовать сугубо технически.

Скорее уж

Скорее уж такая...

admin аватар

Там по ссылке и

Там по ссылке и картинка тоже ничего :-) вполне соответствует

Здравствуйте!

Здравствуйте! Возможно-ли заставить символ передвигаться по экрану не используя модуль crt.

admin аватар

Конечно, можно:

Конечно, можно: сам модуль crt ведь это как-то делает :-)

Если речь идёт о терминалах в ОС семейства Unix, то это всё делается escape-последовательностями, желаю удачи в их изучении. Как это всё устроено, например, в Windows — понятия не имею. В программах для MS-DOS было два пути управлять экраном — через функции int10h и через прямую запись в видеопамять, но это уже давняя и никому не нужная история, четверть века как неактуальная.

Что можно

Что можно почитать об escape последовательности? В интернете кое-что нашел, но как устанавливать время(задержку) - об этом ничего, наверное придется создавть большой цикл.

admin аватар

У вас в голове

У вас в голове бардак. Esc-последовательности служат для управления выводом на экран. Задержка — это вообще совсем другая задача, из совершенно другой области. И нет, задержки нельзя делать циклами, это нагружает процессор холостой работой.

Спасибо

Спасибо большое! Натворил бы я делов с циклами.

admin аватар

В модуле sysutils

В модуле sysutils вроде есть процедура sleep, ну или можно специально сделать модуль на Си из одной процедуры, которая будет обращаться к соответствующим системным средствам.

Перенос программ на виндовс

Пытался перенести свою змейку на винду так как друзья попросили, это ужас такой. В виндовском компиляторе паскаля нет даже ScreenWidth и ScreenHeight. Так к тому же cmd.exe медленно печатает символы я бы даже сказал очень медленно. Вобщем как и в книжке написано моя программа перестала быть живой и перестала приносить радость.

Удивительная вещь терминал линукса он успевает даже с задержкой в 10 мс все передавать качественно.

Всё очень

Всё очень просто: терминал линукса использует аппаратное ускорение отрисовки (GPU), консоль винды - нет. Увы, это требование совместимости с миллионами старых г-скриптов, где алгоритм работы завязан на скорость отрисовки.
Есть Windows Terminal, он точно с аппаратным ускорением. Но увы, Windows 10 only, да ещё и устанавливать руками надо. Возможно, среди альтернативных консолей найдётся что-то шустрое, но я сомневаюсь: все известные мне запускают скрытое окно консоли винды и как-то через него работают.

admin аватар

В юниксовых

В юниксовых терминалах нет ничего удивительного, это просто программы, которые работают так, как должны работать программы. Если прикинуть, какие действия нужны для того, чтобы в одном месте терминального окна "нарисовать" пробел, а в другом — отрисовать символ, то становится понятно, что 10мс — на минуточку, сотая доля секунды, т.е. два-три десятка миллионов тактов CPU — это целая вечность.

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

"Удивительно

"Удивительно скорее то, где берут безмозглых жопоруких идиотов, которые пишут "современные" программы под ту же винду и в особенности под веб"

А по-моему ничего удивительного. Достаточно сказать "программировать может каждый", подкрепить это железобетонным аргументом в виде yet_another_framework.super_puper_easy и пообещать зарплату. Через N лет всё будет готово.

А я вот в своей

А я вот в своей игры для консоли линукса думал для каждого кадра, даже если там один символ меняется, формировать полностью весь экран и дампить на stdout, чтобы обойтись без всяких ncurses/crt и было сразу переносимо на любую систему.

ЭТо очень плохая идея или так всё-таки тоже можно?

admin аватар

Абсолютно

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

stdout

А как можно объяснить вот такое? (дело происходит в обычном терминале в графическом окне)

$ stty
speed 38400 baud; line = 0;
-brkint -imaxbel iutf8
$ time head -c 29090000 /dev/zero 

real	0m1.003s
user	0m0.006s
sys	0m0.284s

А baudrate надо делить на 10, чтобы получить количество байт в секунду, учитывая 8 бит данных, старт и стоп-бит, то есть фактическая скорость вывода на терминал примерно 291 мегабод. Почему тогда stty пишет 38400?

И неужто такой скорости не хватит на несчастные 400 символов каждые 100 миллисекунд?

admin аватар

Что у вас за

Что у вас за каша из всего сразу?! Скорость в бодах — это параметр физической линии, а её у нас нет, так что этот параметр ни на что не влияет (вот то есть вообще ни на что), можете хоть упороться со своим stty :-) (ну то есть другие параметры дисциплины линии бывают полезны, но уж никак не этот). Далее, даже если бы он на что-то и влиял, скорость работы программы xterm или любой аналогичной, естественно, упирается не в скорость обмена с подчинёнными программами, а в скорость отрисовки получаемого безобразия на экране, и уж тут, простите, разница в потребных ресурсах, э... ну, порядка на два точно будет, если не на три. А нолики из /dev/zero оно жрёт с такой дикой скоростью исключительно потому, что их рисовать не надо.

Ну и последнее, откуда вы 400 взяли? 25x80, знаете ли, 2000 будет. Это, впрочем, в сравнении с остальным сущая ерунда.

Да, с

Да, с арифметикой я что-то ошибся малость...

80x25=20x100=2000, один десятичный порядок потерял, а на два я умножил из-за того что у меня box drawing characters в UTF-8, а они вообще по три байта занимают, но, с другой стороны, полно пробелов по одному байту.

> это параметр физической линии, а её у нас нет

А если вдруг надо ограничить скорость, чтобы потестить как программка работает на 9600 бод, что делать? phosphor из /usr/libexec/xscreensaver/ расчехлять, петлю из двух USB-Serial адаптеров втыкать или способы попроще есть?

> А нолики из /dev/zero оно жрёт с такой дикой скоростью исключительно потому, что их рисовать не надо.

Хорошо, провёл ещё один тест, причём именно с xterm:

time yes Широкая электрификация южных губерний мощный толчок подъёму сельского хозяйства | head -c 6000k
...
real    0m1.051s
user    0m0.013s
sys     0m0.147s

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

admin аватар

> А если вдруг

> А если вдруг надо ограничить скорость,

понятия не имею, не изучал вопрос

> причём именно с xterm:

из процитированного вами не видно, где тут, собственно говоря, xterm, вот только сдаётся мне (судя по циферкам), что всё это нарисовать вы ему толком не дали. Иначе бы так быстро не получилось. nb: у xterm всё-таки внутри есть кое-какие оптимизации, так что, например, когда его окна не видно (в том числе если оно ещё не открылось), он на "прорисовки" времени не тратит.

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

Семейство Windows и консоль

В блоге на сайте MS я почитал, что в современной версии Windows (Windows 10 с обновлениями 2018-года и новее) наиболее правильно просто кидать UTF-8 на stdout/stderr вперемешку с ANSI-последовательностями. То есть делать, ровно то же самое, что в современных UNIX-подобных ОС с локалью UTF-8.

В более старых версиях Windows для работы с консолью используется Windows Console API, например функции WriteConsole. Причём для каждой такой функции есть две версии, например WriteConsoleA и WriteConsoleW. Первая требует текста в однобайтной кодировке, а какой именно — зависит от кодовой страницы, при этом хотя кодовая страница 65001 для UTF-8 есть, но на практике толком не работает. Второй нужен юникод UTF-16.

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

Ещё есть вариант залезть в память консольной программе и выполнить перехват нужных функций Windows API.

В общем, даже сами мелкомягкие сообразили что сделали какую-то фигню и спустя всего-то 30 лет начали её исправлять.

Сам лично я вантузы на компьютере не держу, поэтому прошу простить за возможные неточности.

PascalABC.net

Я тут потыкал этот продукт инженерной мысли.

В общем выяснилось, что туда напихали ни с чем не совместимых расширений языка:

Например декларация переменной-счётчика разрешена и даже рекомендуется прямо в заголовке цикла for. При этом написано, что внутри цикла эту переменную менять нельзя.

Есть полно функций, которые отсутствуют в других имплементациях паскаля. Зато, на попытку uses SysUtils; пишет что такого модуля нету.

Есть сборка мусора. но работает только для всяких там объектов. Из-за этого нормальные указатели объявлены устаревшими.

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

Арифметика указателей не работает. Интересно, можно ли её скостылить путём приведения указателя к числу и обратно?

Writeln(stderr, 'some error message'); не работает. вроде ещё был вариант с ErrOutput или как-то так, но в поиске по справке pABC его не видно, видимо тоже не работает.

ReadStr нету. Чем читать число из параметра командной строки непонятно. В FreePascal ещё есть вариант StrToInt, но не работает с 64-битными целыми.

IDE PascalABC не вставляет перевод строки после End. в конце программы сама, надо вручную перейти туда и нажать Enter, иначе будет сохранён некорректный текстовый файл.

В общем, если изучать паскаль, пользуясь PascalABC — вы будете изучать не паскаль, а именно диалект PascalABC, а программы потом нигде больше работать без существенной переделки не будут.

Но зато консольный компилятор в mono всё-таки работает. Только нафига он нужен?

admin аватар

Большая часть

Большая часть этого всего, положим, сугубо пофигу, лично я не считал и не считаю, что Паскаль стоит изучать как будущий рабочий инструмент. Да и с совместимостью разных диалектов Паскаля всегда всё было плохо. Ну а что переменную цикла нельзя менять внутри цикла — так это ограничение присутствовало ещё в виртовском "изначальном" диалекте, то есть это совершенно не новость. И, представьте себе, мне SysUtils ещё ни разу не потребовался за всю жизнь, даже тогда, когда я программированием на Паскале зарабатывал деньги (я даже с ходу не скажу, существовал тогда этот модуль или нет).

Но вот дотнет и моно — это да-с. И сборка мусора, про её наличие я в ABC даже и не знал. И что указатели себя странно ведут — тоже, мягко говоря, нехорошо.

Но вообще ABC я как-то даже и не думал, что может рассматриваться иначе как учебное пособие, Free Pascal-то хотя бы его создатели считают практическим инструментом, а тут вроде и этого нет. Или я ошибаюсь?

(ну а языки, созданные исключительно чтобы на них учить, а не писать, для серьёзного обучения не годятся, см. предисловия)

Указатели в PascalABC.net

То, что он сам на .Net/mono работает, наверное не так и страшно. Проблема в том, что и программы он компилирует под эту среду. А там они оказываются под управлением менеджера памяти, который может делать хрен знает что прямо во время исполнения. Поскольку нормальные указатели в такой ситуации невозможны, он их имитирует с помощью средств платформы — потому они и ведут себя странно. Отсюда же и сборка мусора.

Вместо тысячи

Вместо тысячи слов: https://pascalabcnet.github.io/school_basic.html

В общем втюхивают школьникам C# под видом паскаля.

> лично я не

> лично я не считал и не считаю, что Паскаль стоит изучать как будущий рабочий инструмент

Ну, мне кажется, что диалект FreePascal не сильно хуже, чем C, раз уж указатели кастуются как угодно и к ним можно спокойно применять арифметику. Вот если я наткнусь сам лично на какие-то проблемы — тогда будет другое дело.

Ну не могу я просто так взять и поверить мнению человека из интернета, мне надо самому увидеть что с паскалем не так.

> И сборка мусора, про её наличие я в ABC даже и не знал.

Ну, если ООП не трогать, она не применяется. Указатели, на которых применили new нужно освобождать через dispose, как и везде. Так что думаю, это не особо страшно.

> а тут вроде и этого нет. Или я ошибаюсь?

Судя по официальному сайту, таки считают, что можно применять и не только для обучения:

PascalABC.NET – мощный язык с простым и логичным синтаксисом, хорошо понятным начинающим программистам. Это позволяет писать компактные, эффективные и понятные программы и делает данный язык идеальным выбором для обучения современному программированию в широком смысле: от учеников начальной школы до студентов профильных ИТ-направлений. Кроме того, он превосходно подходит как для создания консольных приложений малого и среднего размера, так и в качестве средства программирования «на каждый день».

Только что-то я им, пока что, не верю. Что за консольные программы такие без stderr?

> И что указатели себя странно ведут — тоже, мягко говоря, нехорошо.

Ну с этим ещё разбираться надо.

Var
	whole: uInt64;
	fract: ^double;

Begin
	fract := pdouble(@whole);
	ReadStr(ParamStr(1), whole);
	WriteLn('integer : ', whole);
	WriteLn('double  : ', fract^:20:20);
End.

Вот такой код у меня отлично работает в FreePascal. В ABC — только после замены ReadStr на ReadLn и переделывания кастов указателей. Если что, цель кода — одни и те же 8 байт памяти попробовать интерпретировать разными способами.

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

Цель?

Вы, случаем, не тот аноним, который рассказывал про то, что начинающему программисту для перехода на Линукс надо знать кучу вещей о дисках, терминальные утилиты создания ФС, их монтирования и.т.д.?

Я просто читаю комментарии об PascalABC.NET, и у меня опять возникает вопрос: с какой целью Вы вот все это сдесь пишите?! На Линукс PascalABC.NET? Вы читали предисловние книги автора сайта?

Что бы люди

Что бы люди узнали, почему конкретно PascalABCnet — ненужно, если им интересно.

admin аватар

что-то меня это уже напрягать начинает

Настоятельно рекомендую разобраться с правилами и научиться отличать "что бы" от "чтобы" и писать правильно, тем более что правило там может быть сложным, но проверка, правильно написано или нет — тривиальна: если фраза меняет смысл или вообще разваливается при убирании "бы", то этот слог — часть слова и пишется слитно. Лично я на этой ошибке довольно жёстко спотыкаюсь при чтении, так что отныне комментарии, содержащие неправильное написание "что бы" vs. "чтобы" раскрываться не будут.

Добрый день,

Добрый день, Андрей Викторович! У меня - вопрос из серии "Так можно, но вот нужно ли...".

Короче, есть у меня в программе на Си динамический массив arr, который буду заполнять символами из текстового файла, число символов - известно, память соответственно - выделена. И вот в чем вопрос: заполнение массива кодом

int ch;
for(int i = 0;((ch = fgtec(file)) != EOF); i++)
*(arr + i) = ch;

будет ок? В смысле, работать то оно работает, просто в книге Вы приводите некоторые примеры кода на Си, которые работают, но которые лучше не использовать. Вот и я решил перестраховаться, и спросить, будет ли такой код ОК не только с точки зрения того, что он работает.

Спасибо заранее!

Ну и

Ну и по-хорошему, не стоит полагаться на известность числа символов. Мало-ли что это за файл... Всё равно стоит добавить i < length.

admin аватар

Кстати да,

Кстати да, слона-то я и не приметил. Видимо, спал плохо :-) Это ж откровенный gets получается. Без проверки выхода за пределы массива тут нельзя вообще никак.

admin аватар

Ну тут я даже не

Ну тут я даже не знаю, с чего начать. Во-первых, речь идёт о Си? Не о Си++? Если да, то какое к дьяволу описание переменной цикла в заголовке?! (если что, про "новые стандарты" мне в очередной раз рассказывать не надо).

Во-вторых, вот это вот *(arr + i) — вам какая религия не велит написать arr[i]?

А в целом — ну вот я на этой конструкции ожидаемо споткнулся, секунды три пытался понять, правильно там всё или нет и вообще что она делает. Цикл-то у вас не арифметический, то есть на момент входа в него количество итераций неизвестно. Не так чтобы вообще было нельзя в таких случаях использовать for, но зачем? Разве что "чтоб никто не догадался", но у нас обычно цель прямо противоположная. Несомненно, я бы написал так:

    int ch, i;   /* не забываем, что это можно только в начале блока */
    /* ... */
    i = 0;
    while((ch = fgetc(file)) != EOF) {
        arr[i] = ch;
        i++;
    }

Здесь в заголовке цикла — известная всем идиома, на ней обычно никто не спотыкается; дальше чёткая последовательность действий, вот присваивание, вот приращение индекса, возвращаться к заголовку и вспоминать. что i++ туда засунули, не требуется.

Спасибо Вам

Спасибо Вам большое за замечания!

admin аватар

Ещё тут

Ещё тут справедливо подметили, что совершенно необходима проверка на выход за длину массива. Массивы бесконечными не бывают, а символы в потоке — запросто. Без этой проверки получается классический gets, ну а что такое gets и чем он грозит — в книжке подробно расписано.

Программа

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

admin аватар

Уж сколько раз твердили миру

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

Нельзя доверять внешним источникам данных, это общее правило.

Понял.

Понял.

Нумерация страниц

А можно ли было сменить нумерацию страниц в книге, так что бы она совпала с нумерацией страниц в PDF-файле для удобства работы с содержанием? Например если в содержании указана страница 72, то для перехода к этой странице нужно набрать 74 в PDF-просмотрщике. Для бумажной же книги, думаю пофиг, с какой страницы начинается нумерация.

Кроме того, не повредили бы и гиперссылки, которые PDF-формат поддерживает, что бы можно было переходить к нужной главе кликом по пункту содержания/оглавления.

Или были какие-то принципиальные причины, требующие начинать нумерацию страниц с третьей страницы файла?

admin аватар

Кто вам сказал,

Кто вам сказал, что "для бумажной книги пофиг"? Он вас жестоко обманул, в бумажной книге страница номер 1 — это титульный лист, страница номер 2 — его оборот, где реферат и всякие коды, а первая страница собственно содержания книги — всегда имеет номер 3, это мировая константа, в смысле совершенно незыблема.

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

Синхронизация номеров страниц

> а первая страница собственно содержания книги — всегда имеет номер 3, это мировая константа, в смысле совершенно незыблема.

Я не знал этого. Всегда удивляла мешанина номеров страниц в книге, где первая страница с номером имеет цифру 7, где 11, а где 3, потому и думал что пофигу.

> Отсюда сдвиг на два. И нет, с этим категорически ничего нельзя сделать.

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

/PageLabels << /Nums [0 << /S /r >> 2 << /S /D >>] >>

Вот такую хрень надо вставить в корневой объект, тогда в читалке первые две страницы будут римскими цифрами, а потом арабскими.

admin аватар

мешанина

мешанина номеров страниц в книге, где первая страница с номером

Если номер на странице не напечатан, это не значит, что у неё нет номера. Просто есть одно довольно хитрое правило, где ставить номер, а где не ставить. Номер ставится там, где текст "перетекает" через него, а где этого нет — там он не ставится (это, кстати, касается любых многостраничных документов, не только книг; если б ещё это знали составители всевозможных договоров и тому подобного).

В частности, если нумерация страниц расположена вверху, то номеров не будет на первых страницах частей/глав, то есть где текст начинается с новой страницы. Напротив, если нумерация идёт понизу, то номер страницы не ставится на последней (обычно неполной) странице книги, как и на последних (тоже обычно неполных) страницах частей/глав, после которых текст продолжается с новой страницы. Если внизу и/или вверху есть не только номер страницы, а прямо-таки целый колонтитул, то на него это правило тоже распространяется: на последней/неполной странице не должно быть нижнего колонтитула, а на первой странице части/главы, если таковая начинается с новой страницы, не должно быть колонтитула верхнего.

На таких страницах, которые "сами по себе", то есть не являются ни продолжением текста, ни началом такого текста, который дальше продолжается, не бывает ни верхнего, ни нижнего колонтитула, и такие страницы никогда не несут на себе номера.

НО! вне всякой зависимости от того, есть на странице её номер или нет, любая страница имеет номер, просто он не всегда печатается. Но он всегда есть и учитывается.

Рискну предположить, что эти ваши "7" или "11" возникали из-за того, что все предшествующие страницы были "страницами, которые сами по себе". Например, я легко могу представить сначала какое-нибудь посвящение, после которого оставляется пустая страница (она тоже имеет номер!), потом оглавление на одну страничку, потом на отдельной странице заголовок части, и после него тоже пустая страница, и все они имеют номера, хотя номера и не печатаются — вот вам начало нумерации страниц аж с девятой. На нумерацию с 11й страницы тоже можно что-нибудь придумать, например, в переводных книгах часто бывает два титульных листа — на языке оригинала и на языке перевода.

Вот такую хрень надо вставить в корневой объект

Вы мне что, предлагаете PDF редактировать вручную? Нет уж, спасибо :-) Заклинаний я в тексты на формальных языках не вставляю никогда, в том смысле, что чтобы вставить что-то эдакое, мне для начала нужно разобраться, что при этом конкретно происходит, то есть понять, почему именно так, а не иначе; ну а изучать ради этого язык PDF мне совершенно некогда.

Заклинание из PDF

Я полагаю, что раз это есть в PDF, то и в LaTeX оно каким-то образом делается.

А можете попробовать просто сделать что-нибудь вроде

\pagenumbering{roman}
...
\pagenumbering{arabic}

у себя? На двух первых страницах номера римские, но их не печатать, на остальных арабские — их печатать по правилам как вы сами изложили выше. Вдруг в сгенерированном PDF-файле появится нужное заклинание и в просмотрщике таки будет всё синхронно.

admin аватар

Вообще да,

Вообще да, можно, пожалуй, с этим попробовать поиграть.

Оформление комментариев на сайте

Андрей Викторович, добрый день.
Я периодически читаю вашу гостевую книгу (из любопытства - часто здесь можно найти интересные дискуссии) и натыкаюсь на то, что многоуровневые комментарии не слишком удобно читать.

На вашем сайте комментарии организованы в древовидную структуру: потомками комментария-родителя являются комментарии-ответы (упорядоченные по дате добавления), листовыми вершинами являются комментарии, на которые никто не ответил. И когда от одного конкретного верхнеуровнего комментария разветвляется немаленькое такое поддерево, которое не помещается в экран браузера, становится сложно понять, какой комментарий за каким в этом поддереве следует.

Я это все к чему - возможно ли добавить на сайт сворачивание комментариев при отображении? Если у каждого комментария появилась бы кнопка "-", которая сворачивает соответствующее поддерево (но оставляла бы сам комментарий-корень этого поддерева), то читать было бы удобнее. А по умолчанию все комментарии были бы развернуты, как сейчас.

Надуманная проблема

Это делается элементарно с помощью bash-скрипта (ну или что вы там предпочитакте): забираете себе страницу с комментариями, парсите, и генерируете новую с удобной вам разметкой. Зачем нагружать хозяина сайта какой-то ненужной работой? Да ещё и предполагающей использование жабаскрипта. Не надо так )

admin аватар

Не, ну ладно,

Не, ну ладно, что сайт на пятом друпале, который лет десять как EOL и который я, конечно, переделывать даже пробовать не буду — это ладно, таких подробностей можно и не знать. Но вы хотя бы понимаете, что все вот эти вот "сворачивания-разворачивания" делаются исключительно исполнением кода в браузере — тем самым, за которое я с удовольствием бы отрубал руки всем, кто его применяет, причём делал бы это сам, лично, только топор дайте — вот хотя бы это сообразить не судьба?

Пара возражений =)

Первое возражение — подобное можно сделать с помощью подмножества CSS3 не допускающего Тьюринг-полноту, но код там адский, конечно. Вот пример — при отключенном JS складывание всё равно работает, исходники можно посмотреть там же с включённым JS или через просмотр кода в браузере.

Второе возражение — кажется эту проблему можно решить малой кровью — добавив ссылку на тот коммент, на который данный является ответом, типа такой. Но я конечно понимаю что друпал и все дела, а парится руками проставляя пожалуй не вариант.

admin аватар

Пардон, CSS3 сам

Пардон, CSS3 сам по себе тьюринг-полон, а отрестриктить от него подмножество — это, может, и можно, но эдак можно и до подмножеств JS докатиться (ненуачо, запретить там рекурсию и неарифметические циклы, например, а арифметические циклы ограничить на число итераций некой глобальной опцией, скажем, "ни один цикл да не прокрутится больше 1000 раз", и эту 1000 унести в настройки браузера). Утопия это всё. Требование "CSS не выше первого уровня" хотя бы чётко сформулировано.

А ссылка на парента вроде и не очень нужна, есть ведь отступы.

Parthen аватар

Немного влезу

А может как на LOR'e сделать?
Т.е. оставить все как есть, но по щелчку на комментарий открывается отдельная страничка с этим комментарием и его потомками. Только вот родители комментария не показываются, из-за чего наш комментарий будет во всю длину.

admin аватар

Ага, ну я уже

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

Отступы, к

Отступы, к сожалению, трудно посчитать при выходе из вложенной ветки комментариев. Если бы в дополнение к отступу был бы какой-нибудь визуальный символ (вертикальная пунктирная линия или что-то такое), то их можно было бы быстро посчитать. А посчитать пустоту на глаз очень трудно...

Здравствуйте,

Здравствуйте, будет ли толк в плане становления программиста, перед началом изучения программирования, изучить линукс и английский. Или пока что достаточно тех знаний о линуксе, которые есть в вашей книги. Насчет английского, я не знаю как правильно подбирать слова для своих переменных, я начинаю путаться в этих переменных, потому что плохо знаю английский; потому и родилась идея усвоить английский как следует.

admin аватар

Linux не надо

Linux не надо "изучать", его следует просто начать использовать. В процессе он сам "изучится".

Что касается английского — это, несомненно, штука полезная, и, больше того, для профессионального программиста совершенно необходимая. Но недостаточное знание английского — это совершенно не повод откладывать освоение программирования: с переменными всё просто, берёте словарь и используете нужные слова, заодно словарный запас поднимете. Хуже с комментариями, там нужно хоть чуть-чуть уметь строить фразы; но на начальном этапе без комментариев можно обойтись. Если боитесь, что в собственной программе потом не разберётесь (а это возможно), пишите себе заметки по-русски, только делайте это в отдельном файле, а не в самой программе. Например, можно в отдельном текстовом файле написать, за что у вас отвечает каждая из подпрограмм; это в любом случае очень полезно само по себе, даже если по-русски :-)

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

Мой камень преткновения

> Просто вы английский освоите одновременно с программированием

А такая тактика работает с математикой? Спашиваю, потому что она этим самым камнем для меня и стала (в противовес английскому), когда я читал главы из первого тома про представление чисел с плавающей точкой и двоичную логику. Передаю "Привет!" мантиссе, области определения и области значений. Именно эти темы заставили меня остановиться в изучении программирования. Уже несколько месяцев не могу их освоить. Есть какая-то неопределенность и ощущение, что раз я эти темы не знаю, нужно все учить с самых азов. И я все еще хочу научиться писать код, мечтаю о своей терминальной программе. Как думаете, стоит ли пропустить их и наверстать упущенное позже и пока заняться программированием?

admin аватар

С математикой в

С математикой в целом — да, работает; параграфы с 1.3.4 до конца "математической" главы можно оставить на потом. А вот первые три — про комбинаторику, системы счисления и двоичную логику — ну вот лично мне кажется, что всё-таки нельзя. Комбинаторика, возможно, нужна не вся из того, что в соответствующем параграфе изложено, но если вообще её не понимать, то потом будут трудности при изучении систем счисления. Сами системы счисления тоже нужны вроде бы не все, но общие принципы нужно понимать, и для этого на мой взгляд там дан самый что ни на есть минимум. Ну а без логики потом будут сложности с условиями в if'ах и циклах. Будут-будут, можете не сомневаться.

Возможно, нужен какой-нибудь человек, знающий математику, который вам объяснит, что к чему. Вообще там ничего сложного нет, вот та же мантисса — это просто один из компонентов представления числа, и там сразу же написано, который из них, и как устроено всё представление вместе; может быть, вы просто испугались термина? Ну так не надо пугаться. А вот без понятия функции, которое базируется на областях определений и значений, конечно, вообще ничего не выйдет, и если его вам в школе не сформировали, то я вообще не представляю, что с этим делать. Хотя наверняка есть такие люди, которые представляют и могут. Просто я не учил никого математике всерьёз, с методической подготовкой у меня тут так себе.

> Просто вы

> Просто вы английский освоите одновременно с программированием, и при освоении у вас стимул будет и постоянная практика, то есть одно другому ещё и поможет.

С этим согласен. Кстати не только программирование, но ещё и чтение мануалов в этом помогает, а для освоение линукса оно нужно.

Изучение линукса

> Linux не надо "изучать", его следует просто начать использовать. В процессе он сам "изучится".

Что-то мне это кажется сомнительным, поскольку я видел тех кто пользовались линуксом уже долгое время, но всё ещё спотыкались на каких-то довольно простых вещах.

Хотя, если пользоваться именно как средой для программирования — может и правда сработает.

У мозга есть такое слово — зацикливаться на уже знакомом действии. Если пользователь, пусть даже линукса, уже привык включить компьютер, ввести логин/пароль, нажать на меню, запустить браузер, открыть пару сайтов, потыкать ещё пару-тройку программ по необходимости, а по окончанию работы выключить компьютер, то он вполне может это делать годами, не только не продвигаясь в изучении, но и даже забывая старое.

> Что-то мне это

> Что-то мне это кажется сомнительным, поскольку я видел тех кто пользовались линуксом уже долгое время, но всё ещё спотыкались на каких-то довольно простых вещах.

Значит, не достаточно долгое время линуксом пользовались. Либо эти довольно простые вещи им были не нужны (как пример: поставить задачу в cron - вещь простая, однако я делаю это редко и постоянно забываю формат записи времени в crontab).

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

Так же и с линуксом.

admin аватар

Борщ, говорите? :-)

Гыгыгы :-) Вот уж с борщом оно точно так не работает — я видел хозяек, которые одно и то же блюдо готовят так, что при его употреблении хочется зажать нос и закрыть глаза, и ещё желательно, чтоб вкусовые пупырышки на пару минут выключились. И так — год за годом всю жизнь, без малейших сдвигов.

А один мой бывший студент уехал в Германию в магистратуру, сидит там уже семь, что-ли, если не восемь лет, а по-немецки до сих пор не шпрехает.

Ну ладно, с

Ну ладно, с борщом я погорячился, там надо еще обратную связь собирать от тех, кто этот борщ ест, чтобы улучшать качество (правда, к сожалению, нельзя исключать фактор, что люди будут нахваливать твое блюдо исключительно из вежливости). В линуксе обратная связь все-таки есть всегда: если сделаешь там что-то не так, то ничего просто не заработает. Или заработает так, что разгребать потом будешь.

А у студента в Германии мотивации не было, мне кажется. Значит, в его окружении можно спокойно жить без нормального знания немецкого.

admin аватар

Да конечно

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

Иной вопрос, что ну живёшь же в стране, и явно там останешься, вокруг толпы носителей языка, а сам немецкий изучать по мне так одно удовольствие. Я когда-то в Германии два месяца прожил, чуть было не заговорил (ну не заговорил, конечно, так, совсем простые бытовые ситуации научился разруливать). Мне бы сейчас туда опять, я за полгода шпрехать начну нормально, с ошибками, с акцентом, но бегло. Так ведь вот нет, не хочет.

admin аватар

Если цель

Если цель научиться программировать, то "пользоваться именно как средой для программирования" бессмысленно, цель достигнута не будет. В *nix-системе нужно именно жить, делать там всё, что вообще делается с помощью компьютера, то есть ни для каких целей другие системы не применять.

Но вот "сначала изучить Linux, а потом уже..." — это, извините, полный бред. Linux можно "изучать" всю жизнь, это процесс бесконечный. А если кто-то на одном и том же то и дело спотыкается, но категорически не желает слазить в интернет и узнать, как и что — так с этим вообще ничего сделать нельзя, это личностная особенность, тут к психологам.

Шаблоны поведения

> В *nix-системе нужно именно жить

Я имел ввиду, что если просто пользоваться линуксом на компьютере, как единственной системой, то этого мало. Мой опыт говорит, что это так не работает. У меня есть знакомые, которые в линуксе запускают несколько нужных им программ (как правило GUI), а в консоли умеют выполнять несколько готовых команд, причём ещё и набирая их по бумажке или копируя из старого текстового файла и за несколько лет их навыки ничуть не продвинулись.

А вот если в линуксе, помимо всего прочего ещё и программировать, возможно это будет уже лучше. Я это и имел ввиду под "пользоваться как средой для программирования". Но мне кажется, что всё равно мало. Надо ещё стараться подмечать свои паттерны привычных действий и по возможности упрощать их, пользуясь возможностями системы.

> Но вот "сначала изучить Linux, а потом уже..." — это, извините, полный бред. Linux можно "изучать" всю жизнь, это процесс бесконечный.

В такой формулировке — да. Но если добавить ограничения, то на мой взгляд, это уже разумно. Я бы сказал:

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

Купить чистый диск + какой-нибудь переходник на USB, затем поменять его местами с встроенным в комп, затем на чистый диск поставить линукс, что можно будет уже делать безбоязненно, имея неограниченное число попыток, если что-то пойдёт не так. А после установки, старый диск можно подключать через переходник и брать с него нужные данные.

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

1. Что такое таблица разделов, чем MBR отличается от GPT и как они хранятся на диске, а так же адресация LBA и CHS. О второй достаточно знать, что она уже не используется, но всё ещё хранится в таблице разделов из-за совместимости.
2. Что такое начальный загрузчик, откуда он берётся в системах на базе BIOS и UEFI и как его поменять и настроить.
3. Иерархия файлов и каталогов в UNIX-подобных системах: всё начинается с / без всяких там C:, команды монтирования/размонтирования и навигации.
4. Файлы устройств типа /dev/sda, /dev/sda1 и команда dd, которой можно их дампить в файл или из файла писать на устройство, а так же монтирование loop mount, что бы достать файлы из образа целого раздела или диска не записывая его на диск.
5. Как устанавливается и настраивается конкретный выбраный дистрибутив. Для этого прочитать handbook / release notes. Там же могут быть и знания по пунктам 1-4.

В общем, нужно иметь достаточно знаний, чтобы уверенно сделать бекап данных с раздела Windows/MacOSX, если они на компе уже есть и не впадать в панику, если что-то работать в итоге не будет, а спокойно разобраться и всё починить.

Что интересно, большая часть всего этого не является специфическим для линукса, а требуется знать и для перехода на другую версию Windows, например.

> А если кто-то на одном и том же то и дело спотыкается, но категорически не желает слазить в интернет и узнать, как и что

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

Пример. До этого, я при каждой загрузке компа (примерно раз в месяц) заново вручную открывал все программы которые мне нужны постоянно, включая эмулятор терминала в котором я вручную открывал несколько вкладок и переименовывал их.

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

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

> так с этим вообще ничего сделать нельзя, это личностная особенность, тут к психологам.

Так нельзя сделать или всё-таки можно, но с помощью психолога?

Вы написали

Вы написали вещи, которые для переходящего на Линукс - не нужны, и даже вредны, ибо могут создать у человека ощущение того, что Линукс - это что-то сверхестественное, супер сложное и с ним может справиться только матерый ИТ спец. В результате, человек останется на Винде. Для чего человеку, который переходит на Линукс, знать об адресации, таблицах разделов и прочие вещи? Когда я переходил на Линукс, я эти вещи не понимал, тем не менее мне это не помешало совершить тот самый переход. Хватит чистого диска на каких-то 120 Гб, на который установить Линукс, соглаясь со всеми пунктами по умолчанию. Все. Ну а дальше по ходу уже разбираться что там и как устроено. Не надо усложнять простые вещи!

Установка системы

> Хватит чистого диска на каких-то 120 Гб, на который установить Линукс, соглаясь со всеми пунктами по умолчанию.

Вариант с чистым диском я предлагал. Но что если у тебя какой-нибудь современный ноутбук у которого SSD распаян прямо на плате?

ПК для Linux

современный ноутбук у которого SSD распаян прямо на плате

Такая дичь вроде как только на макбуках встречается. Но пользование макбучком как бы намекает, что человек нормальным специалистом становится не хочет. Технически грамотный человек не будет покупать одноразовый ноутбук с распаянным накопителем.
Макбучки и прочая глянцевая техника вообще не способствует развитию, а приучает к потреблядству. Зачем вообще может понадобится ставить линукс на ноутбук с распаянным SSD? Подобная техника предназначена для гламурных IT-хипстеров, пишущих на "модных язычках" типа жабаскрипта и при этом по недоразумению называющихся программистами.
Сам по себе линукс вполне нормально работает практически на любом железе, продающемся на барахолках.

eMMC распаян

Отстали вы от жизни. В самых дешевых ноутбуках eMMC является единственным накопителем, и он, естественно, распаян на материнской плате. Это как SD-карта, но в виде BGA-чипа.

admin аватар

То надо взять

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

Убунту на Termux на Android как альтернатива старому компьютеру?

Хоть у меня на ноуте и установлен FreeBSD, но устройство весом под три килограмма не является достаточно удобным, чтобы таскать его с собой на случай "а вдруг будет несколько свободных минут, чтобы попрактиковаться".
Дело в том, что книгу ещё можно почитать посреди рабочего дня, но вот на практику работы с кодом в конечном итоге остаётся только вечернее время -- то самое время, когда мозг уже отказывается работать с освоением нового материала. Как тут быть? Искать устройство полегче?

В ходе чтения первого тома, я открыл для себя Termux на "ВЕДРОйде", и за счёт этого дружба с консолью терминала начала расти более интенсивней, и, можно сказать, даже чуть более играючи. Например, работа с потоками и редактор текстов vim стали уже чуть ли не родными за какую-то неделю. Но, добравшись в книге до раздела с описанием работы с языком Паскаль, обнаружил что в репозиториях Termux'а нет соответствующего компилятора -- было досадно, так как пришлось снова откладывать практику на вечернее время. Но днём следующим обнаружил возможность запустить Ubuntu через Termux, и сразу полез проверять доступность fpc и nand -- всё было на месте -- радости полные штаны. :)

В итоге вся основная практика по книгам у меня сейчас проходит на мобильном устройстве. В домашних условиях на выходных я подключаюсь с ноутбука к телефону с помощью ssh, а для пятнадцати-минутных набегов (в будние дни) прикупил для удобства лёгонькую блютуз-клаву. Счастлив как слон. :)

admin аватар

Ну, я бы такого

Ну, я бы такого никому никогда не посоветовал, но в вашем случае может сработать. Видимо, это какие-то ваши личностные особенности. А индикацией тут служит ваше "счастлив как слон" :)

Установка

А вот если в линуксе, помимо всего прочего ещё и программировать, возможно это будет уже лучше.

Учитывая, что без использования bash'а линуксом пользоваться не слишком удобно, мягко говоря, программировать юзеру придётся практически сразу.
А если ещё принять во внимание "решения", используемые в "современном" вебе, то практически сразу же встанет вопрос создания скрейперов для человеческого представления информации с посещаемых сайтов. Опять же, какое-никакое, а программирование (пусть даже в баше).

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

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

admin аватар

Фигассе простыня :-)

если просто пользоваться линуксом на компьютере, как единственной системой, то этого мало.

Смотря для чего. В предисловиях к книге требование сформулировано более жёсткое: использовать unix-подобную систему, в которой всё делать в командной строке. Для целей книги — научиться программировать — этого достаточно.

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

Тут есть одна проблема: новичок всего этого не знает, в каком направлении копать — не знает, и, самое главное, когда остановиться — тоже не знает. В принципе там и не надо останавливаться, вот только если он изучение программирования оставил "на после линукса", то до программирования дело вообще не дойдёт. Ну то есть возможно, что на выходе получится почти готовый unix-админ, которому потом на пару месяцев стажировки в какой-нибудь провайдер или крупную сетку, и будет хорошая работа и много денег; но, возможно, он свой шанс на более интересную работу (и на бОльшее количество денег, кстати) при этом упустит. Возможно, и нет, если такого шанса изначально не было, но мы этого не знаем.

или всё-таки можно, но с помощью психолога?

Я не психолог и возможностей психологов не знаю. А ещё я не уверен, что найдётся такой психолог, который поймёт, в чём тут заключается проблема, поскольку для этого нужно быть "немножко сисадмином".

Parthen аватар

У человека выше

У человека выше простоая проблема -- прокрастинация. Тут не психолог нужен, а прокрастинотолог.
У IT-бороды было интервью с одним -- Максимом Дорофеевым, где он научно-популярно объяснил что это и как с этми бороться.

> Тут есть одна

> Тут есть одна проблема: новичок всего этого не знает, в каком направлении копать — не знает, и, самое главное, когда остановиться — тоже не знает.

Ну надо просто или осилить разобрать комп и поменять хард на чистый или осилить сделать бекап всей инфы с компа на внешний носитель. И осилить поставить ОС. Я думаю что даже новичок с этим за день-два справится. Вот и критерий когда можно начинать программировать — если сумел поставить линукс, он загружается, в терминал заходится, компиляторы поставились — значит можно программировать.

> А ещё я не уверен, что найдётся такой психолог, который поймёт, в чём тут заключается проблема

Это не специфично для компа. Например, если кран капает из соединения между смесителем и изливом.
вместо того что бы раскрутить его, купить прокладку, поменять, закрутить, человек так годами и подставляет под него баночку. Или если розетка шатается, он так и включает в неё приборы, придерживая пальцами, вместо того что бы её поменять или просто подтянуть винты.

admin аватар

> осилить

> осилить поставить ОС

Ну это как бы я думал, что само собой предполагается. Найти стороннего исполнителя на эту задачу не так просто, всякие "компьютерные мастера" при слове "линукс" обычно сдуваются.

При всём моём уважении, это не называется "изучить линукс".

> Или если

или если человек не знает, когда "что бы" или "чтобы" пишется слитно или раздельно, он так и будет писать как попало, вместо чтоб разобраться. А правило-то простенькое: если убрать "бы" и при этом смысл меняется или вообще фраза разваливается, то это часть слова и пишется слитно. ВотЪ :-P

Установка системы.

> Ну это как бы я думал, что само собой предполагается.

Ну, понятно что взять какую-нибудь мандриву и прокликать "далее" сможет кто угодно. Я имел ввиду, поставить таким образом, что бы не потерять нужные данные.

Кроме того, я думал в первую очередь о дистрибутивах у которых нет графического инсталлятора, например CRUX, Arch, Gentoo, Slackware, причём у некоторых из них даже текстового инсталлятора нет.

Если уж пользоваться только командной строкой — так по идее нужно начинать это делать прямо с установки.

Создать разделы, прогнать mkfs по ним, смонтировать, распаковать тарболл, написать конфиг загрузчика, загнать его исполнимый файл на EFI System Partition, в раздел DOS Boot или в начало диска...

Да и debian/ubuntu ставятся таким образом с помощью программы debootstrap.

Цель Ваша?

Читаю Ваши комментарии, и у меня есть вопрос: какая цель всего того, что Вы пишите? Если показать, что Вы умеете установить Арч, я Вас могу поздравить с этим. Вот только для начинающего пользователя Линукс знать утилиты CLI для создания разделов в текстовом режиме, создания файловых систем на них и прочее, - как я уже писал, НЕ НУЖНО (хотя в этом нет никакой высшей математики, если что)! Совсем! Иначе, образно говоря, получается, что для того, чтоб учиться водить автомобиль, нужно для начала знать, как его собрать.

В том, чтоб установить Линукс на один диск с данными и при этом не потерять эти самые данные, на самом деле, тоже нет ничего сверхестественного. Достаточно, чтоб на Виндовс был создан отдельный раздел для данных, на котором они хранятся. Все. При установке Линукса на тот же жесткий диск выбираем пространство, на кототом нет данных, точкой монтирования выбираем "/", форматируем все это дело в ext4, и далее просто читаем, что нам говорит графический инсталятор и если надо, меняем настройки. Хотя лучше, как тут писалось выше, взять отдельный диск или даже комп для Линукса.

Не нужно пугать людей своими текстами об Арч, Генту, адресациях и т.д., создавая у них впечатление о Линуксе как о каком-то космическом корабле! Большинство Линукс дистрибутивов в установке - проще чем Виндовс, и упомянутые Вами вещи переходящим на Линукс - не нужны! Для того, чтоб начать программировать и пользоваться Линукс, надо освоить базовые терминальные программы (их не так много) и работу в текстовом редакторе! ВСЕ! Остальное - по ходу пьессы, как говориться!

admin аватар

Я бы сказал, это

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

слазить в

слазить в интернет и узнать, как и что

Кстати, да. Линукс прививает такую нездоровую привычку, лазить в интернет чтобы узнать, как и что.

Но с тех пор, как я перешёл на OpenBSD, мне с этой привычкой хочется бороться.

Потому что уже несколько раз было такое: лезу в интернет, с трудом нахожу неполную и устаревшую информацию, начинаю тыркаться, открываю, наконец, man -- а там всё актуально и подробно расписано. Становится неловко, я бы даже сказал, стыдно.

В общем-то, это и в линуксе часто работает с манами. Поэтому, я бы вместо "но категорически не желает слазить в интернет" писал "но категорически не желает читать маны".

> Поэтому, я бы

> Поэтому, я бы вместо "но категорически не желает слазить в интернет" писал "но категорически не желает читать маны".

Ладно, вот такой пример: купил ты многокнопочную мышь, подключил к компу, она работает, но одна из специальных кнопок ничего не делает и в xev или xinput на неё вообще никакой реакции. В интернете по ней или нет результатов вообще или есть, но без ответов. Что делать будешь?

Можно годами пользоваться этой мышью, забив на эту неработающую клавишу. А можно таки разобраться и написать к ней свой драйвер. Твой вариант?

Только ли в нежелании читать маны дело?

admin аватар

Мне вот всегда

Мне вот всегда было интересно, накой вообще чёрт на мышке больше трёх кнопок (включая колесо, которое тоже кнопка, но не все это знают). А драйвер писать только потому, что мышь такая попалась — мышь-то не вечна, как-то так жалко времени. Разве что если хочется развлечься и разобраться, как в линуксе устроены драйверы нетривиальных hid-устройств.

Parthen аватар

Протестую

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

admin аватар

Про средюю

Средняя кнопка в unix-системах — это "paste" для классического буфера обмена. Вот выделить где-то текст, причём просто выделить, без всяких дополнительных команд, а в другом месте нажать на среднюю кнопку. Конечно, можно и Shift-Ins нажать, если только приложение эту комбинацию себе не забрало.

Про остальные кнопки — я как бы в курсе, что они делают, я не понимаю, как их можно использовать :-) Ну, видимо, кто-то понимает.

Parthen аватар

>я не понимаю,

>я не понимаю, как их можно использовать
Я и говорю -- биндить на них сочетания клавиш, которые нужно экстренно нажать

admin аватар

Ишшо раз: я

Ишшо раз: я знаю, что можно биндить. Я не понимаю, как это может быть удобно, и даже не так чтобы удобно, а хотя бы просто не настолько неудобно, чтобы этим хоть раз воспользоваться.

Следующий

Следующий левел вебмакакинга. Теперь головой думать совсем не обязательно, глупая машина сделает все сама.

GitHub начал тестирование AI-ассистента, помогающего при написании кода:
https://www.opennet.ru/opennews/art.shtml?num=55411

Не очень я верю,

Не очень я верю, что там будет что-то невероятно умное.
Может, чуть поумнее автодополнений кода во всяких IDE.

admin аватар

Там, как я

Там, как я понял, авторы жутко горды тем, что могут сгенерить кусок кода для работы с JSON, если в комментарии дать его формат. Охренеть какое достижение :-) (особенно если учесть, что вообще любое использование JSON — это признак ментального расстройства).

Почему Ваш сайт без https?

Добрый день, собственно вопрос: почему не используете https? Может он уже и мелькал тут где-нибудь.

admin аватар

давить этот ваш https

https — это бесконечный источник технических проблем и нарушений интероперабельности. Криптография, увы, неспособна стоять на месте, постоянно меняются применяемые наборы алгоритмов, и в мире достаточно моральных уродов, считающих, что "устаревшие" алгоритмы можно не поддерживать. На сообщение об отсутствии пересечения множеств используемых криптометодов на сервере и в браузере я натыкаюсь вполне регулярно.

Так вот, по этому поводу лично я глубочайшим образом убеждён, что в отсутствие крайней необходимости применять https не просто не следует, а вообще нельзя. Этот сайт не работает с номерами банковских карт, с чувствительными персональными данными и прочей информацией такого рода; следовательно, https тут быть не должно; и, заметим, если бы такого рода информация на сайте обрабатывалась, следовало бы сделать доступными через https только те страницы, где это происходит (технически довольно занудно, но надо). К счастью, этот вопрос тут не стоит.

Инициативу гуглофашистов "давайте зашифруем весь интернет" я не поддерживаю и поддерживать не собираюсь, а с самими гуглерами в последнее время не общаюсь и стараюсь не здороваться.

передача паролей

Андрей Викторович, а как на вашем сайте организована передача паролей на сервер для проверки (в гостевой книге есть возможность залогиниться)?

Чистым текстом (из того расчета, что если перехватят - то и пусть перехватывают, тут банковских данных нет), или есть какой-то протокол проверки паролей внутри самого HTTP, позволяющий скрыть сам пароль при перехвате?

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

Если это не секрет, конечно.

Про пароли в HTTP и HTTPS

Протокол проверки паролей внутри самого HTTP таки есть, но есть и один нюанс — там используется MD5, который был взломан, поэтому использовать его не стоит — как верно написал Андрей Викторович, криптография такая штука которая постоянно меняется.

В принципе я свой сервер настроил так, что он предоставляет сайты и через HTTP, и через HTTPS — на выбор пользователя.

> можно слать чистым текстом на сервер в заголовке HTTP-запроса

Ещё момент — так, делать не стоит всё равно, стоит пароль посолить.

admin аватар

Да взломать-то

Да взломать-то его взломали, но там, насколько я понимаю, всё равно какой-то перебор вариантов делается, хотя и ускоренно-"интеллектуальный", то есть чтобы отреверсить конкретную md5-сумму, нужно потратить ненулевое количество ресурсов. "Ценность" паролей от этого или подобного сайта не столь велика, чтобы на это тратиться.

Иной вопрос, что Http Digest я в действии уже много лет не видел, cms'ки все предпочитают свою систему аутентификации, оно и понятно — доступ-то они тоже сами регулируют.

admin аватар

Там просто

Там просто открытый текст, никаких наворотов. Я на сайт хожу через tinyproxy, которая физически на той же машине (на другой её виртуалке), а с самой этой проксёй связываюсь через ssh-туннель. Ну а если кто-то заморочится и стырит пароль обычного пользователя, то большого шухера он при этом не наведёт, как мы понимаем.

Вопросы и предложения

Здравствуйте, Андрей Викторович,
я в уже не совсем юном возрасте захотел освоить программирование, понять как вообще работает компьютер, и освоить те вещи, которые нельзя не знать. О ваших книгах узнал на ютьюбе, на одном популярном канале. Там ваши книги рекомендовались потому, что там все объясняется пошагово, и собрано все, что нужно.
Если честно, - я пока что ушел не очень далеко в изучении материала, но активно продвигаюсь, что меня очень радует.
Все объяснено доступным для понимания языком. Но все равно, некоторые вещи бывает понять трудно. Я ставлю для себя целью именно понять все, что там описано. Бывают некоторые примеры кода(для Вас они наверное очень простые), которые не понятны. А спросить особо не у кого, в интернете ничего не нахожу(может быть просто не умею искать). Часто бывает, что если человек что-то не может понять, обучаясь по книге, - он забрасывает вообще обучение. Я конечно же не собираюсь пока что ничего забрасывать, в принципе все хорошо.
Я не знаю, приходила ли Вам такая идея или нет, - а почему бы не создать FAQ по книгам? Можно создать сообщество в контакте, или канал в телеграмме, где читателю смогут объяснять друг другу непонятные вещи из книги. А так же разбить вопросы по категориям, отдельным книгам. Подскажите, - не планируете ли Вы чего-то подобного, или, может быть, уже есть?
Так же было бы хорошо, если бы подтвердили активацию моего профиля. Cпасибо.

admin аватар

Кто использует

Кто использует VK, тот похож на...

Ёлки-палки, вот находятся же люди, предлагающие мне — мне!!! — создавать группы в VK и каналы в телеграме.

Нет, не будет такого. Точнее, что-то подобное может возникнуть без моего участия (увы, невозможно запретить людям реализовывать даже самые бредовые и омерзительные идеи), но никогда не будет мной поддержано.

Ах, да, про профиль — он активен, подтверждения не требует. Форма для логина расположена в гостевой книге.

Вопросы и предложения

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

admin аватар

На конкретные

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

И да, мой отказ относится к "контактам-телеграмам". Я не использую коммуникационные среды, имеющие (как целое) владельца. И никому не советую. Что касается конкретно VK, то я вообще не понимаю, как можно настолько себя не уважать, чтобы пользоваться этой мерзостью.

Где можно найти

Где можно найти то, что Вы писали о соцсетях?

admin аватар

Первая статья

Первая статья на эту тему под заголовком "Осторожно: частный сервис" изначально была написана (между прочим, ещё в 2006 году! нынешних "социалок" тогда ещё не было) для сайта "независимый обзор провайдеров", но там сейчас недоступна, ибо сайт заброшен. Её можно прочитать в сборнике "Проблемы информационного общества", стр.32.

Вторая статья, тоже исходно написанная для НОПа, как ни странно, там вот прямо сейчас вроде бы доступна: https://www.providernet.ru/article.90.php Если эта ссылка протухнет, текст статьи можно найти по её заглавию "Театр контентного абсурда. Социальные сети: история одной терминологической деформации".

А как насчёт

А как насчёт канала в IRC или XMPP?

admin аватар

В XMPP можно,

В XMPP можно, почему бы нет. В IRC — нельзя по тем же причинам, по которым и всякие социалочки: единая сеть IRC-серверов почила в бозе лет двадцать как, сейчас любой IRC-канал намертво привязан к конкретному серверу, а у сервера, как мы понимаем, есть конкретный владелец.

Parthen аватар

Не знает

Не знает человек, что поделать.
Нужно какой-то сервис аля Spyware Watchdog, только русский. Чтобы каждому не объяснять, а один раз все подробно написать и потому только ссылочку кидать. Я думаю на днях заняться таким.

Среды для обучения программированию

Мне интересно, вы думаете, они вообще ни на что не годны?

Всё-таки люди пишут, кто-то ими пользуется. Неужто совсем зря?

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

Ну и есть же люди, кто программистами не будут. Возможно, их тоже следует научить хотя бы какому-то приблизительному пониманию, что такое программирование?

Люди

Люди пользуюутся многими вещами, которые на самом деле годятся разве что на то, чтоб улететь в мусорник! Взять те же смарфтоны...

Я лично не понимаю, для чего нужно скачивать и установливать IDE, которая может потреблять не мало ресурсов компа, если в том же Линуксе есть все, что нужно для того, чтоб этому программированию учиться. Ничем кроме человеческого не желания углубляться в то, как обучать студентов программированию и пробиванием интересов одной не скромной компании, среду которой мне лично в ВУЗе пихали, это обьяснить нельзя.

admin аватар

Тут не тот

Тут не тот случай, тут всё хуже — автор коммента оказался из секты "среды кумир".

admin аватар

Мне интересно,

Мне интересно, вы думаете, они вообще ни на что не годны?

Абсолютно.

Всё-таки люди пишут, кто-то ими пользуется. Неужто совсем зря?

"Зря" — это когда нет положительного эффекта. От любых "сред" эффект жёстко отрицательный, лучше вообще никак не учить, чем учить с помощью "сред".

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

Эта реплика не имеет отношения к делу. Как сделать, чтобы ученику было интересно — написано в предисловиях к первому тому.

Ну и есть же люди, кто программистами не будут. Возможно,

А вы, глядя на ученика в школе, прямо сразу можете сказать, что он не будет программистом? Я бы, пожалуй, не взялся. Ну то есть через некоторое время, конечно, мне будет всё ясно (хотя не каждому преподавателю будет ясно, увы), но — даже мне — отнюдь не сразу. А "обучение" с помощью всевозможных "сред" дорогу в серьёзное программирование практически полностью закрывает.

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

И вот что, на мой сайт вы явно забрели по ошибке. Интернет большой, сходите куда-нибудь ещё.

UPD: Судя по продолжению, которое, конечно, так и останется в очереди на премод, предыдущий коммент про так называемую "среду кумир" был тоже от вас. Я не знаю, откуда берутся такие, как вы, и мне это даже до определённой степени интересно — но не до такой, чтобы с вами что-то обсуждать. Ещё раз, не будете ли вы столь любезны освободить мой сайт от своего присутствия? Дальнейшие ваши комментарии премод не пройдут, мне тут кумиросектанты не нужны.

Если это

Если это конечно же не "секрет фирмы", не поделитесь, как Вы определяете способен ли ученик стать программистом?
Я с обучением людей дел не имел, но разве это всё не вопрос времени? В плане что если ученик А за неделю не схватывает что такое условно указатели, а ученик Б с легкостью, то при усердии и усидчивости ученик А за 2 недели, месяц или более поймет в итоге и в прикладном плане в будущем не будет уступать.

admin аватар

Усидчивость

Усидчивость при изучении программирования скорее вредна, чем полезна. Программирование должно доставлять удовольствие, если это не так — все мучения будут бесполезны.

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

Parthen аватар

Вдобавок к обсуждению Gemini

Обнаружил, что формы ввода у Gemini таки есть, и они даже используются. Вот здесь, например:
gemini://hugeping.ru/messages.gmi

Есть подвох

У Gemini есть один критический на мой взгляд минус, делающий его таким же "простым" протоколом как "просты" программы на питоне — и то, и то использует довольно большие и страшные уже готовые вещи. Получается этакий обман — выглядит просто, но реализовывать такие системы сложно. В случае Gemini сложность в TLS:

> Use of TLS for Gemini transactions is mandatory.
>
> Use of the Server Name Indication (SNI) extension to TLS is
> also mandatory, to facilitate name-based virtual hosting.

У меня что-то не

У меня что-то не так с браузером, или часть фотографий обложек книг на главной странице этого сайта на боку? Если проблема у вас воспроизводится, может исправите?

admin аватар

Нет, не

Нет, не воспроизводится. Пока что я ни в одном браузере не видел, чтобы обложки оказались не в той ориентации.

Parthen аватар

Такая же

Такая же проблема в Firefox. В Palemoon такого вроде не было

admin аватар

Это уже

Это уже интереснее. А какие из обложек "на боку"? И на других страницах это проявляется? Или только на главной?

Parthen аватар

Вместо тысячи

Вместо тысячи слов:
https://parthen.neocities.org/screenshot.png

admin аватар

Занятно, что

Занятно, что это две из четырёх самых старых картинок на сайте, и я их с 2009 года не трогал, как выложил, так ровно в той версии они и лежат. Palemoon появился не так давно, я на него перешёл года два назад, а раньше я сам сидел на firefox, и никогда никаких проблем с ориентацией фотографий не видел.

Кто-нибудь ещё сомневается, что с увеличением номера версии происходит деградация, а не прогресс?

UPD: выстриг из этих картинок exif-теги, теперь должно быть нормально. К сожалению, точно этого сказать не могу — свежих файрфоксов в хозяйстве нету.

Кто-нибудь ещё

Кто-нибудь ещё сомневается, что с увеличением номера версии происходит деградация, а не прогресс?

А чем не прогресс? Браузер научился читать ориентацию метаданные из картинки, а там она повёрнута.

admin аватар

Ага, и тем самым

Ага, и тем самым поломал обратную совместимость с тем статус-кво, который существовал со времён появления поддержки формата JPG в браузерах. То есть вот четверть века браузеры (все!) игнорировали exif'овские теги, и всех это устраивало, а теперь нашёлся какой-то чистоплюй, который заявил, что устоявшийся подход, к которому привык весь мир, видите ли, расходится с его, чистоплюя, пониманием правильности.

Найти б этого урода да вздёрнуть. Или просто пристрелить.

Проблема

Проблема лечится командой
$ mogrify -strip gameserv_cover.jpg

Заодно оно удаляет метаданные о том, какой камерой сделана картинка с какой выдержкой и прочие.

Я всё ещё

Я всё ещё сомневаюсь, поскольку если сделать

wget http://www.stolyarov.info/files/gameserv_cover.jpg

А потом geeqie gameserv_cover.jpg, то оно тоже на боку.

GIMP говорит, что в этом файле есть тег EXIF orientation и спрашивает как открывать. Так что мне не совсем понятно, то ли из ффокса убрали поддержку ориентации, то ли наоборот добавили.

admin аватар

Добавили. И всё

Добавили. И всё сломалось.

Parthen аватар

Не ради

Не ради интереса, но какая у вас версия Palemoon?
У меня с обновлением прилитело отключение мозиловских расширений, так что буду откатываться. А на какую версию не знаю.

admin аватар

На основной

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

Сейчас, вроде,

Сейчас, вроде, все обложки отображаются нормально. Как пофиксили, если не секрет?

admin аватар

Да очень просто

Да очень просто пофиксил — выстриг оттуда всю exif'овую муть командой convert -strip.

Кто-нибудь ещё

Кто-нибудь ещё сомневается, что с увеличением номера версии происходит деградация, а не прогресс?

Про файерфокс это уже давно аксиома.

На боку..

На боку "Практикум на ЭВМ: многопользовательский игровой" сервер и "Архитектура ЭВМ и системное программное обеспечение." И не только на главной. На странице книги также.

Я часто слышу,

Я часто слышу, чтобы стать программистом, нужно заниматься этим каждый день: ни дня без кода(вот у меня не получается каждый день: день математика, день программирование). Так ли это?

admin аватар

Чтобы стать

Чтобы стать программистом, нужно, чтобы программирование доставляло удовольствие. Если это не так — ежедневное биение лбом об стену не поможет.

Спасибо, за

Спасибо, за ответ! Буду двигаться в том же духе.

Спасибо за интересную книгу

Просто хотел выразить благодарность за столь интересную и понятную книгу, начал читать и меня воистину увлекло, первый раз такое с книгами по программированию.
Спасибо, Вам большое.

По

По не-программированию у А.В. тоже хорошие книги. Пособие по LaTeX'у мне помогла оформить дипломную работу.

buq аватар

Google профинансирует

Google профинансирует добавление поддержки Rust в ядро Linux.
https://www.opennet.ru/opennews/art.shtml?num=55349

Как раз давно хотел переходить на какой-нибудь BSD. Кто-нибудь может поделиться своим опотым работы с FreeBSD и/или OpenBSD?.

buq аватар

Спасибо

Всем большое спасибо за ответы. Попробовал OpenBSD и FreeBSD. Заметил что FreeBSD работает быстрее чем OpenBSD, но мне больше понравилось OpenBSD. Вот несколько причин почему:
1) Главная репозитория исходников находится на ихних собственных серверах(не на гитхаб в отличии от FreeBSD. Лично мне это внушает доверие).
2) Минималистичня операционная среда по дефолту(twm, xterm, vi).
3) Хорошая среда для тех кто хочет изучать UNIX. Весь код OpenBSD 1.5 миллион линий кода. FreeBSD - 7.5+ мил., Linux - 15+ мил..

Про общие достатки могу отметить то, что юзерские приложения по умолчанию установливаются в /usr/local/bin а не смешиваются с системнами инструментами в /usr/bin как в Linux.

К сожалению пока-что не могу поставить OpenBSD на основную машину. Потому что fuck you Nvidia. Постоит пока на нотбуке пока появится нормальный драйвер для Nvidia. Пока не знаю установить ли FreeBSD на основную машину.

Тоже есть

Тоже есть желание попробовать OpenBSD. Установил на свой ноут пока что голую систему, по мере возможности буду ее допиливать, если не надоест :) Единственное, если установить OpenBSD рядом с Линуксом, который загружается с помощью GRUB, и иметь возможность потом с нее загрузиться, я правил /boot/grub/grub.cfg файл, иначе GRUB ее не подхватывает

buq аватар

Кстати

Мне, кстати, тоже нужно было как-то совмещать OpenBSD с Linux.
Но я не правил grub.cfg а "решил" это несколько иным способом.
Просто установил OpenBSD на второй диск, и изменил с БИОС-а дефолтный бут-драйв.
А когда нужен Linux, просто нажимаю DEL(на Lenovo) во время запуска и выбираю нужный бут-драйв.

пока появится

пока появится нормальный драйвер для Nvidia.

Я бы на это не рассчитывал. Никаких тенденций, указывающих на то, что он когда-нибудь появится, нет ни со стороны Nvidia, ни со стороны OpenBSD. Купите лучше недорогой Radeon.

Про OpenBSD

OpenBSD довольно хороша, сидел на ней где-то год — и был в полном восторге. Устроена гораздо проще, понятней и удобней FreeBSD и дистров линукса.

Например, меня абсолютно вынесло, что это чуть ли не единственное место, где таки используют нормальный strlen, а не как в musl, FreeBSD или боже-упаси-glibc. Думаю это о многом говорит.

Тот же подход они продолжают и в прикладных программах — если кто не видел, зацените httpd — очень удобный и простой веб-сервер, после него всякие апачи и нгинксы смотрятся странно. Ещё я до сих пор пользуюсь cwm в качестве своего оконника -- настолько он мне показался удобным и приятным.

Единственная фундаментальная проблема с опятами — что они порой слишком увлекаются безопасностью. Вот тут они могут читаемость кода послать далеко и надолго (про эффективность я вообще молчу). Но в целом они пожалуй имеют самый адекватный код и самое удобное окружение.

Ну и проблема практическая, из-за которой во многом я сейчас на линуксе — OpenBSD меньше. (Да, звучит как оправдание виндузятника перед линуксоидами. =) ) Меньше поддерживает железа (и я не про число аппаратных платформ — их-то больше), меньше поддерживает програм.

В общем, попробуйте, даже если не зайдёт, думаю это будет интересно. =)

Примеры с FreeBSD и

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

Ну и проблема

Ну и проблема практическая, из-за которой во многом я сейчас на линуксе — OpenBSD меньше. (Да, звучит как оправдание виндузятника перед линуксоидами. =) ) Меньше поддерживает железа (и я не про число аппаратных платформ — их-то больше), меньше поддерживает програм.

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

Несколько месяцев

Несколько месяцев сидел на FreeBSD. До этого сидел и сейчас сижу на ArchLinux. Из отличий от Arch'а вспоминается более нормальный пакетный менеджер, который при каждой установке пакета не начинает обновлять всю систему (какая же всё-таки ерунда этот Rolling Release), попроще и поприятнее инит и OSS вместо ALSA (идея чтения и записи в специальные файлы конечно более UNIX'овая, но звук выдаёт заметно более худший), ещё нет procfs. В остальном, как в Arch'е сидел в vim, Alacritty, Zathura, Firefox и i3wm, так и продолжил сидель во FreeBSD.

Тем ни менее, Linux перед FreeBSD имеет одно огромное преимущество - возможность нормальной статичестой линковки (Musl), а это дорогого стоит. Как раз сейчас и занимаюсь сборкой своей системы на статическом Мusl'е, беря за основу LFS (Linux From Scratch). Если в зависимости ядра добавится rust, то останусь на старых версиях ядра, а дальше буду думать.

Ставил и OpenBSD, но в ней нет моей раскладки клавиатуры (dvorak-programmer). Её, конечно, можно написать, более того Colemak так и добавили, но программы в OpenBSD слинкованы динамически, так что оно того не стоит.

Кстати,

Кстати, сравнительно не давно видел сон о том, что работаю с OpenBSD. Очень возможно, это был вещий сон

Кто-нибудь

Кто-нибудь может поделиться своим опотым работы с FreeBSD и/или OpenBSD?

У меня OpenBSD на десктопе в качестве основной и единственной системы последние несколько лет. Сбежал с линукса, да. Доволен.

Поделиться опытом могу в формате ответов на конкретные вопросы. Спрашивайте.

buq аватар

В первую очередь

Я бы хотел узнать есть-ли заметная разница в быстродействии по сравнению с Линукс?.
Играете ли вы в видеоигры? есть ли нормальные драйвера для видеокарт NVIDIA?

Я бы хотел

Я бы хотел узнать есть-ли заметная разница в быстродействии по сравнению с Линукс?

Разница есть, линукс быстрее во многих случаях. Иногда разница заметна на глаз. Обычно нет. Ну или я уже привык.

Играете ли вы в видеоигры?

А как же. Не так давно много гонял в первый квейк (на современном движке, конечно) и моды к нему (Arcane Dimensions великолепен, рекомендую), я имею в виду сингловый режим, не сетевые бои. Часто залипаю в серьёзных головоломках chroma и xye. В последнее время иногда расслабляюсь в Minetest (это свободный клон майнкрафта). В планах есть научиться играть в нетхак или ещё какие-нибудь рогалики. Какое-то время назад поигрывал в приставочные игры на эмуляторах (SNES, Sega, PS1, GameBoy), сейчас уже нет.

есть ли нормальные драйвера для видеокарт NVIDIA?

Нет. В линуксе, кстати, ситуация хоть в целом и чуть лучше, но и там нормальных драйверов для NVIDIA нет.

Parthen аватар

Я спрошу

Есть ли в BSD системах что-то типо .deb пакетов? То есть чтобы скачал с сайта, запустил, оно само установилось и подтянуло зависимости?
Если сравнивать с Линуксом, настройки больше или меньше?

Есть ли в BSD

Есть ли в BSD системах что-то типо .deb пакетов?

В OpenBSD есть пакетная система с отслеживанием зависимостей и прочими мелкими удобствами. Есть официальный репозиторий (и зеркала, конечно) с пакетами. Если какой-то пакет в репозитории собран не совсем так, как вам нужно, можно собрать самому из портов (я, например, пересобираю gtk+3 без зависимости от dbus). Если какого-то пакета нет, можно самому создать порт для него (например, я делал себе порт youtube-viewer'а, поскольку готового порта/пакета нет).

(Что касается других BSD-систем, то там пакетные системы вроде бы тоже есть, насколько я знаю. Но в любом случае валить все BSD в одну кучу не надо. Они, по сути, отличаются даже больше, чем разные дистрибутивы линукса. Я здесь делюсь опытом именно про OpenBSD.)

То есть чтобы скачал с сайта, запустил, оно само установилось и подтянуло зависимости?

Несколько извращённый способ, на мой вкус. Если мне нужно поставить какой-то пакет, то я пишу pkg_add имя_пакета. В дебиано-деривативах я бы писал apt-get install имя_пакета. В обоих случаях пакет установится и подтянет зависимости, вручную ходить на сайт и скачивать что-то не нужно.

В целом, дерево зависимостей пакетов в OpenBSD гораздо менее развесистое, чем в дебиане и его производных.

Если сравнивать с Линуксом, настройки больше или меньше?

Меньше.

Parthen аватар

>То есть чтобы

>То есть чтобы скачал с сайта, запустил, оно само установилось и подтянуло зависимости?
Такое нужно, когда в репозиториях нет программы или есть только старая ее версия.
А так, спасибо за ответ!
Еще вопрос: что с сообществом? Понятно, что поменьше линуксового, но к примеру решение своих проблем я на русском найду?

решение своих

решение своих проблем я на русском найду
Увы, решения многих проблем на русском вы и для Линукса с его обширным сообществом не найдете. Вообще, конечно, для современного "айтишника" (хоть программиста, хоть админа) знание английского хотя бы на минимальном уровне абсолютно необходимо. Это не снобизм, не думайте (сам "читатель", за 7 лет английского в школе и 10 лет с перерывами в универе так и не "разговорили"), а прописная истина, как бы банально это не звучало. Чтение FAQ и всяких вики на английском - не такая уж и сложная задача, как может показаться, но, конечно, нужно попрактиковаться, и скоро увидите, что все они достаточно шаблонны.

Parthen аватар

Не, у меня 80%

Не, у меня 80% проблем вполне решаются со знанием только русского. На английском я умею читать, но не люблю

Когда-нибудь вы

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

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

Parthen аватар

Так, еще раз.Я

Так, еще раз.
Я могу читать на английском. А если еще и не по памяти, а со словарем, то вообще что угодно.
Дело в том, что я не хочу, а почему обсуждается в треде ниже.

Не то чтоб

Не то чтоб полюбить, но вот изменить свое отношение к английскосу - это вопрос вашего персонального роста.

admin аватар

Какие там

Какие там стадии были — отрицание, гнев, торг... короче, всё равно придётся английский полюбить :-) Любовь, говорят, зла, полюбишь и козла.

Parthen аватар

Ну, полюбить

Ну, полюбить оно вряд ли, а смириться придется.
Хотя мне в принципе плохо даются естественные языки, с моей-то памятью.

Мне сложно вас

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

Да и вообще, мне не очень понятны разговоры про "нелюбовь" к иностранному языку. В том, что вы освоили "скорочтение" на русском, но не освоили на английском, этот язык ведь совершенно не виноват.

Память,

Память, внезапно, тренируется, разнообразные мнемотехники тоже никто не отменял. Вы же, как я понял из обсуждений здесь, школу заканчиваете (или только закончили)? Вам лет-то сколько, простите? Если сейчас жалуетесь на память, что же, лет через 8-10 пополните армию популярных нынче нытиков в стиле: "Ой, как у меня с утра всё болит! -После чего? -После 25..."? Возможно, излишне резок, но не загоняйте сами себя в надуманные/навязанные рамки - много в жизни упустите.

Parthen аватар

Да неужели?!

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

Так вот эти ваши мнемотехники я знаю, причем читал их в оригинале. Только вот оказывается, что мнемоника (как минимум по методу Цицерона) требует воображения, причем активного, конкретного и творческого. А у меня оно слабое, пассивное и абстрактное.
Я могу без проблем запомнить абстрактное -- идею, номер, программу.
Но!
1) С запоминанием образов, слов и т.п. у меня большууущие проблемы
2) Проблемы даже не столько с запоминанием, я могу через интервальные повторения учить вполне сносные объемы. Проблемы в том, что в случае с языками у меня это отзывается сильной головной болью, ибо не доставляет совершенно. Почему? Да потому что логики в современных естественных не особо. (В прошлом была латынь, очень стройный язык) А все, что я не могу понять у меня вызывает желание разобраться. А поскольку фиг его поймешь, откуда взялись исключения и проч. в языках, а докапываться без лингвистического образования дело неблагодарное.
В эсперанто, пусть и с поехавшим сообществом, все строго и понятно, что мне очень доставляет.

фиг его

фиг его поймешь, откуда взялись исключения и проч. в языках
Откуда? отсюда, например. А вы думали, комитеты стандартизации и им сочувствующие начали свою активную деятельность только с приходом "айтишной эры"? :)
Кстати, если вдруг кому-то интересно почитать о языках и их причудах, категорически рекомендую "Путешествие по карте языков мира" Алексея Леонтьева - в сопливом ребячестве ей зачитывался.

"Путешествие по

"Путешествие по карте языков мира" Алексея Леонтьева - в сопливом ребячестве ей зачитывался.

О, аналогично! :-)

Я тут где-то в комментариях упоминал язык луганда, так это оттуда.

У меня с этой книгой в паре обычно вспоминается другая прекрасная книга по этой теме, которой я тоже зачитывался: В.А.Плунгян "Почему языки такие разные?" Также рекомендую всем, кто интересуется.

admin аватар

Лучше полюбите.

Лучше полюбите. Достигается очень просто — практикой. Когда исчезает потребность лазить в словарь и прочие гугл-транслейты, вот это вот "не люблю" обычно исчезает вместе с ними. А программист, у которого трудности с английским — это зрелище довольно жалкое.

решение своих

решение своих проблем я на русском найду?

Я бы на это особо не рассчитывал.

Ну и в целом, в OpenBSD принято решение проблем искать читая документацию (поскольку разработчики там уделяют документации весьма пристальное внимание). А вся документация в системе только на английском. Так что, не зная английского, пользоваться системой будет затруднительно.

Знания

Знания русского языка - есть хорошо, но советовал бы Вам учить английский, ибо без него в ИТ - не так комфортно, скажем так. Английский нужен не только в случаях, когда нужной инфы на русском нет: у меня бывало, что подача нужной мне информации на русском, была для меня не так понятна... Нашходил ту же информацию на английском, и там она оказывалась подана удачнее, короче, и в разы яснее... Разумеется, это зависит от автора, но факт есть факт.

С переводами

С переводами иногда бывает вообще тьма кромешная.

Я вот купил то ли в прошлом, то ли в позапрошлом году книжку Панос Луридас "Алгоритмы для начинающих". Хорошее издание, шрифты, бумага, твёрдый переплёт, оригинал издан в MIT Press, темы интересные в содержании мелькают, хоть и называется "для начинающих". Короче, позарился. А потом стал читать и на первых же страницах наткнулся на словосочетание "программные языки". Я даже не сразу сообразил, что это переводчица (некто Е.М.Егорова) так перевела "programming languages" (и далее на протяжении книги так же, я проверял). Стало обидно и жалко потраченных денег, честно говоря.

В общем, примерно с тех пор я решил вообще, по возможности, не покупать техническую литературу, переведённую с английского, а читать в оригинале. (Художественную англоязычную литературу-то я давно только в оригинале стараюсь читать.)

Parthen аватар

Английский я

Английский я знаю, просто не люблю.
Ну вот серьезно. Я в Википедии предпочту эсперанто английскому. Да на латыни мне удобнее читать, чем на английском, не знаю почему так.

admin аватар

Причину нужно

Причину нужно установить и устранить. Всерьёз заниматься даже не программированием, а вообще компьютерами при таких особенностях восприятия просто невозможно.

Parthen аватар

Причина

Причина довольно проста -- я с детства читаю скорочтением (никто меня этому не учил, как-то само пришло). А на английском я так читать не могу, приходиться вчитываться в каждое слово, из-за чего кажется, что я торможу. Это и бесит

Судя по Вашим

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

Звучит так, как

Звучит так, как будто просто недостаточно практики. Вполне вероятно, что если вы будете много читать на английском, то и там скорочтение "как-то само придёт".

admin аватар

Могу разве что

Могу разве что посоветовать освоить скорочтение на английском. Понимаю, что это непросто, но программист не может себе позволить испытывать проблемы с чтением английских текстов. Вот то есть вообще совсем никак. Тут или дружить с английским, или бросать занятия программированием — всё равно без английского ничего толком не выйдет.

Без

Без английского может, например, получиться так называемый "программист 1С". Впрочем, к программистам он имеет примерно такое же отношение, как морская свинка к морю.

При скачивании

При скачивании .deb пакета и установки его в систему, он зависимости не подтягивает. APT этим занимается: он сам и скачивает .deb пакет, и все зависимости.

Parthen аватар

Само собой,

Само собой, просто в deb пакете, как я понимаю, они прописаны, что позволяет apt найти их и установить

admin аватар

В пакетах

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

admin аватар

"подтянуло

"подтянуло зависимости" -- это не достоинство, это недостаток

Parthen аватар

Предлагаете

Предлагаете вручную искать их и устанавливать? Долговато

admin аватар

Когда нет

Когда нет механизма автоматического отслеживания зависимостей, авторы пакетов делают их существенно менее зависящими от внешних условий. Если же говорить о том, что я предлагаю — то единственной допустимой зависимостью времени исполнения я считаю ядро системы, а допустимыми зависимостями времени компиляции — компилятор, систему сборки (posix make или gnu make, но не cmake) и — что уже сомнительно — в каком-то виде так называемую стандартную библиотеку, хотя лучше без неё.

Время покажет,

Время покажет, что и как будет.

admin аватар

Вообще странно,

Вообще странно, чем гуглу мешает Linux и зачем они его хотят прикончить. Вот зачем им весь тот мрак, который творится с вебом — это понятно, но Linux-то чем им помешал? Они ж его сами активно используют.

buq аватар

Думаю что

Думаю что конечная цель -- внедрение бекдоров. Иначе как обьяснить такое радикальное изменение в ядре. Если бы они хотели реализовать поддержку Раста в форкнутой ветке ядра -- это другое, но никак не в основной же. Теперь получается что для компиляции ядра нужно будет 2 компилятора ?!?!.

А насчет "поделиться опытом" я переводил с английского "can you share your experience about ...". Я не русскоязычный, поэтому порой трудно выбирать нужное выражение.Я скорее имел в виду впечетления :).

>Теперь

>Теперь получается что для компиляции ядра нужно будет 2 компилятора ?!?!.

Давно ядро сами собирали? Вы всерьёз считаете, что для сборки ядра достаточно иметь только gcc? Вот в моей генте список зависимостей только для исходников ядра:
* dependency graph for sys-kernel/gentoo-sources-5.12.13
`-- sys-kernel/gentoo-sources-5.12.13 ~amd64
`-- dev-lang/perl-5.34.0 (dev-lang/perl) ~amd64
`-- sys-devel/bc-1.07.1-r3 (sys-devel/bc) amd64
`-- sys-devel/bison-3.7.6 (sys-devel/bison) ~amd64
`-- sys-devel/flex-2.6.4-r1 (sys-devel/flex) amd64
`-- sys-devel/make-4.3 (sys-devel/make) ~amd64
`-- sys-libs/ncurses-6.2_p20210123 (>=sys-libs/ncurses-5.2) ~amd64
`-- virtual/libelf-3 (virtual/libelf) amd64
`-- virtual/pkgconfig-2 (virtual/pkgconfig) amd64
`-- sys-apps/sed-4.8 (sys-apps/sed) amd64
Так что два компилятора, это как раз вообще не проблема, в отличии от всего остального.

buq аватар

Нет, недавно

>> Давно ядро сами собирали?
Нет, недавно. У меня тоже стоит Генту на основной машине, я знаю что такое сборка ядра. И про все остальные зависимости тоже знаю.

>>Вы всерьёз считаете, что для сборки ядра достаточно иметь только gcc?
Я не говорил что для сборки нужен только GCC. Я сказал что нужно будет 2 компилятора.

>> Так что два компилятора, это как раз вообще не проблема.
Для многих, в том числе и меня, это как раз и есть проблема. Ядро с растом будет весить гораздо больше, а драйвера написанные на расте будут работать в разы медленнее.
Сколько времени возможно будет оставаться на старых версиях? Может года 3-5 максимум.
В конце концов надо будет или смириться, или попрощаться с Linux-ом.
Внедрение раста == деградация.

> Думаю что

> Думаю что конечная цель -- внедрение бекдоров.
Думаете у программистов из гугла не хватает квалификации делать бэкдоры на си?

buq аватар

Не сомневаюсь

У них квалификации вполне хватает.
Вопрос в том, как и кто будет проводить одобрение и внедрение в ядро кода написанной на расте.
Даже не сомневаюсь что эти группы тоже будут финансироватсья гуглом.
По мне, верить в то, что компания как гугл тратит миллионы чтобы Linux "работал получше" -- не здраво.
Внедрение раста это самое радикальное изменение в ядре.
Все счастливо пользовались Linux-ом,
но вдруг гугл решил что Си -- нехорошо и небезопасно, и надо срочно перейти на Раст потому что,
цитата из их сайта, "Memory safety has been an enduring challenge for software developers",
"Memory safety security defects frequently threaten device safety, especially for applications and operating systems.
For example, on Android, we’ve found that more than half of the security vulnerabilities we addressed in 2019 resulted from memory safety bugs".
Ну если дело в андроиде, возьми и внедряй в твой андроид что хочешь. Зачем трогать основную ветку Linux.

Очень много бессмысленных вещей, много вопросов и ноль ответов.

Все счастливо

Все счастливо пользовались Linux-ом

Возражаю. ;-)

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

buq аватар

Ну ладно

Ну ладно может не так уж и счастливо:), я согласен
что у Линукса есть проблемы, но слушайте,
в отличии от шпионской MacOS или боже упаси windows, GNU/Linux это просто чудо.

в отличии от

в отличии от шпионской MacOS или боже упаси windows, GNU/Linux это просто чудо.

Чудом оно было лет 15-20 назад. А сейчас просто меньшее из зол.

Я потому и ушёл на OpenBSD, что в линуксе у меня стало пропадать ощущение, что это "моя система", которую я могу настроить так, как мне надо. Это всё ещё возможно (я до OpenBSD пользовался CRUX'ом именно ради таких возможностей), но трудозатраты начинают зашкаливать.

Дополнительный плюс OpenBSD, кстати, в том, что там практически нет возможности запускать закрытые проприетарные программы (в ней нет Wine, нет FreeBSD'шного Linuxulator'а, и готовых бинарников, вроде игр или скайпа, под неё никто не собирает, есть разве что dosbox, да приставочные эмуляторы). В линуксе моей принципиальности не хватало на полный отказ от проприетарщины, иногда бывало скачивал игрушку-другую.

admin аватар

По мне так сей

По мне так сей вопрос не так прост, как кажется.

Сразу скажу, я не считаю, что цель тут внедрение бекдоров. Но если так всё-таки считать, то дело будет явно не в том, у кого хватит квалификации их делать. Дело скорее будет в том, у кого не будет квалификации их вылавливать. Среди тех, кто пишет ядро, Си знают поголовно все, причём не просто знают, а, я бы сказал, знают на уровне "бог-80"; а вот раст, гм...

Среди тех, кто

Среди тех, кто пишет ядро, Си знают поголовно все, причём не просто знают, а, я бы сказал, знают на уровне "бог-80"; а вот раст, гм...

Это смотря кого включать в "тех, кто пишет ядро". Если каждого, кто прислал патч, который был принят, то наверняка не поголовно, не все и уж точно не на уровне "бог-80".

Вот, хотя бы, была тут недавно "забавная" (в кавычках потому, что было бы смешно, если бы не было грустно) новость: Работников Huawei подозревают в публикации бесполезных Linux-патчей для повышения KPI

Возможно, это

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

admin аватар

Даже интересно,

Даже интересно, как вы себе представляете такой "обмен опытом" в комментах на сайте.

Элджер, С++

Здравствуйте, Андрей Викторович
В конце своей книги, посвященной С++, вы рекомендовали к прочтению Дж. Элджера. У того в одна из глав книги посвящена коллекциям. В общем у меня вопрос, не являются ли коллекции контейнерами и если нет то в чем между ними отличие?
Спасибо.

admin аватар

Во-первых,

Во-первых, коллекции в том виде, в котором их рассматривает Элджер, не обязаны быть контейнерами. То есть то, что рассказано в главе про коллекции, несомненно, возможно использовать для построения контейнеров — таких классов, которые хранят в себе объекты некоторого типа и больше ничего не делают. Но весь тот же материал можно использовать для построения проблемно-ориентированных структур данных под конкретную задачу, и это уже никакого отношения к контейнерам иметь не будет.

Во-вторых, я никогда не утверждал, что вот прямо всё, что есть у Элджера, следует использовать.

"Умные" указатели

Недавно несколько людей пытались меня упороно убедить в том, что при программировании на языке C++ использовать "сырые" указатели это якобы моветон, поскольку есть же "умные" указатели, которые ничем не хуже, зато спасают от глупых ошибок и облегчают написание серьезных программ, а в серьезных компаниях за использование простых указателей могут чуть ли не уволить с работы. В связи с этим, возник вопрос, как вы относитесь к идее таких "умных" указателей (если не брать во внимание, что зачастую имеется в виду часть пресловутой "стандартной" библиотеки, а рассматривать эту идею в целом) ?

Указатели

Недавно несколько людей пытались меня упороно убедить в том, что при программировании на языке C++ использовать "сырые" указатели это якобы моветон, поскольку есть же "умные" указатели

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

admin аватар

Я сам использую

Я сам использую умные указатели, когда под них есть задачи — например, вот тут: http://www.intelib.org на них повешен reference counting.

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

Побочные эффекты

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

admin аватар

> Если внутри

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

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

Parthen аватар

Мучаю указатели

Конец страницы 413: "Все это работает только при условии, что мы не забыли перед началом работы со списком сделать его корректным, занеся значение nil в указатель first".
Так вот вопрос, зачем? Понятно, что nil надо совать в конец списка, чтобы знать где его конец, но зачем совать nil в указатель?
На странице 411 сказано, что "превратите ваш указатель в корректный пустой список". Но как указатель может быть списком, если это переменная?
А если мы просто показываем, что указатель ни на что не указывает, почему это критически важно для работы программы?

admin аватар

Что, читать

Что, читать совсем не умеем, да? Или просто не хотим? Тяжело же будет.

Вот фраза в книге, вы же её сами цитируете.

> "Все это работает только при условии, что мы не забыли перед началом работы со списком сделать его корректным, занеся значение nil в указатель first".

Эта фраза вами грубо вырвана из контекста, но контекст легко восстановить: фраза завершает абзац, рассказывающий, что при добавлении элементов в начало списка нет никакой разницы, добавляется самый первый элемент в пустой список, или же уже не первый (то есть в списке что-то уже есть). Больше того, книжка снабжена рисунками, подробно показывающими, как это происходит: на стр.412 -- как это выглядит, когда список не пуст, а на стр. 414 -- как те же самые действия выглядят, когда список пуст. А в тексте приведён код, который это делает (и то, и другое -- код, ещё раз повторю, абсолютно одинаков, при добавлении в начало нет никакого специального случая при пустом списке).

При этом, процитировав фразу, что сие будет работать только при условии, что в указатель будет занесён nil, вы ещё имеете наглость вопрошать, зачем выполнять это условие. Ответ тут даже Капитана Очевидность, наверное, поставит в тупик, тут скорее нужен Адмирал Ясенпень: да чтоб работало, твою мать! написано же! Вот прямо в той фразе написано, которую вы цитируете! То есть вы сами!!! цитируете!!! фразу из книги, которая является ответом на ваш вопрос!!! и тем не менее продолжаете задавать вопрос.

А что будет, если в указатель НЕ занести nil, вообще-то проследить проще пареной репы. Если в него nil не занести, то в нём, как и в любой неинициализированной локальной переменной, будет мусор, и именно этот мусор (а не nil) на шаге, показанном на рис.2.8 "c)", окажется в поле next нашего только что созданного единственного элемента списка -- в результате выполнения оператора tmp^.next := first. Так что список как был некорректным, так и останется некорректным -- у него в последнем элементе не будет nil.

> "превратите ваш указатель в корректный пустой список". Но как указатель может быть списком, если это переменная?

А как ещё по-вашему должен выглядеть пустой список, то есть список, не содержащий ни одного элемента? Где здесь вообще источник этого вопроса, что конкретно тут может быть не очевидно? Может быть, вы предпочтёте рядом завести ещё одну переменную, какого-нибудь типа boolean, чтоб она показывала, пустой наш список или нет? Ну так это и лишняя память, и (что намного хуже) лишняя обработка специальных случаев в коде.

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

Parthen аватар

Так, кажется я

Так, кажется я понял в чем проблема.
Получается, в список нельзя просто в конец вставить nil?
Т.е. нельзя написать что-то типо:
tmp^.next := nil
И если нет, то почему?

admin аватар

Например,

Например, потому что тогда процедура занесения первого элемента в пустой список будет отличаться от процедуры занесения последующих элементов (в непустой список). А ещё потому что проблемы, как узнать, пуст список или нет, это всё равно не решит, а решать её как-то надо.

Parthen аватар

А, ну тогда все

А, ну тогда все просто, спасибо!

admin аватар

Шо, really?

Шо, really?

Parthen аватар

Ну да, теперь

Ну да, теперь все встаёт на свои места

Parthen аватар

>Что, читать

>Что, читать совсем не умеем, да? Или просто не хотим? Тяжело же будет.
Не можем. Если бы я был настолько ленив, я бы не дошел до указателей :)
Устал я, заколебался. Пытаясь решить те задачи, я на отладку я потратил 2 дня (причем полных, вот прям встал с утра и сижу до ночи). А средства отладки проходятся через несколько глав, так что в моем случае "отладка" -- это бесмысленный поиск ошибок взглядом.
Так что когда я это читал и писал, я тормозил по полной. Но вот сейчас я тоже не особо понял, пойду перечитывать
P.S. Текст я между прочим тогда перечитывал -- раз десять точно. Дало бы это еще что-нибудь с замыленным взглядом.

на отладку я

на отладку я потратил 2 дня (причем полных, вот прям встал с утра и сижу до ночи).

-------------------------------------------------------

Нет смысла сидеть целыми днями, ибо чем больше часов Вы что-то изучаете, тем сложнее Вам понять материал. Мое мнение - учиться надо желательно утром, когда голова - свежая еще, и максимум 3..4 часа в день, ну может 5. Я - не преподаватель, но так я это дело чувствую. Возможно, Андрей Викторович меня поправит...

admin аватар

Если всё именно

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

Но есть, увы, и плохая новость: если, невзирая на все имеющиеся иллюстрации, вы всё же не можете понять, о чём идёт речь, то, по-видимому, сейчас вы к дальнейшему освоению программирования не готовы с хорошим запасом. Будете ли вы к этому готовы когда-то в будущем — это, как говорят, вопросительный вопрос. Увы, одним упорством вы тут ничего не победите.

например,

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

-------------------------------------------------------

Андрей Викторович, Вы это - серьезно?

admin аватар

Абсолютно

Абсолютно серьёзно, а что?

Удивило, что

Удивило, что учителя, которые преподают информатику, могут это не понимать

Parthen аватар

Лично мой

Лично мой "Заслуженный учитель России" считает, что введение в школьную программу работу с файлами это, цитирую "совершенно ненужное усложнение и без того сложной школьной программы".
Хех, про указатели я вообще молчу.

admin аватар

Так а что вас

Так а что вас удивляет-то? Существуют люди, мнящие себя профессиональными программистами, для которых ручная работа со списками — далеко за горизонтом понимания. Что до школьных учителей, ну вот взять математику, скажем, а школу — обычную, не математическую (и вообще не спецшколу; в спецшколах оазис); как думаете, много вы в простых школах найдёте учителей математики, умеющих решать неравенства, в которых неизвестное помещено под знак квадратного корня? Ну, там, что-нибудь вроде

sqrt(x+50) > x-3

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

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

Деепричастия

> что к деепричастиям вроде "улыбается"

Эээ, но ведь это не деепричастие. Это возвратный глагол настоящего времени третьего лица.

Деепричастие от этого слова — "улыбаясь".

admin аватар

Гм, ну да,

Гм, ну да, согласен. Всё-таки лингвистика — не мой предмет :-)

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

Что до

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

Не осилят потому, что не захотят осиливать или вот прямо-таки не смогут, даже если у них будет серьёзная мотивация?

Спрашиваю потому, что мне это весьма удивительно всё. Сам я с указателями особо не работал и, в целом, на низком уровне ничего не пишу. Но, увидев с неделю назад начало этого треда, решил себя проверить и довольно быстро набросал программы для обеих задач (на си, паскалевского компилятора нет под рукой), даже не читая предшествующие задачам объяснения. Хотя у меня, конечно, бэкграунд приличный: спектрум в детстве, паскаль в школе, ассемблер и си в институте. Но неужели в мире всё так плохо?

admin аватар

Именно не

Именно не смогут.

Понимаете, вы вон уже давно освоили Си, а это значит — ощущаете на уровне печёнки, что за зверь этот указатель. Очень трудно себе представить, уже умея с ними обращаться, насколько на самом деле указатели — материя мозголомная.

В рамках сюжета

В рамках сюжета "а вот еще мнение...". У Joel Spolski есть статья ("The Perils of JavaSchool"). Одна из тем: стенания автора из-за перевода курса 6.001 в MIT со scheme на python. По его словам, неспособность освоения указателей и рекурсии позволяли студенту в самом начале учебы понять, что пора уделить время другой специальности (не CS).

admin аватар

Ну, с

Ну, с указателями-то, положим, в Scheme напряжёнка. Но статья Спольски да, доставляет :)

Есть, кстати, русский перевод: https://habr.com/ru/post/122665/

Молодому

Молодому человеку просто доставляет с Вами общаться, ведь вопроса там действительно нет.

Parthen аватар

А как без git хостера?

Ну вот я начал задумываться о том, чтобы между компами синхронизировать мои програмки.
И как я понимаю, вы против Github и его аналогов. Если с Github все понятно, то чем его альтернативы плохи?
При условии, конечно, что я не храню код только у них, а их сервер использую для передачи кода и решения связанных с кодом проблем (багтрекер и иже с ним, к примеру)

Дело в

Дело в скупости. Моя VPSка обходится мне в 2.5€/мес (условно говоря, заниженная стоимость одного похода в московскую столовую). Open source web frontend'ов для этих дел не мало. Среди них есть монстры, которые сравнятся с github по возможностям, а есть легковесные без js и лишнего функционала (cgit, к примеру).

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

К слову, вы еще сможете прикрутить к своей VPSке какой-нибудь сервер для игры (учитывая мощности, тестовый), баг-трекер и почтовый агент. И я тут еще не затрагиваю полезность полученных знаний в ходе настройки своего сервера, а она велика.

admin аватар

Они плохи,

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

Ещё раз напоминаю, цены на VPSки начинаются от двух баксов в месяц.

Что такое указатель?

Здравствуйте, на консультации перед экзаменом преподаватель спросил: "Что такое указатель?". На что кто-то из студентов ответил, что это переменная, хранящая адрес. Преподаватель сказал, что за такой ответ будет ставить 3, не думая. Сам он говорит, что указатель - тип данных для работы с адресами. В чем здесь подвох, ведь у вас в книге написано то же самое, что ответил студент?

admin аватар

"Подвох" тут

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

Ошибка или нет ?

Добрый день!

Нахожусь на странице, посвященную комбинаторике, а именно на стр 143 первого тома второго издания, где написано определение:
«на самом деле определение факториала натурального числа k считается «число перестановок из k элементов», а то, что факториал равен произведению чисел от 1 до k — это следствие.
Для сформулированной выше задачи ответ составит, таким образом, 7! = 5040 комбинаций.»

Но такое число получается, если перемножать факториал с конца: 7х6х5х4х3х2х1, что не согласуется с определением факториала («произведение чисел от 1 до k)

Возможно, я все-таки что-то не так понял.

Заранее благодарю за ответ!

admin аватар

А что, от

А что, от перемены мест множителей у нас теперь произведение может поменяться? (Вообще-то в высшей математике бывает и так, что может, но не на целых же числах, не классическое же умножение).

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

P.S. вопрос к широкой публике — как думаете, он это всерьёз или это теперь троллинг такой? :-)

Parthen аватар

Всерьез,

Всерьез, всерьез. Мне из моих сверстников IRL говорить не с кем, потому что не о чем. Есть пару знакомых через интернет, с которыми реально можно поговорить, а не поболтать.
А вообще я долго не мог принять того факта, что 0^0=1. Я не могу что-то понять не разобравшись, а как это объяснить так и не понял. Удолетворился тем, что заставил программу начертить график, и там все шло к единице.
А вот недавно узнал, что 0! = 1. Это я вообще хз как работает.

Про "говорить не с кем"

У меня тоже была такая проблема, когда я учился в школе в маленьком провинциальном городе - людей, с которыми можно интересно побеседовать, было не так много. Но, когда я приехал в Москву учиться в университет, то эта проблема отпала совсем. Более того - оказалось, что я для многих людей и сам из разряда "да о чем с ним разговаривать"))

Это все к чему - всегда можно найти единомышленников, и тех, у кого есть чему поучиться.

Parthen аватар

Ну, осталось

Ну, осталось дождаться того, когда я уеду в Москву :)

admin аватар

Насколько я

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

Что касается 0!, то это как раз, как ни странно, очень просто. Вообще считается, что единице равно произведение элементов любого пустого множества :-) Тут можно начать с суммы и вспомнить, как мы считаем сумму элементов: полагаем её равной нулю, затем проходим по элементам и каждый из них добавляем. Ясно, что для пустого множества сумма, вычисленная таким способом, составит как раз ноль, что в общем принять психологически намного легче.

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

Да и вообще, вы же не хотите, чтобы наша любимая формула Це из эн по ка, которую мы в книжке с таким трудом вывели, вдруг перестала работать для тривиальных, в сущности, случаев, когда либо n совпадает с k, либо k равно нулю :-)

Parthen аватар

Хмм, не думал в

Хмм, не думал в таком свете. Спасибо, довольно легко уложилось в голове :)

думаете, он это

думаете, он это всерьёз
Боюсь, да — у меня недавно студенты единицу в квадрат не смогли возвести...

Parthen аватар

А чет тут

А чет тут сложного?

Возведение в степень -- это умножение несколько раз, а умножение -- сложение несколько раз.
В итоге, чтобы возвести во вторую степень надо дважды умножить. По аналогии, умножение на два -- это сложение 4 раза. Значит, 1^2 = 1 + 1 + 1 + 1 = 4

P.S. Какой же бред может генерировать мой мозг, если его не останавливать...

admin аватар

Мама. Вы же

Мама. Вы же пошутили, правда?

Parthen аватар

Вообще у меня

Вообще у меня там все сообщение было в теге *sarcasm*, но он куда-то пропал. Так что да, это шутка :)

admin аватар

Божечки мои, you

Божечки мои, you made my day.

Подсветка вывода команд

Злавствуйте, Андрей Викторович. Можно поинтерисоваться, вы используете в имуляторе терминала подсветку вывода команд, например, в выводе команды ls подсветку каталогов синим или битых сылок красным и т.д.? Или у вас все черно-серое?

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

Parthen аватар

Между прочим,

Между прочим, глянул я сейчас страничку о светофобии на Википедии.
Там утверждают, что максимально удобный цвет для таких людей -- зеленый на черном. Посмотрел, как по мне не только приятнее глазу, но и все более отчетливо видно.
Может это только для светофобии действует, посмотрите кто еще:
https://ru.wikipedia.org/wiki/%D0%A1%D0%B2%D0%B5%D1%82%D0%BE%D0%B1%D0%BE...

The Matrix has you...

Братья сестры Вачовски о чем-то таком подозревали )))

admin аватар

Да ладно :-)

Алфавитно-цифровые терминалы с зелёными буквами существовали задолго до съёмок "Матрицы". Я бы сказал, этот цвет для монохромных терминалов был самым популярным.

Я, скорее, про

Я, скорее, про светобоязнь (да не обидится на меня тов. Pathern) - возможно, что люди с этим недугом яснее других видят, что мир не в порядке и т.д. по тексту. А вообще, конечно, любопытно, что зеленый цвет тут конфортнее - к нему эволюционно у человеческого глаза выше чувствительность. По поводу монохромной зелени - подозреваю, этот люминофор был самым дешевым, а, может, как раз по степени приятности глазу. Сижу вот сейчас, пялюсь в древний (ИЧСХ, зеленый) осциллограф :)

Parthen аватар

Не стоит, я на

Не стоит, я на такое не обижаюсь, это не прямое оскорбление все-таки.
По теме -- светофобию приписывают двум людям: те, у кого проблемы с глазами и те, у кого ненормально высокая светочувствительность. Так вот я из вторых. У меня по сути нет никаких болезней в глазу, но любой свет вызывает боль и психологическое отторжение (я из-за этого терпеть белый цвет не могу). К тому же, вот сейчас я печатаю в белом окошке, и если закрою глаза у меня оно "выжжено" на сетчатке. И что только что обнаружил, я даже с закрытыми глазами вижу, где оно находится.
Хех, я так дойду до стереотипного хацкера: куча темных терминалов с тайлингом и зеленым текстом :)

admin аватар

Раньше я ls'у

Раньше я ls'у цвета откручивал, потом почему-то забил, так что сейчас у меня выдача ls цветная.

В остальном да, серые буквы, чёрный фон. Никакой подсветкой синтаксиса я не пользуюсь.

Цветовая схема

Если кто-то ищет цветовую схему для xterm, могу посоветовать вот эту:

https://how-to.fandom.com/wiki/How_to_configure_xterm/Color_scheme_1 .

У нее приятные не вырвиглазные цвета.

И еще. Кто-нибудь знает, где можно найти предназначение каждого цвета в цветовой схеме для xterm, которые прописываются в .Xresources? То есть узнать за подсветку чего каждый из 16'ти XTerm*color в конфиге отвечает. Можно, конечно, проверить каждый цвет по отдельности, но все же.

Я однажды

Я однажды задался целью сделать себе цвета, которые не будут по яркости сильно отличаться от серого. Получилось вот такое, пользуюсь уже несколько лет, глаза не протестуют (это кусочек моего .Xresources):

#define  BG_COLOR rgb:0/0/0
#define  FG_COLOR rgb:9/9/9

#define  LIGHT_BG_COLOR rgb:3/3/3
#define  LIGHT_FG_COLOR rgb:C/C/C

#define  RED      rgb:A/8/8
#define  GREEN    rgb:8/A/8
#define  YELLOW   rgb:A/A/8
#define  BLUE     rgb:8/8/A
#define  MAGENTA  rgb:A/8/A
#define  CYAN     rgb:8/A/A

#define  LIGHT_RED      rgb:D/8/8
#define  LIGHT_GREEN    rgb:8/D/8
#define  LIGHT_YELLOW   rgb:D/D/8
#define  LIGHT_BLUE     rgb:8/8/D
#define  LIGHT_MAGENTA  rgb:D/8/D
#define  LIGHT_CYAN     rgb:8/D/D

*background:   BG_COLOR
*foreground:   FG_COLOR

*color0:    BG_COLOR
*color7:    FG_COLOR

*color8:    LIGHT_BG_COLOR
*color15:   LIGHT_FG_COLOR

*color1:    RED
*color2:    GREEN
*color3:    YELLOW
*color4:    BLUE
*color5:    MAGENTA
*color6:    CYAN

*color9:    LIGHT_RED
*color10:   LIGHT_GREEN
*color11:   LIGHT_YELLOW
*color12:   LIGHT_BLUE
*color13:   LIGHT_MAGENTA
*color14:   LIGHT_CYAN

Кто-нибудь

Кто-нибудь знает, где можно найти предназначение каждого цвета в цветовой схеме для xterm, которые прописываются в .Xresources? То есть узнать за подсветку чего каждый из 16'ти XTerm*color в конфиге отвечает.

Те консольные приложения, которые используют цвет, обычно исходят из предположения, что цвета примерно укладываются в такую табличку:

0 Black
1 Red
2 Green
3 Yellow
4 Blue
5 Magenta
6 Cyan
7 White
8 Bright Black (Gray)
9 Bright Red
10 Bright Green
11 Bright Yellow
12 Bright Blue
13 Bright Magenta
14 Bright Cyan
15 Bright White

Подробнее, например, тут:
https://en.wikipedia.org/wiki/ANSI_escape_code#Colors

Хэш-таблицы

В первом томе, в месте, где рассказывается о хэш-таблицах, говорится, что обычно размер массива для таблицы выбирается равным простому числу, чтобу уменьшить вероятность попадания двух ключей в одну позицию. Это как-то следует из сказанного выше в параграфе или нет? Сижу, думаю, не могу понять, как простота влияет на частоту "выпадения" одинаковых остатков. Не могли бы вы разъяснить?

admin аватар

Нет, в книге об

Нет, в книге об этом не говорится. Объяснение можно много где найти, вот тут, например: https://medium.com/swlh/why-should-the-length-of-your-hash-table-be-a-pr...

Глаза - это серьёзно

Добрый день. Хотел поинтересоваться о возможности чтения ваших книг в темной теме. Если изменить цвета интерфейсов evince или atril фантазия дает возможность представить и сотворить, то как быть с PDF-ками книг? Ума не приложу, как изменить у самой книги символы на серый и "лист" на черный (искать пробовала, но стоило увидеть "Adobe" или "Windows", как тут же судорожно закрывала вкладку).

*Очень, очень-преочень мои глаза будут благодарны тому, кто соизволит помочь мне (и, наверное, многим другим) в данной задаче.

Спасибо! :*

Parthen аватар

Немного не по теме

>ХотеЛ поинтересоваться
>закрываЛА вкладку?
Что-то не то :)
А по теме -- Aesop вполне умеет, правда текст не серый, а приглушенный белый. Но с моей светофобией вполне ничего, глаза не болели.

В программе Okular

В программе Okular (KDE). Settings -> Configure Okular -> Accessibility -> Change Colors -> Color mode == Change dark & light colors. Там выбираете подходящее вам значение из всего спектра цветов для Dark color и Light color.
Можно еще и хоткей навешать и/или кнопку на тулбар добавить.

Ну, DE (а уж KDE тем

Ну, DE (а уж KDE тем паче) затаскивать себе на машину ради pdf-читалки, имхо, прям не очень затея...

admin аватар

Насколько я

Насколько я понимаю, в зависимости от фантазии создателя пакета подобные приложения могут и не притащить в зависимостях весь свой DE. Я вон eog использую, но самого гнома у меня при этом нет.

Насчет atril или

Насчет atril или evince не знаю, но вот, например, в zathura можно инвертировать цвета через ctrl-r, а затем скомандовать

:set recolor-darkcolor \#RRGGBB

для изменения цвета текста (recolor-lightcolor — соответственно, для фона).

admin аватар

В atril есть Ctrl-I

В atril есть Ctrl-I (опция "inverted colors"), но это не совсем то, буквы получаются белыми, это слишком ярко.

Parthen аватар

Спасибо всем

Спасибо всем тем, кто мне советовал Vim.
Попробовал, прошел пару уроков на vimtutor и мне понравилось. В принципе, я ко всему смог привыкнуть, разве что HJKL меня все еще расстраивает.
Осталось полностью запомнить команды, но думаю решу это как обычно -- повешу их себе на стенку.
В остальном, отпишусь еще, когда буду себя полностью комфортно чувствовать.
P.S. А все почему -- несколько дней назад у меня заболело запястье. Не сильно, просто ноет. Но мотивации хватило :)

Почитай книгу

Почитай книгу "Изучаем редакторы vi и Vim, 7-е издание" автор Роббинс Арнольд. Много интересного узнаешь.

admin аватар

А что, эта книга

А что, эта книга транслирует какое-то тайное знание? :-) Просто при имеющемся в интернете изобилии материала на тему vim мне ещё и книги по нему читать как-то не приходило в голову (возможно, зря).

Получение заработка за счёт доступа к серверу

Здравствуйте, Андрей Викторович! Чтение последних сообщений в Вашей гостевой книге навело на мысль, и мне хотелось бы узнать Ваше мнение на счёт этой мысли...

Допустим, есть некоторая компания, которая разработала программу с открытым исходным кодом и даже с нормальным руководством по её сборке и использованию. Но, чтобы заработать денег, компания предоставляет альтернативный доступ к этой программе в виде платного доступа к своему серверу с этой программой. И пользователю предлагается покупать число запросов к этому серверу, либо скачать исходный код и использовать программу самостоятельно.

Является ли этот способ приемлемым с Вашей точки зрения?

Parthen аватар

Мои 5 копеек

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

admin аватар

Не вижу

Не вижу проблем. Где тут хоть чья-то свобода нарушена? Хочешь — используй, не хочешь — не используй. Это было бы приемлемо даже в том случае, если бы эта фирма вовсе никому не предоставляла никаких исходников и документации. Иной вопрос, что лично я бы такой сервис оплачивать не стал, но я не считаю платные сервисы неприемлемыми.

Копирастия неприемлема по совершенно определённой причине: копирасты считают возможным диктовать сразу всем — вот прямо-таки всему человечеству, а точнее, каждому пользователю любого компьютерного устройства — что можно и что нельзя делать с носителями информации. кому бы таковые ни принадлежали, на компьютерах, кому бы, опять же, таковые ни принадлежали. А тех, кто подчиняться этим (сугубо абсурдным) требованиям не хочет, ещё и смеют называть "ворами" и "пиратами" (за такое вообще в дерьме топить — все прекрасно знают, что такое воровство и что такое пиратство, и ни то, ни другое никакого отношения к созданию копий информации не имеет).

Андрей

Андрей Викторович, а можно вас попросить хотя бы тезисно обозначить "идеологически верные" пути монетизации программ/игр вообще? Вы неоднократно приводили здесь пример инициативной разработки про выкопанную яму метр на метр, за которую просят вознаграждение. Но вот, скажем, написал я (вот натурально я свой собственный) какую-нибудь игрушку, которой решил поделиться с общественностью. Какие существуют способы поиметь с этого что-то осязаемое и при этом не оказаться моральным уродом и т.д.?

admin аватар

Никаких не

Никаких не существует. Хотите зарабатывать деньги — делайте что-то, о чём вас готовы попросить другие люди и что вы без вознаграждения делать бы не стали. Если вы эту игрушку и так сделали бы, по какой такой причине кому-то следует расставаться с деньгами? Чтобы отдавать деньги, нужна внятная причина, нужен ответ на вопрос, чего человек добьётся в обмен на свои деньги. Оплачивая ваше хобби, никто ничего не добьётся.

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

А что если

А что если сделать игрушку(сетевую) свободно распространяемой, но при этом предоставлять за деньги возможность поиграть с другими людьми на моих серверах. В этом случае человек приобретает "место" на сервере. Вычислительная мощность -- величина, вроде бы, довольно материальная, а, если денег платить не хочется, то можно и свой сервер поднять, если хватит навыков.

admin аватар

Ну и? Не вижу

Ну и? Не вижу проблем, кроме разве что одной: денег никто не заплатит :-) В любом случае вы здесь не на игрушке зарабатываете, а на поддержке сервера.

А если,

А если, допустим, автор какого-то произведения согласен с тем, чтобы люди могли свободно обмениваться данным произведением (ну, скажем, музыкальным произведением) между собой, но при этом не хочет, чтобы его произведение использовали в каком-нибудь коммерческом ключе (или хочет в таком случае получать процент от прибыли). Например, какая-нибудь песня используется в фильме, за показ которого в кинотеатре берут деньги. Должен ли в таком случае автор иметь возможность контролировать использование своего произведения, как вы считаете?

admin аватар

Нет, не должен.

Нет, не должен. Никакие имущественные права, относящиеся к т.н. "интеллектуальной собственности", не имеют права на существование ни в каком виде.

У автора есть целый ряд неимущественных прав, таких как право авторства, право на неизменность произведения и прочее. Ни одно из этих прав не позволяет кому бы то ни было запретить использование произведения, и тут совершенно неважно, коммерческое использование, некоммерческое или какое ещё.

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

Не поймите меня

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

admin аватар

Потому что,

Потому что, например, копирайтное законодательство ещё пока не отменено. И это, замечу, там же написано.

Правильно ли я

Правильно ли я понимаю, что если бы условный Netflix так же как и сейчас продавал доступ к просмотру своих фильмов, но при этом не было бы преследования людей, скачавших/рипнувших фильмы с него, то вы бы относились к его деятельности нормально?

admin аватар

Нетфликс, для

Нетфликс, для начала, засылает на компьютер пользователя вредоносное программное обеспечение, которое затрудняет пользователю делать то, что обычно делают с информацией — а именно, например, сохранять локально копии (замечу, это действие считается законным даже в ныне действующих мракобесных юридических системах, поддерживающих копирастию). Это раз. А два — не бывает такого "если бы". Если бы каждый мог без каких-либо сложностей выложить в открытый доступ любой фильм, полученный с нетфликса, то нетфликс бы не смог существовать.

Посему без всяких "если бы": не только сам нетфликс, но и все, кто ему заплатили хотя бы цент — моральные уроды.

Это все детали.

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

Просто по аналогии с примером в корне этой ветки комментариев: подобное предоставление сервиса нормально по-вашему или есть какие-нибудь нюансы?

admin аватар

Это не "детали",

Это не "детали", это определяющие обстоятельства. Если вы этого всё ещё не поняли, то я уже даже не знаю, каким способом вам можно что-то объяснить и возможно ли это вообще.

Вообще говоря, любая сделка, если она совершается по информированной доброй воле и без каких-либо элементов принуждения (вроде, например, монопольного положения игрока на рынке) и не подразумевает насилия над третьими лицами, допустима. Копирастия к этому никакого отношения не имеет, так как даёт "правообладателям" право (!) требовать чего-то от лиц, никаких договорных отношений с этими правообладателями не имеющих.

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

Близких нужно поддержать!

Parthen и все разделяющие мнение Андрея Викторовича, хочу вас поддержать за ваши трезвые взгляды, за ваше время, которое вы тратите в надежде отрезвить разумы окрепащенных личной выгодой и интересом людей, людей которых самообъявленные пупы земли злых корпораций позволили себе очерствить их резанными бумажками с портретами психов разбирающихся в психологии манипулирования людьми.
Очень надеюсь, что вы не будете сдавать позиции, не будете сдаваться и жить по принципу: "как все".
Я уверен, что капиталистический спрут, пожирающий все до чего может дотронуться, находится в агонии и вскоре сдохнет.
Ну а мы - бравые добровольцы, сражающиеся за свободу информации - вскоре вздохнем с облегчением.

Parthen аватар

Спасибо :)Но

Спасибо :)
Но вот тут я с Андрей Викторовичем солидарен -- коммунистов я не люблю, как минимум российских, у меня с личные счеты, поскольку отец священник.
Но вот коммунизм мне видится малясь утопичным. Я не эксперт, но видится все это все цитатой Шарикова: "Да взять все, и поделить!" Ну на кой черт нужно это "уравнивание", если люди все равно не равны, просто потому что разные?

admin аватар

Коммунизм не

Коммунизм не про уравнивание, не позорьтесь.

Parthen аватар

Воот, вылезает

Воот, вылезает мое незнание политики, не совался туда никогда.
Не подскажете где ознакомиться?

admin аватар

Не подскажу.

Не подскажу. Первоисточники довольно объёмны и занудны, всевозможные иные тексты либо в ту, либо в другую сторону "сдвинуты".

Основное тут, впрочем, вот что — и это мало кто понимает. Между "разными" идеологиями в действительности никакой разницы нет, это сугубо одно и то же явление, имеющее ровно одну цель: оболванивание населения с целью укрепления власти одних над другими. Исключений история не знает. Так что, в общем и целом, обсуждать идейную конкретику, которую использовали коммуняки, бессмысленно — она не играет никакой реальной роли, это просто одна из возможных ширм.

И, на всякий случай, чтобы не было лишних иллюзий: да, абсолютно любая религия (не как вера во что бы то ни было, а как организация и социальное явление) — это тоже частный случай идеологии.

Parthen аватар

Насчет религий

Насчет религий -- вы бы хоть "массовых" приписали. А то 3.5 монаха в глуши тоже оказывается кем-то оболваниваются

admin аватар

Ну, в принципе

Ну, в принципе можно и приписать, но вы на мой текст посмотрите внимательно: у этих ваших "трёх с половиной монахов в глуши" где, простите, "организация и социальное явление"?

Виноват

На самом деле я разошелся и коснулся грязного "дна" своих побуждений :) Хотел лишь поддержать все то, что связано со свободой человека, не затрагивающей свободы других и т.д. и т.п.
А в итоге - политика.
Меня уже прошили? :с

(А за ответы спасибо! Правда. Наконец-то сломан очередной стереотип "как нужно жить", о котором я даже не догадывался.)

admin аватар

Так-с, вот тут

Так-с, вот тут стоит, по-видимому, внести ясность. Я не коммунист; больше того, коммуняк совершенно ни под каким соусом не перевариваю, как и представителей любых других идеологий — впрочем, я полагаю, что идеологии не вполне осмысленно пытаться отличить друг от друга, поскольку это в действительности одно и то же явление, будь то любая из существующих религий, или коммунизм, или фашизм, или "новая этика" — конкретные идеи там никакой роли не играют.

Больше того, я и не социалист, ибо социализм и любые его проявления вроде social welfare, модного ныне в "развитых странах" — лишь оправдание для перманентного грабежа и много чего ещё такого, что мне категорически не нравится.

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

Если интересно, какова моя система ценностей, то тут всё просто: она начинается с моей личной индивидуальной свободы, ею же и заканчивается, и больше мне мир ничего интересного предложить не может. Копирастия — это разновидность цензуры, ну а цензура — это просто таки вопиющее посягательство на мою свободу; впрочем, претензии копирастов на то, что они якобы могут мне запретить копировать что-то с моей флешки на чью-то ещё за запертыми дверями моей квартиры — это очевидный абсурд, можно даже не вспоминать про цензуру. Вообще так называемая "интеллектуальная собственность", в особенности пресловутое "авторское" (на самом деле вовсе не авторское) право — это совершенно одиозное проявление государственного волюнтаризма, нарушающее свободу сразу всех, причём совершенно на ровном месте, и просто так терпеть эту ублюдочную юридическую сущность я не намерен. Но ни коммунистом, ни социалистом, ни противником капитализма это меня не делает.

Это правда?

Здравствуйте!

Ко мне в группу в ВК пришёл человек, который говорит, что в ваших книгах написано следующее:
"Искусство - это информация и больше ничего, а следовательно, платить за это не надо!"
И дальше:
"Писатель - это не профессия, а хобби. А хобби не оплачивается".
Это правда?

admin аватар

Ахтунг! Копирасты пожаловали

> Ко мне в группу в ВК

Кто использует ВК, тот похож на мудака. Когда ж вы кончитесь-то, идиоты непуганые.

> "Искусство - это информация и больше ничего, а следовательно, платить за это не надо!"

Ну, такой ахинеи я, разумеется, сказать не мог, хотя бы даже потому, что произведения искусства бывают весьма и весьма материальными — статуи, оригиналы картин, да даже новомодные "инсталляции". Впрочем, сие никак не отменяет других моих утверждений, в частности:

1. Искусство не может иметь своей целью зарабатывание денег, а всё, что делается для зарабатывания денег, никакого отношения к искусству не имеет. Хотя бы даже потому, что искусство не терпит компромиссов, тогда как работа за деньги из компромиссов попросту состоит.

2. Существуют всего два вида сущностей, которые могут стоить денег: (1) материальные объекты и (2) человеческое время, потраченное по конкретному заказу конкретного заказчика. Всевозможные вариации на тему инициативных разработок вида "сейчас тут потратим время и что-то такое склепаем, а потом за это слупим денег с кого-нибудь" под второй пункт не подпадают — здесь нет ни заказчика, ни заказа. Если результатом инициативной разработки стало нечто материальное, то это материальное можно продать, поскольку это материальный объект; но если результат чисто информационный, то тут уж пардон: кто действует в своё удовольствие, тот действует в своё удовольствие. Точка, все свободны.

3. Платить за биты и байты можно разве что даже не ксерокопиями, а электронными сканами денег. Такой "обмен" был бы справедливым.

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

> "Писатель - это не профессия, а хобби. А хобби не оплачивается".

Такого в явном виде я тоже, разумеется, не говорил, т.е. вот этот вот текст в кавычках не является цитатой из какого-либо моего текста. Если под писателем понимать любого автора "художественных" (или, лучше сказать, беллетристических, поскольку художественная составляющая там зачастую весьма сомнительна) текстов, то, разумеется, существуют как писатели-любители, так и писатели-профессионалы, это просто констатация факта. Что, опять же, не отменяет следующего моего утверждения:

5. Деятельность так называемых профессиональных писателей мало того, что не имеет никакого отношения к искусству, она ещё и вредоносна: пользуясь издательской "раскруткой", эти деятели отнимают у любителей заслуженную аудиторию, а с ней и жалкие остатки мотивации.

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

Parthen аватар

А я тот самый парень

>Кто использует ВК, тот похож на мудака. Когда ж вы кончитесь-то, идиоты непуганые.
Справедливо, но тут есть небольшое оправдание -- мы с Домарощинером скованы -- Летосфера (сфера игры "Бесконечное лето") существует только в ВК, а мы в ней моды делаем.
>"Искусство - это информация и больше ничего, а следовательно, платить за это не надо!"
Я между прочим такой анихеи также не говорил. Я твердил раза 4 простую мысль -- есть носитель информации, есть информация. Информацию продавать нельзя. Носитель -- можно.
Полный срач можно прочитать вот тут -- https://vk.com/domaroshiner?w=wall-153476349_14670
Но можете прочитать по скриншотам на моем сайте --
https://parthen.neocities.org/vk_fight/screenshot.html

Я твердил раза 4

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

admin аватар

Достали, а... включите мозг

Минуточку, флешка чья? Моя? Ну так никто мне не будет рассказывать, почём её продавать, почём хочу, по том и продаю.

Вопрос тут не в том, почём флешку продавать. Можно вообще-то и без флешки, я не знаю, чего Parthen так к носителям привязался. Уж на что Столлман весь из себя такой за свободу, но от него ещё лет тридцать назад было разъяснение, что GPLную программу _можно_ продать за миллион баксов, если найдётся покупатель. Вопрос лишь в том, что в случае с GPLной программой покупатель получает все права, гарантированные лицензией, и, как следствие, имеет полное право выложить в открытый доступ ту программу, которую только что купил. И продавец даже не имеет права его _просить_ этого не делать, такая просьба текстом лицензии явным образом запрещена и её нарушает (и делает недействительной, что характерно).

Если же речь идёт не о GPLной программе (или о программе с другой лицензией, или вообще не о программе, а о музыке, книге, фильме, мало ли что там бывает), то можно даже и попросить никому только что купленные биты и байты не давать. Можно даже договор на эту тему подписать, NDA называется (non-disclosure agreement). Договор — продукт обоюдной доброй воли, тут всё чисто. Можно даже, если покупатель договор нарушит, его за это засудить, денег слупить, всё такое. С одним покупателем такое сработает. С двумя тоже. Даже с пятью. А вот дальше фигушки, потому что даже если копии персонализировать, то несколько покупателей вместе соберутся, копии свои сравнят, выявят, где тут зашита персонализация, и состряпают новую копию, которая уже не будет содержать информации, позволяющей понять, кто конкретно из покупателей нарушил NDA. И — всё, биты и байты утекли в открытый доступ, а претензии предъявлять некому.

Копирайтное законодательство позволяет так называемым "правообладателям" требовать от _всех_ — и без всяких договоров, заметим — не создавать копий какой-то информации. То есть вот им прямо все должны. Весь мир, поголовно. При том что пользы от них вообще-то никакой нет, а вред несомненен.

Вот не поймут люди, что тут нет никакой "морали", "допустимого" или "недопустимого" и всей прочей подобной галиматьи. Есть два базовых принципа: (1) любое взаимодействие индивидов должно совершаться с их общего согласия и никак иначе и (2) право собственности на материальные объекты, созданные человеческим трудом, абсолютно и непререкаемо, т.е. человек всегда вправе сам решать, что можно и что нельзя делать с его материальным имуществом. Так называемое "авторское" право этому противоречит. Всё. Можно больше ничего не выдумывать.

Parthen аватар

Я к носителям

Я к носителям првязался для упрощения -- но также Токачиров меня не понял. В итоге еще около 100 комментариев, разошлись вроде что друг-друга не поймем. Что хорошо, там даже есть мои сторонники -- это радует.

admin аватар

Да ничего,

Да ничего, скоро поймёт — когда реально попытается денег заработать на своих подельях. Хотя, конечно, некоторых и это ни в чём не убеждает, продолжают верить в сказки копирастов, что мол даже тут виноваты злые пираты. А что "авторское" право изначально никакого отношения не имеет к интересам авторов и никогда не имело — доходит почему-то сильно не до всех.

admin аватар

Посмотрел

Посмотрел скриншоты, благодарю. Вам с такими, с позволения сказать, людьми в одном проекте работать не противно, простите? Да ещё и в ВК (если эта "летосфера" есть только там, то по мне так пусть лучше её вообще не будет).

Parthen аватар

> Вам с такими, с

> Вам с такими, с позволения сказать, людьми в одном проекте работать не противно, простите?
Вы немного не поняли. Есть игра -- Бесконечное лето.
У нее есть фанатская база, моды, арты и т.д. -- все это называется Летосфера и обсуждение всего этого обычно польностью в ВК.
Противно? Фиг знает. Большинство тех, кого я знаю копирасты, что поделать. Пока я могу просто не затрагивать эту тему -- с Домарощинером я так-то несколько лет уже знаком, а посрались только сейчас. Если бы я не написал этот комментарий, может и еще несколько лет спокойно бы общались.
Так вот в так называемой "Мастерской" выкладываются модификации к игре. Там публикуются мои модификации, и Домарощинера. Так что мы с ним не пересекаемся особо.
Ну а насчет ВК -- пока он у меня есть, то ладно уж. Вот я из школы выпущусь, зарою свой смартфон вместе с симками, тогда можно удалить ВК и уходить из Летосферы.

А какой смысл у

А какой смысл у этой игры? На что Вы тратите время?

admin аватар

По мне так у

По мне так у всех игр смысл ровно один: развлечение. Эта хоть (вроде бы) под свободной лицензией.

Parthen аватар

Да,

Да, развлечение. К тому же, это эдакий "социальный лифт" в мире визуальных новелл. Берешь игру, переделываешь свой сюжет (а арты, к слову, у визуальных новелл дорогие) и бесплатно получаешь свою недо-ВН. Так многие стали знаменитыми и уже после сделали настоящие ВН.
И да, игра под лицензией CC BY-NC-SA. Да и визуальные новеллы на Renpy глупо копирастить -- декомпилиция обратно в исходный код занимает от 5 минут до получаса и делается полностью автоматом специальной утилитой.

Parthen аватар

Вопрос с бодуна

Предположим, мы создали указатель А, указывающий на сам себя.
Теперь вопрос, что будет если присвоить значение в A^^?
А^ также изменится? Или вообще какая ошибка вылезет?

admin аватар

Ну, тут есть

Ну, тут есть одна небольшая проблемка: мы такой указатель создать не можем. Точнее, типизированный не можем, поскольку непонятно, какого он будет типа. Можем сделать абстрактный pointer и даже в него занести его собственный адрес, но к абстрактному pointer'у неприменима операция ^.

Pascal, eof....

Решил в-общем я окончательно победить для себя тему чтения до eof. Показалось мне что автор в первом томе чего то не договаривает, утверждая что когда мы читаем посимвольно, то с eof'ом у нас все ок, в отличие от представленного плохого примера, когда мы читаем сразу целыми числами, и eof не срабатывает с первого раза.
Короче говоря, взял я пример программы из книги(стр. 326), подсчитывающей количество символов в вводимой строке и немного доработал её:

program FilterLength;
var
    c: char;
    n: integer;

begin
    n := 0;
    while not eof do begin
        read(c);
        if c = #10 then begin
            writeln('filal output: ', n);
            n := 0
        end
        else
            n := n + 1;
            writeln('test: ', n)
    end
end.

Вывод показал что так и есть:
asd
test: 1
test: 2
test: 3
filal output: 3
test: 0

Вот оно, после того как программа прочитала Enter, она прочитала ещё что-то. Но почему ноль в конце подумал я, ведь по идее n мы обнулили, если программа еще что то нашла в стандартном вводе, должна была сработать ветка 'else', а в ней для начала к n прибавляется единица. Что за дела?
Подумав я немного переделал ветку else:

writeln('test start: ', n);
n := n + 1;
writeln('test finish: ', n)

Вывод озадачил:

asd
test start: 0
test finish: 1
test start: 1
test finish: 2
test start: 2
test finish: 3
filal output: 3
test finish: 1

Теперь сложение сработало и программа в конце выдала единицу, но съела первый оператор в ветке else.Получается в последней итерации съедается один оператор после else.

Что это баг, или я чего-то не понимаю?

admin аватар

Что вы делаете

Что вы делаете не так? По-моему, очевидно: нарушаете расстановку структурных отступов. У вас в тексте программы writeln('test: ', n) сдвинут так, как будто он входит в ветку else. А он, представьте себе, в неё не входит, поскольку обрамить её begin-end'ом вы забыли. Так что срабатывает он на каждой итерации цикла, в том числе и на той, на которой печатается загадочное "filal output" (даже интересно, что такое filal). Разумеется, ничего, кроме трёх символов и перевода строки, ваша программа не прочитала, итераций цикла было ровно четыре. Пресловутое test: 0 было выдано ровно на той итерации, где был прочитан конец строки, после этого eof стал ложью и цикл завершился.

Ну а когда вы программу принялись редактировать, то думали, судя по вашему тексту, что редактируете ветку else, в действительности же первый writeln у вас стал как раз телом ветки else, а вот увеличение на единицу и второй writeln из неё выпали.

Внимательнее надо, короче. Отступы для этого и придуманы.

buq аватар

Вопрос про компиляторы

У меня есть некоторый опыт с GCC и CLANG. Недавно наткнулся на такой софт -- TCC(tiny c compiler). У него очень быстрое время компиляции по сравнению с GCC. Например исходники примеров программ с графической API OpenGL(300 - 500 строк) компилируются 9-10x быстрее. А теперь собственно говоря вопрос.

Кто-нибудь может поделится своим опытом работы с TCC, и привести некоторые достатки/недостатки? Я например заметил что GCC и CLANG лучше генерируют сообщения о возможных ошибках.

Заранее спасибо.

TCC написан с

TCC написан с одной целью - потешить ум своего автора. Мне не известно как далеко он продвинулся, но последняя версия датируется 2017-ым годом. Да и команда "tcc -static dummy.c" выдаёт ошибку сегментации, что уже о чем-то говорит. Про его производительность вы можете прочитать на "https://en.wikipedia.org/wiki/Tiny_C_Compiler".
GCC - основной компилятор для Linux уж точно (FreeBSD использует CLANG/LLVM, но это вызвано скорее идеологическими причинами), за остальных не скажу - не знаю. Ему уже 34 года и за все это время над ним работало бесчисленное количество людей. Соответствено он имеет в свом распоряжении значительное количество оптимизаций (отчасти поэтому он и медленее компилирует), да и ошибки должны оперативно устранять, ведь он просто более популярен. У него полно минусов: попробуйте как-нибудь его им же скомпилировать (тут никакие оптимизации оправдениями быть не могут), еще код его необычайно раздут, бинарники пичкает ерундой. Но тут, как говорится, спасибо за то, что имеем.
Clang, вообще говоря, не является самостоятельной сущностью. Он транслирует исходники в LLVM IR, а он, в свою очередь, транслируется LLVM'ом в машинные команды. Эта пара поновее, но её уже используют разные большие дяди, например Apple, Nvidia.
Про сам Clang, как про фронт-енд, сказать что-либо сложно: IR генерирует - программы работяют. А вот LLVM имеет такие же проблемы как GCC, плюс к тому же на него положили глаз комерциалы, а это ничем хорошим не сулит.
Но с идеологической точки зрения идея промежуточного кода видится мне более верной.

admin аватар

Про gcc

Мне мои студенты недавно притащили дивную ссылочку — каюсь, я про неё не знал:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=30475

По-моему, после этого об использовании gcc вообще говорить не приходится. Проблема в том, что больше использовать тупо нечего.

О компиляторе

Помню, что когда-то лично сталкивался с некоторыми проблемами в TCC при попытках откомпилировать программы, в которых были сложные выражения с "плавающей запятой". Видел это на 64 разрядах под Win64, когда компилятор работает с SSE2, а не с классическими командами x87. Этими же программами я сумел нарушить работу и компилятора Pelles C на 64 разрядах с включенной оптимизацией. GCC, Clang, Open Watcom и MSVC работали нормально.

Хватит ли знаний

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

UTF-8

Здравствуйте. В связи с желанием делать заметки на русском языке, возник вопрос как его обрабатывать. Я уже уяснил, что в тексте самой программы не должно быть никаких символов кроме ASCII. А диалог с пользователем можно хранить в отдельном файле. Но вот как сам текст обрабатывать в другой кодировке мне пока не ясно. Например, если пытаться хранить UTF8-ru символ в Char ничего хорошего не выйдет. Строки еще вроде читает и пишет, но длину корректно уже не измерить. Может я чего то упустил.

Нашел такую инфу. Это в нужную сторону?
http://www.freepascal.ru/article/freepascal/20120718142000/

И еще такой вопрос про ввод с неизвестным количеством символов. В Паскале вроде есть тип для динамических строк. Но является ли хорошей идеей в данном случае обрабатывать все посимвольно и хранить такой ввод в своих динамических структурах данных тем самым обучаясь работе ними? Заранее спасибо за ответы.

admin аватар

Я бы не

Я бы не рекомендовал лезть в эти дебри библиотек Free Pascal, увязнете.

Между прочим, посчитать длину строки в UTF8 очень просто: нужно игнорировать при подсчёте байты, начинающиеся с битов 10. Иначе говоря, с двоичного 10000000 до двоичного же 10111111. В хексе это будет с $80 до $BF, в десятичной -- от 128 до 191. Эти байты являются "хвостовыми" для многобайтовых символов, а первый байт своей структурой определяет, сколько у него будет этих "хвостовых" (если начинается с 0, то ни одного, если с 110 -- то один, и так далее). Поскольку utf8 в реальности единственная многобайтовая кодировка, все остальные слишком одиозны, чтобы вообще использоваться, то достаточно в программе иметь какой-нибудь флажок, означающий, работаете вы сейчас с однобайтовой кодировкой (вроде koi8r или cp1251) или многобайтовой (это только utf8), и если кодировка многобайтовая, то при подсчёте длины строки учитывать все байтики, кроме вот этих вот $80..$BF.

И да, идея хранить всё в своих динамических структурах — правильна. Думаете, почему я в книгу не включил ни динамические массивы, ни вот эти вот строки разновсяческие? Потому что если их рассказать, основная цель траты времени на Паскаль — научить работе с указателями — достигнута не будет.

Parthen аватар

Offtopic

Возможно кто-то захочет найти себе текстовый редактор, помощнее Nano, но полегче Vim. (А не пытаться его написать, как я). И такой есть -- micro. В нем по умолчанию виндовые горячие клавиши, но можно их поменять. Также как и vim имеет командный режим, но более простой. Имеет нормальную поддержку мыши и вдобавок приятную глазу расцветку -- черно белый nano начинает действовать на глаза.

buq аватар

Вообще-то

Вообще-то, в NANO можно изменить расцветку текста как угодно.Для редактирования расцветки надо смотреть в директорию /usr/share/nano и изменить соответсвующий файл(например c.nanorc или asm.nanorc). А для изменения клавиш надо смотреть в конце файла /etc/nanorc.

Если хотите альтернативный редактор, то могу посоветовать e3 (http://www.texteditors.org/cgi-bin/wiki.pl?E3). Он полностью написан на ассемблере и имеет keybindings emacs, vi, pico(nano) и wordstar.

Parthen аватар

Отвечу немного

Отвечу немного ниже

Я пользуюс не

Я пользуюс не VIMом, а VI. А что в нем сложного?

Parthen аватар

HJKL для меня

HJKL для меня исчадие ада. (И да, я не буду в таком редакторе использовать стрелочки).
Ну, для начала: почему клавиши поставлены именно так? Честно, не знаю, наверное традиция, но я постоянно сбиваюсь, потому что обычно указательный палец держу на J, а не на H.
Ладно, к этому еще можно привыкнуть если постоянно нащупывать бугорок. Но почему буква J это стрелочка вниз? Я инстиктивно постоянно ее нажимаю как стрелочку вверх. Да блин, я даже ради этой цели себе NetHack поставил, один фиг за час игры так и не привык.
Да, можно залезть в конфиг и все поменять, только вот смысл от редактора, если я меняю самые его основы?
Ну и второе это командный режим. Крайне непривычно им пользоваться.
Ну и последнее -- когда я захожу в Vim, я чувствую себя как на Белазе вместо велосипеда. Ну незачем мне такая мощность, я сервера не администрирую, и логи на 20К+ строк не смотрю

Ну, для начала:

Ну, для начала: почему клавиши поставлены именно так?

А вы посмотрите на клавиатуру терминала, на котором был написан vi. Вот хотя бы на википедии: https://en.wikipedia.org/wiki/Vi Сразу многое станет понятнее. В том числе и про клавишу Esc.

А вот сама идея командного режима и богатого набора команд редактирования весьма плодотворна, надо сказать.

Ну незачем мне такая мощность, я сервера не администрирую, и логи на 20К+ строк не смотрю

Смотреть логи на 20К+ в текстовом редакторе совершенно не стоит, неважно, будь то vi или что-то другое. Для этого (в UNIX-подобных системах) есть гораздо более подходящие средства.

Да и для "администрирования серверов" в целом развитый текстовый редактор не особенно нужен. Того же nano должно хватать за глаза.

Развитые средства редактирования (при условии умения ими пользоваться) более полезны скорее программисту, чем сисадмину.

Кстати, это же вы в каком-то другом комментарии задавали вопрос про изучение UNIX? Попробуйте полистать классическую книгу Кернигана и Пайка "The UNIX Programming Environment" (не помню точно, как наши переводчики её назвали).

Parthen аватар

>А вы

>А вы посмотрите на клавиатуру терминала, на котором был написан vi.
Ну вот как знал, традиция.
>Кстати, это же вы в каком-то другом комментарии задавали вопрос про изучение UNIX?
Нет, мне пока что только Линукс интересен :)

Нет, мне пока

Нет, мне пока что только Линукс интересен :)

Гм, вообще, конечно, находятся снобы, которые небезосновательно утверждают, что "Linux это не UNIX". Но большинство всё-таки сходятся во мнении, что Linux является по крайней мере UNIX-подобной ОС. ;-)

Ну, то есть, если вы хотите изучать внутреннее устройство ядра, то, конечно, Linux -- это одно, а FreeBSD -- совсем другое. Но если вы хотите научиться эффективно работать (и жить) в командной строке, то имеет смысл говорит именно об "изучении UNIX" (по крайней мере если речь об основах, в тонкие отличия конкретных систем можно будет углубиться позже).

Так что, вот к этому вашему комментарию мой совет вполне подходит.

Parthen аватар

>Гм, вообще,

>Гм, вообще, конечно, находятся снобы, которые небезосновательно утверждают, что "Linux это не UNIX"
Так, вот вы сейчас начинаете приписывать несуществующую позицию, так делать ненужно.
Просто, как я понимаю, когда читают книжки по Юниксу, то хотят разбираться и в BSD, и в Linux. Я как-то пока на BSD не планирую пересаживаться, поэтому лучше читать книжки конкретно по Линуксу.
Да и с командной строкой у меня проблем не особо, благо я ей часто пользуюсь. У меня проблемы как раз с пониманием устройства системы.
А вообще книжки по Unix я читал, когда еще компа не было, и я хотел его себе купить, уже разобравшись.

Так, вот вы

Так, вот вы сейчас начинаете приписывать несуществующую позицию, так делать ненужно.

Нет. Перечитайте внимательнее, из текста никак не следует, что я что-то кому-то приписывал. В данном случае это вы мне сейчас приписываете несуществующие намерения. Так делать ненужно.

Просто, как я понимаю, когда читают книжки по Юниксу, то хотят разбираться и в BSD, и в Linux.

Нет, это не так. Книжки по UNIX читают в том числе и тогда, когда хотят начать разбираться только в какой-либо одной UNIX-подобной системе.

Да и с командной строкой у меня проблем не особо, благо я ей часто пользуюсь.

У меня возникло предположение, что вы не очень хорошо знакомы со стандартными утилитами, когда вы предлагали сисадминам смотреть логи на 20K+ строк в текстовом редакторе. А не владея стандартными утилитами сложно эффективно работать в командной строке.

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

Про совместимость оборудования

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

Ты когда собирал компьютер, подбирал "железки", для которых есть драйвера и поддержка в выбранном тобой дистрибутиве? Просто я озадачил себя вопросом совместимости комплектующих с конкретным дистрибутивом Linux и из того, что я нашел -- это https://linux-hardware.org/ (совместимость "железок". Я удивился, что даже есть пункт с поддерживаемыми мониторами. Это немного сбивает) и http://www.openprinting.org/printers (совместимость принтеров).

Если ты подбирал комплектующие, можешь поделиться соответствующими ресурсами?

Кстати, если

Кстати, если что, предостерегу от покупки видеокарт Nvidia. Графика AMD и Intel в линуксе поддерживается гораздо лучше. В случае с Nvidia придётся либо мириться с закрытым проприетарным драйвером, либо пользоваться плохоньким открытым.

Об Nvidia не единой мысли

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

admin аватар

дык вроде после

дык вроде после видео с Торвальдсом, орущим прямо в камеру на конференции fuck you nvidia, сие более-менее и так понятно :-)

А в чем

А в чем заключается сложность написать FOSS драйвер для тех же видеокарт от nvidia? Точнее даже не просто написать, а чтобы он был более производительный, чем проприетарный.

Драйвер ведь является программой которая даёт доступ ОС к железу. Насколько я представляю, "хороший" драйвер указывает какие инструкции и оптимальную их последовательность в видеокарте нужно применить для того чтобы вычислить что-либо (в моём представлении). Нельзя ли эти оптимальные инструкции вычислить даже методом тыка?

admin аватар

Попробуйте

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

Так это нам с

Так это нам с вами понятно, а молодые люди этого могли и не застать. Почти десять лет прошло, как-никак. И память о том, как Линус показал нвидии палец, уже потихоньку стирается, как мне кажется.

Parthen аватар

>Ты когда

>Ты когда собирал компьютер, подбирал "железки", для которых есть драйвера и поддержка в выбранном тобой дистрибутиве?
Я когда собирал компьютер, надеялся что он хотя бы заработает, а не сгорит. :) Какие-то 3 года назад я не отличил бы жесткий диск от видеокарты, ибо в компьютерах не понимал вообще.
Да и у ПК с Линуксом проблем не особо, вот ноутбуки это да.

admin аватар

Кернигана-Пайка

Кернигана-Пайка вы человеку рано советуете, там, если ничего не путаю, предполагается знание Си, а тут имеется затык с освоением указателей (временный, скорее всего, но он есть), так что к Си приступать не получается.

Да и вообще проблема тут уж точно не в том, "что полистать". Гляньте оглавление от моего второго тома, сами в этом убедитесь.

Там есть Си, но

Там есть Си, но только во второй половине книги, которую можно пока не читать. Для чтения первой половины книги ни знания Си, ни, тем более, указателей не требуется. Там описана работа с системой с т.з. пользователя: шелл и стандартные утилиты. Как раз то, чего в ваших книгах очень мало.

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

Самая

Самая подходящая книга для новичка, мне кажется, "Командная строка Linux" автор Уильям Шоттс.

admin аватар

С J как раз всё

С J как раз всё просто, она сама по себе напоминает стрелку вниз. Ну, если от стрелки правую часть самой стрелки отгрызть, то вот как раз что-то похожее получится.

Между прочим, я стрелками в vim'е пользуюсь :-) А пресловутые hjkl применяю только в составе более сложных команд, ну или когда редактирую файл удалённо через неустойчивое соединение. То есть работать с ними умею, но от стрелок так и не отвык.

Что до мощности, то она как раз понятно зачем, она сокращает время и трудоёмкость редактирования текстов. Даже самых маленьких. И на белаз это не похоже совершенно, белаз -- машина слишком специальная, вне карьеров просто не проедет. А vim — редактор универсальный. Если уж сравнивать с велосипедом — то это скорее этакий гоночный велосипед с кучей наворотов и вдобавок с электромотором :-) Впрочем, дело хозяйское.

Parthen аватар

>С J как раз всё

>С J как раз всё просто, она сама по себе напоминает стрелку вниз
Да вот как-то вообще не просто. Я когда нажимаю букву на клавиатуре, не задумываюсь как она выглядит. А у меня, как и скорее всего у вас, на стрелочках указательный палец лежит именно на верхней стрелочке.
P.S. А почему вы ответ про расцветку и подсветку не пропустили? Я там обещал человеку ответить, нехорошо получается

admin аватар

Вы

Вы указательный со средним не путаете? Указательный у меня (и я практически уверен, что у вас тоже) при работе с допклавиатурой лежит на стрелке влево. А средний (известный также как fuck finger :) ) вынужденно работает как по стрелке вверх, так и по стрелке вниз.

Чего совершенно не понимаю, так это кто вам мешает его на K положить, а не на J. Сейчас попробовал -- такое положение даже более естественно, оно соответствует положению пальцев для слепой печати.

Сообщение про расцветку я "пропустил", но вообще-то странно, что такой вопрос у вас возник. Вот тут есть официальная политика премодерации, и сводится она ровно к одному: я не собираюсь ни перед кем отчитываться, какие комментарии я раскрываю, какие не раскрываю и по каким причинам.

Parthen аватар

>Вы

>Вы указательный со средним не путаете?
Да, путаю. Но вот все мое детство, проведенное во Flash играх упорно отзывается тем, что пальцы ставятся IJKL.
>Сообщение про расцветку я "пропустил", но вообще-то странно, что такой вопрос у вас возник
Политику премодерации я читал, и не раз. Вы довольно часто мои комментарии не пропускали, когда я не был зарегистрирован.
Конечно, это ваш сайт и вы тут никому и ничего не обязаны, но вот когда коммент не проходит премодерацию, не понятно почем, это сбивает столку. Знал бы причину, хотя бы в следующий раз не писал бы об этом.

admin аватар

А нету никаких

А нету никаких причин, понимаете? Может, вам проще будет считать, что я тут монетку подбрасываю.

На самом деле, понятное дело, существуют вещи, которые увеличивают или уменьшают вероятность комментария пройти премод, но пытаться формализовать их бессмысленно, поскольку последней инстанцией в любом случае выступает моё личное субъективное "хочу"/"не хочу".

admin аватар

Достаточно

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

Среди студентов, которые у меня учатся, бытует поверье, что я благосклоннее отношусь к тем, кто использует vim (на самом деле это совершенно не так, и я это постоянно повторяю, но миф развеять не так просто). Так вот, вы бы видели, КАК некоторые из них "используют vim". Временами, ей-богу, плакать хочется.

admin аватар

Редакторов

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

Ну а поддержка мыши, если поискать, есть и в vim'е, только она не нужна. Вообще. Хвататься за мышь следует как можно реже, лично я её трогаю только в том же проклятом браузере.

К сожалению,

К сожалению, невозможно ничего сделать с браузером

Ну почему же, возможно. Для тех сайтов, с которых я часто и много что-то читаю, я просто делаю кастомный CSS: чёрный фон / серый текст. Глаза говорят "спасибо".

Вообще-то как раз от серых букв на чёрном фоне глаза практически не устают

Кстати, а как так сложилось, что и ваш сайт не избежал стандартной схемы "светлый фон / тёмный текст"?

admin аватар

> я просто делаю

> я просто делаю кастомный CSS:

стесняюсь спросить, а дальше с ними что делать? Не, ну для palemoon вроде какой-то addon есть на эту тему, описание у меня почему-то доверия не вызывает

> а как так сложилось,

я бы сказал, что "стандартная" схема сейчас подразумевает белый фон (вот то есть 0xffffff и, э... возле птички в общем)

а сложилось очень просто -- я эту тему (twilight) долго крутил и так и эдак, а результат -- это единственный вариант, который у меня получился так, чтоб не бесил :) (если что, чёрный фон я пробовал, но в сочетании с элементами интерфейса самого браузера получалась полная хрень)

Parthen аватар

>а дальше с ними

>а дальше с ними что делать?
Ну вот анон ниже предложил, что делать. Я малясь мухлюю, у меня всю работу делет аддон Dark Reader.
Насчет некрасивости, вот вам пример темных красивых сайтов:
Сайт DgDeeper -- digdeeper.neocities.org
Ну и мой сайт -- parthen.neocities.org
Уж сам себя хвалить не буду, но у DigDeeper прекрасный сайт, от которого не болят глаза.

Английская

Английская версия сайта parthen, уж не знаю пользовались ли переводчиком или сами, практически не понятна анлглоязычному читателю.
> I'm a Parthen
неопределенный артикль тут не употребляется.

> And I'm trying doesnt use
I am trying not to use

> but it's not validate now
but it doesn't pass the validation

> Maybe I create authorization, but now it's not
Maybe i will create authorization in the future, but now there is not

> On this and other questions like this, I don't want to answer. I can say, that I'm Russian teen which family roots with Ukrain.
I prefer not to expose my identity, all i can say is i am a Russian teenager with some roots from Ukraine.

>I have a lightphobia, this colors is best for me.
I have photophobia, these colors are preferred for me.

> we have some problems: braking,
: lags

> your political vision?
What is your opinion on politics?

>Policy is overrated.
Politics are

Если Андрей Викторович откроет, может будет полезно исправить самые критические ошибки.

Parthen аватар

Да-да, я знаю.

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

admin аватар

Всё-таки,

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

Parthen аватар

Вот кстати в

Вот кстати в Gemini, в отличие от WWW, сайт присылает только текст -- внешний вид задает клиент.

admin аватар

Так и должно

Так и должно быть. Но Gemini чрезмерно примитизирован, он в таком виде вытеснить веб не сможет. Нужно, во-первых, добавить элементы ввода, чтобы можно было на стороне сервера при желании реализовывать всевозможные информационные системы. Конечно, рендерить их по-прежнему должен клиент так, как сам хочет, сервер должен просто указывать, какую информацию он готов получить от пользователя, и это всё должно быть упрощено до предела, но всё-таки не выкинуто. Во-вторых, я бы туда ввёл опциональную поддержку таблиц: если клиент может, он таблицу рендерит, если не может, просто показывает содержимое в виде вложенных списков.

стесняюсь

стесняюсь спросить, а дальше с ними что делать?

В файрфоксе есть такой файл (если нет, то можно создать самому):
~/.mozilla/firefox/blah-blah-blah/chrome/userContent.css

Вот тут я про него читал когда-то давно: http://kb.mozillazine.org/index.php?title=UserContent.css

В этом файле можно создавать конструкции вроде:

@-moz-document
    domain(openbsd.org),
    domain(undeadly.org),
    domain(marc.info),
    domain(medium.com),
    domain(sr.ht),
    domain(github.com),
    domain(gitlab.com),
    domain(stolyarov.info)
{

* {
    background: #000 !important;
    color: #999 !important;
    border-color: #333 !important;
}

a       {text-decoration: none      !important}
a:hover {text-decoration: underline !important}

a         {color: #88A !important}
a:visited {color: #8AA !important}
/* a:hover   {color: #8A8 !important} */

}

Ну или, если много разных CSS для разных сайтов, то раскидать по отдельным файлам, а тут делать @import 'lor.css';

В палемуне это должно работать, по идее. Если нет, то от меня ему будет жирный минус.

Ну а ещё есть у меня идея попытаться эти CSS подсовывать на уровне прокси. Чтобы уже не зависеть от конкретных возможностей конкретного браузера.

Не, ну для palemoon вроде какой-то addon есть на эту тему

Аддон есть, да. И для файрфокса есть, и для хрома. Но они мне не нравятся. Просто редактировать файлы в привычном текстовом редакторе гораздо удобнее.

Кстати, многие вещи, для которых существуют специализированные аддоны, на самом деле можно делать просто редактируя userContent.css, userChrome.css или ещё какие-то файлы.

если что, чёрный фон я пробовал, но в сочетании с элементами интерфейса самого браузера получалась полная хрень

Понимаю. У меня-то интерфейс браузера тоже тёмный, так что получилось бы нормально. Но широкая публика не поймёт, это да.

Parthen аватар

Ответ вам и buq

Я говорил не про подсветку кода (а она есть в любом нормальном редактрое), а про расцветку интерфейса.
Расцветка у micro, как по мне лучше -- вместо белого приятный бежевый, вместо черного серый.
Без подсветки мне в принципе нормально, и я в nano так и сидел, пока свою не сделал (ибо для Pascal там нет, только для Lazarus). Но лучше с ней, а то когда много вложенных конструкций начинаешь путаться.
>Ну а поддержка мыши, если поискать, есть и в vim'е
Есть-то она есть, да только хреновая. В Vim есть командый режим, чтобы быстро скопировать что-то. А мне быстрее мышкой из одного абзаца выделить и в другой вставить (это притом, что мышка у меня находится на половине руки, т.е. чтобы взять мышку я разворачиваю весь корпус тела.)
А вообще для меня тема черно-белого интерфейса как нельзя близка -- у меня светофобия, я психологически ненавижу белый цвет. Так вот глаз у меня что-то вроде кинескопа -- если долго смотреть на интерфейс nano, то у меня светлые элементы просто "выжигаются" на сетчатке, вплоть до того, что я закрываю глаза и вижу их как яркие пятна.
P.S. Кстати, серый цвет у вашего сайта тоже не ахти. ИМХО, но лучше был бы белый на черном.

В Vim есть

В Vim есть командый режим, чтобы быстро скопировать что-то. А мне быстрее мышкой из одного абзаца выделить и в другой вставить (это притом, что мышка у меня находится на половине руки, т.е. чтобы взять мышку я разворачиваю весь корпус тела.)

----------------------------------------------------------

По времени правда быстрее вот разворачиваться, брать мышку и ею скопировать и вставлять нужный текст, нежели переключится в командный режим VIM и там это сделать? Я очень не уверен в этом. Да и удобство - сомнительное. Мой Вам совет: уберите от себя мышку далеко, и освойте VIM: хороший, удобный редактор.

-----------------------------------------------------

Я говорил не про подсветку кода (а она есть в любом нормальном редактрое)...

-----------------------------------------------------

Термин "нормальный редактор" зависит от личных предпочтений пользователя. Мне не очень нравится подсветка кода, а еще просто раздражает, когда редактор вместо меня решает и сам вставляет, например, закрывающие скобки: не надо, я сам вставлю!

Parthen аватар

>По времени

>По времени правда быстрее вот разворачиваться, брать мышку и ею скопировать и вставлять нужный текст, нежели переключится в командный режим VIM и там это сделать?
В командом режиме Vim быстрее. Но в обычном редакторе мышка быстрее, чем стрелочками с зажатым Ctrl.
Но я выше говорил -- мне много чего в Vim'e вызывает внутренний протест. Может через время привыкну и пересяду, кто знает.
>Термин "нормальный редактор" зависит от личных предпочтений пользователя. Мне не очень нравится подсветка кода ...
Я говорил про то, что есть возможность ее создать. Если редактор такого не умеют, хотя бы с плагинами, то это странноватый, как по мне редактор.

buq аватар

Интерфейс NANO

Копируйте файл /etc/nanorc в директорию ~/.config/nano/. После этого, редактируйте те свойства интерфейса которые вам нужны. Например, директивы set titlecolor bold,lightwhite,blue и set errorcolor bold,lightwhite,red меняют цвета титула и сообщений об ошибках соответственно.

Вот часть текста из этого файла:
## Paint the interface elements of nano. These are examples; there are
## no colors by default, except for errorcolor and spotlightcolor.
# set titlecolor bold,lightwhite,blue
# set promptcolor lightwhite,lightblack
# set statuscolor bold,lightwhite,green
# set errorcolor bold,lightwhite,red
# set spotlightcolor black,lime
# set selectedcolor lightwhite,magenta
# set stripecolor ,yellow
# set scrollercolor cyan
# set numbercolor cyan
# set keycolor cyan
# set functioncolor green

Parthen аватар

Сдаюсь

Признаю, не знал.

admin аватар

Нафига такое

Нафига такое знать, достаточно предположить, что подобная возможность существует, и пара запросов поисковикам решит вопрос.

А мне быстрее

А мне быстрее мышкой из одного абзаца выделить и в другой вставить

Тут, кстати, возникает вопрос: печатаете ли вы слепым десятипальцевым методом (по английски называющимся короче и приятнее: "touch typing")?

Потому что все преимущества богатых средств редактирования (имеющихся, например, в vi или в emacs) и все недостатки использования мыши всплывают обычно после освоения этого метода.

Если нет, то настоятельно рекомендую освоить. И нет, дело не в скорости печати. Дело в комфорте. Правильный touch typing в сто раз комфортнее обычного бессистемного "ну я как-то печатаю более-менее вслепую, более-менее быстро".

Parthen аватар

>слепым

>слепым десятипальцевым методом
Нет, у меня полуслепой 8-пальцевый. Мизинцы для спец.клавиш, большие для пробела, указательный и средней для всего остального. Насчет слепоты, я вот сейчас смотрю, я раз в минуту посматриваю на клавиатуру, когда сбиваюсь.
А "эти ваши" тренажеры мне не хватает терпения пройти. Что "Соло на клавиатуре" в 6 классе, что сейчас "Стамину".

admin аватар

Правильный touch

Правильный touch typing в сто раз комфортнее обычного бессистемного "ну я как-то печатаю более-менее вслепую, более-менее быстро".

а вот не соглашусь :-) использовать мизинцы для чего-то кроме shift'ов и прочих ctrl'ов — контр-эргономическое извращение. Безымянные намного длинее, и обслуживать ими крайние вертикальные ряды клавиш ничуть не более дискомфортно, нежели указательными — середину клавиатуры. А вот чтобы в классическом десятипальцевом нажать Q или там P (про русские Х и Ъ я вообще молчу), приходится двигать всю руку, задействуя аж мышцы на спине.

Не буду

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

Но вот сама основная идея touch typing'а -- каждый палец отвечает строго за свою группу клавиш -- здорово разгружает мозг. Когда я решил научиться touch typing'у, в довольно зрелом возрасте, я уже довольно сносно печатал типичным "на 2/3 слепым восьми-с-половиной-пальцевым методом". И очень чётко прочувствовал в сравнении то ощущение комфорта, которое даёт touch typing. (Правда, я при этом ещё и перешёл сразу с Qwerty на Colemak, может это тоже сыграло свою роль.)

Что касается клавиатур, то массовые клавиатуры, к моему глубокому сожалению, застряли в эпохе механических пишущих машинок. Например, этот абсолютно контр-эргономичный горизонтальный сдвиг рядов друг относительно друга (из-за которого, в том числе, так сложно тянуться мизинцем к Q) нужен (был) лишь для того, чтобы удобно расположить рычажки, ведущие от клавиш к литерам пишущей машинки. Или тот факт, что два самых подвижных пальца заняты одной общей на двоих клавишей пробела.

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

А ведь,

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

Сегодня я узнал, что есть патент аж от 1915 года на эргономичную клавиатуру для пишущей машинки. Смотрится достаточно современно, и даже идея о нескольких клавишах для каждого большого пальца присутствует. И проблема с рычажками выглядит на картинках вполне решаемой.

admin аватар

Куда там :( Вон

Куда там :( Вон переход на DVORAK не требует вообще ничего менять в железе, только этикетки переклеить (ну, наклеить новые поверх нарисованных буковок) и перенастроить систему. И движений рук при наборе английского текста становится чуть ли не втрое меньше. Но я не знаю ни одного пользователя DVORAC.

В некоторых аспектах цивилизация жутко консервативна. Взять бы процента два от этого консерватизма да применить к долбаному Вебу :(

Ну теперь вы

Ну теперь вы знаете по крайней мере одного пользователя раскладки Colemak. ;-)

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

admin аватар

> про расцветку

> про расцветку интерфейса

Насколько я могу судить, тут все говорят именно о расцветке интерфейса.

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

> А мне быстрее мышкой из одного абзаца выделить и в другой вставить

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

Parthen аватар

>Это очень

>Это очень плохо. Если вы не видите ничего плохого в таком использовании мышки — то ваш личный пусть к просветлению в лучшем случае только-только начался
Про то, что вредно знаю -- наслышаны про туннельный синдром, но все же это пока удобнее.
Кстати, я так понял вы в браузере мышкой пользуетесь? Попробуйте аддон Vimium -- вам, как пользователю Vim'a будет еще проще им пользоваться. Я уже давно, кроме как копирования и вставки мышкой в браузере не пользуюсь.

Если что, лично

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

Я со временем пришёл к такой схеме: подсветка только для комментариев и строковых литералов, можно одним и тем же цветом. Не ярким, естественно, например слегка синеватый #88A. Весь остальной код -- серый (#999) на чёрном.

Почему именно комментарии и строки? Чтобы многострочный текст и, тем более, закомментированный код не сливался при чтении с собственно выполнимым кодом.

Очень раздражает, кстати, подсветка кода на всяких гитхабах. CSS'ов на них не напасёшься...

admin аватар

Пробовал что-то

Пробовал что-то подобное (правда, только для комментариев, поскольку строковые литералы и так прекрасно вижу). Как сейчас говорят, не зашло.

А гитхабы всякие использовать не надо, бросьте бяку.

А гитхабы

А гитхабы всякие использовать не надо, бросьте бяку.

Не ну как бросить?... Сам-то я там не зарегистрирован и осуждаю, но код-то иногда смотреть надо. А каждый раз делать git clone ради того, чтобы глянуть один-два файлика, утомляет.

admin аватар

Ну, git clone

Ну, git clone утомляет, подсветка на сайте раздражает, поди теперь выбери из двух зол... В общем да, сам иногда поглядываю.

admin аватар

Хватит с

Хватит с хорошим запасом.

Здравствуйте! А

Здравствуйте! А где архив примеров программ?

admin аватар

Ссылка на файл

Ссылка на файл архива имеется на странице, посвящённой соответствующей книге (верно для каждой книги, к которой есть архив примеров).

Неинформативно, но искренне

Просто хочу вас поблагодарить за ваши труды, Андрей Викторович, спасибо!

Parthen аватар

Следующий вопрос

Как заставить Pascal взаимодействовать с shell?
Т.е. к примеру в процессе выполнения вывести выхлоп команды ls?
Я так понимаю, надо с потоками ввода-вывода поработать, но как -- не представляю.

admin аватар

При чём тут shell,

При чём тут shell, он же сам — программа. И ls — тоже программа.

Запустить внешнюю команду из программы на Free Pascal, разумеется, можно, вот тут написано, как: https://wiki.freepascal.org/Executing_External_Programs

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

Parthen аватар

Вот я про то и

Вот я про то и говорю -- у меня в голове возникают только такие проекты, которые требуют нормального знания системы. А без этого мне остается только решать на Паскале математические задачки.

У меня в

У меня в детстве была такая книжечка: Жак Арсак. Программирование игр и головоломок.

Посмотрите, там много всяких идей, в том числе и для текстовых консольных игр (что неудивительно, поскольку написана книга была в 1985-м). Может вам какая-нибудь приглянётся.

admin аватар

В

В математических задачах указатели не нужны обычно, вот в чём проблема.

Вообще если у вас такая склонность к системщине, с Паскаля нужно уже слезать :-) — но нельзя, без указателей Си вам не покорится. Попробуйте всё-таки придумать полноэкранную игрушку, и чтобы там списки требовались (ну, они в игрушках почти везде требуются), напишите её, просто чтобы получить соответствующий опыт, и двигайтесь дальше.

Parthen аватар

Вообще,

Вообще, насколько я понял по своему изучению математики, единственный способ для меня понять что-то сложное -- это изобрести это с нуля. Ну, как минимум я перед сном изобретал добрую половину теорем геометрии и тригинометрии, после чего на утро просто узнавал как они называются.
Так что мой true way -- просто ждать и представлять, как их придумали. В конце-концов озарение появится и я заново изобрету указатели.

admin аватар

Очень

Очень правильный путь, кстати.

Вывод из файла ОТ и ДО

Подскажите, пожалуйста, как выводить информацию из файла построчно ОТ определенной строки ДО определенной строки стандартными утилитами Linux? Хочу вести конспект в файле и, при необходимости, доставать инфу оттуда по нужной теме. Естественно, текста получится много, поэтому нужно чтобы в stdout выводилась только нужная тема. Заранее спасибо!

admin аватар

Если имеются в

Если имеются в виду строки по номерам, то вам поможет комбинация команд head и tail. Например, если нужны 35 строк, начиная со 129й, это будет вот так:

    cat myfile.txt | tail -n +129 | head -n 35

Если же строки нужно находить по их содержанию, то это сложнее; можно сделать с помощью awk и/или sed, но я, разумеется, не помню, как конкретно, так что man вам в руки.

Вообще, подозреваю, на самом деле вам это всё нафиг не нужно, просто используйте программу less. Там, замечу, поиск есть и по подстроке, и по номеру строки.

Parthen аватар

"Установка" приложений

Есть у меня консольное приложение на Паскале. Несколько вопросов:
1) Как без alias сделать запуск приложения через команду?
$ pascal-app к примеру.
2) Как вообще работает обработка флагов в самой программе?
3) Где находятся все установленные программы, т.е. как заставить мой лаунчер приложений (Rofi/dmenu) видеть мои программы?

buq аватар

Если dmenu

> 3) Если вы пользуютесь dmenu(точнее dmenu_run), то после добавления директории в переменную $PATH (как описал Андрей Викторович) надо сделать еще 2 шага:
1) удалите папку ~/.cache/dmenu_run
2) и сделайте вот так: source .bash_profile

admin аватар

какую ещё папку?!

ПАПКИ — В ШКАФУ!!!

А source делать не обязательно, даже в систему можно не перезаходить, достаточно xterm закрыть и новый открыть.

buq аватар

> ПАПКИ — В ШКАФУ!!! ... так и есть, извиняюсь)

После добавления директории в $PATH, емулятор терминала находит(автозаполняет) имя бинарника в свежедобавленной директории. А вот dmenu_run -- нет. В dmenu можно будет написать полное имя программы и он запустится, но автозаполнять не будет. Поэтому надо удалить его кэш, и сделать "source .bash_profile"(Или можно просто перезаходить).

> 3)Легко. Если

> 3)
Легко. Если rofi запускаешь в режиме run, то там будет список всех приложений, которые лежать в директориях, которые указаны в PATH. То есть, как уже писал Андрей Викторович, нужно создать какую-нибудь директорию (~/bin, например), где будут лежать бинарники твоих программ и добавить путь в PATH. Ну или можешь свои программы положить в любой из каталогов, перечисленных в PATH, но мне кажется ~/bin получше будет.
C dmenu, вроде, всё так же. У rofi есть, кстати, тема, которая точь в точь копирует dmenu.

как заставить

как заставить мой лаунчер приложений (Rofi/dmenu) видеть мои программы
Rofi и dmenu просматривают каталоги, прописанные в $PATH, тут никакой магии.

admin аватар

> 1) Как без alias

> 1) Как без alias сделать запуск приложения через команду?

Откройте для себя переменные окружения и среди них — переменную PATH; например, дайте такую команду:

    echo $PATH

Дальше есть два пути: либо добавить в эту PATH какую-то свою директорию вроде /home/vasya/bin и бинарники складывать туда, либо положить бинарник в одну из директорий, которые в PATH уже есть; в соответствии с обычными соглашениями об использовании директорий в ОС Unix лучше всего для этого подходит /usr/local/bin, она обычно уже в PATH, если это не так в вашей системе — просто исправьте, то есть найдите, где в недрах /etc задаётся значение для PATH и добавьте туда /usr/local/bin и /usr/local/sbin. Недостаток этого решения в том, что для "установки" вашего приложения вам потребуется давать команды с правами root'а.

"Свою" директорию для бинарников вы можете организовать без root'а, достаточно в ~/.bash_profile добавить что-то вроде

    export PATH=$PATH:/home/vasya/bin

Добавлю, что рассказ про переменные окружения есть в первом томе, пар.1.2.16.

> 2) Как вообще работает обработка флагов в самой программе?

Если вы под "флагами" имеете в виду аргументы командной строки, то ответ на ваш вопрос приведён в пар.2.6.12. Собственно, параграф именно этому вопросу и посвящён.

> как заставить мой лаунчер приложений (Rofi/dmenu) видеть мои программы?

А вот фиг его знает :-) Ну то есть я могу, наверное, полезть в поисковики и найти ответ, но вы это можете сделать ничуть не хуже меня.

Parthen аватар

Почему-то у

Почему-то у меня такое чувство, что лучше хотя бы на уровне простенького сисадмина сначала изучить Линукс, а уже после садиться писать за программы. Иначе любые попытки написать что-то серьезное останавливаются плохим знанием ОС.

admin аватар

А зачем

А зачем "изучать" Linux? Вы же в нём живёте, он сам собой через некоторое время "изучится". Вот переменная PATH и вообще окружение вам уже потребовались, поздравлям-с, +1 к админству :-)

На самом деле всерьёз изучать систему, не зная Си, несколько тяжко; но чтобы научиться программировать на Си, нужно сначала просто научиться программировать, и Си для этого не подходит, нужен Паскаль. Вот тут круг, собственно, и замыкается — ну, во всяком случае так может показаться.

В действительности нет никакого "круга", барьер вхождения в использование Linux вы уже преодолели — вы же в нём живёте теперь. Просто дёргаться не надо и комплексовать, что, мол, того не знаю, этого не знаю. Вы же не на работу устраиваетесь админом, правда? Ну, во всяком случае не прямо сейчас.

Указатель на указатель

На странице 429 приведен пример удаления отрицательных чисел из односвязного списка с помощью указателя на указатель. Если число в pp^^.data отрицательное, то изменяется указатель текущего элемента на следующий. Но как осуществляется соединение указателя next предыдущего элемента с новым? Ведь в указателе next предыдущего элемента лежит адрес старого удаленного элемента.
Вроде как мы изменили указатель pp^, положив в него адрес следующего элемента, но указатель предыдущего (его поля next) остался неизменным. Не могу догадаться, что происходит.
При этом конструкция tmp^.next := tmp^.next^.next на стр.427 мне понятна: изменяем адрес указателя следующего элемента (если его поле отрицательно) на следующий следующего, т.е. выполняется как бы сдвиг влево.

admin аватар

> Если число в

> Если число в pp^^.data отрицательное, то изменяется указатель текущего элемента на следующий.

Совсем наоборот: это происходит в ветке else, то есть в случае, если элемент неотрицательный и удалять его не нужно. Указатель pp (тот самый "на текущий элемент", переменная цикла) меняется _только_ в ветке else, если кажется, что это не так, то это только кажется.

> Ведь в указателе next предыдущего элемента лежит адрес старого удаленного элемента.

Если говорить о той ветке, которая then, то там первая строчка

tmp := pp^;

запоминает в переменной tmp адрес того элемента, который будет удалён. Следующая строка

pp^ := pp^^.next;

как раз изменяет поле next предыдущего элемента (либо указатель first, если речь идёт о самом первом элементе списка), ведь именно на него указывает pp, а изменяется тут не сам pp, а pp^ — то, на что указывает pp (то самое поле next либо указатель first). Между прочим, сам-то pp при этом вообще не меняется.

Ну а третья строка просто удаляет элемент, который из списка уже исключён и больше не нужен.

> т.е. выполняется как бы сдвиг влево.

Точно нет. Как прокомментировать ваше "понимание", я не знаю, поскольку вашу фразу не понял; но точно не так.

Как гром среди

Как гром среди ясного неба. Я осознал, что в pp хранится указатель на next (если это не первый), а через pp^ мы собственно указываем на этот следующий и его же удаляем. Еще раз рассмотрев рисунок и прочитав ваши объяснения, понял. Спасибо!

> Точно нет. Как прокомментировать ваше

Визуально это можно представить так: один элемент удаляется, вместо него ставится "хвост". Ну или перебрасывается стрелочка на следующий следующего.

admin аватар

> Как гром среди

> Как гром среди ясного неба.

Ничего, не вы первый, не вы последний :-) Указатели — это такая штука, что в какой-то момент мозги должны сделать некий "щёлк", чтобы начать нормально с ними работать. Вот у вас только что этот "щёлк" и произошёл, поздравляю.

> перебрасывается стрелочка на следующий следующего.

Такое понимание намного правильнее, ведь все элементы остаются, где были (в смысле, где лежали в памяти, там и лежат), никто никуда не сдвигается. А вот стрелочки — дело совсем другое.

Способности

Здравствуйте.Возник вопрос. Какого уровня желательно придумывать алгоритмы, чтобы быть более менее хорошим программистом. Мне вот нужно было перемешать символы в строке. Я кое как придумал на основе random, но я понимаю что это плохой алгоритм, так как он сравнивает выдачу random с массивом индексов которые были выданы и использованы до текущей проверки. Для моих целей он подойдёт, но думаю если будет он мешать очень большой массив данных то это может быть очень долго.

Нашел другой элегантный алгоритм тасование Фишера — Йетса. И понял, что сам бы я вряд ли догадался до такого. Вот и вопрос возник, насколько важно мочь придумать нечто подобное. Или все же можно дойти до какого то уровня более менее сносного не придумывая супер хороших алгоритмов, а используя и разбираясь в уже придуманных до меня?

admin аватар

Всё ещё проще

Всё ещё проще — можно и своих не придумывать, и в чужих не разбираться, а просто писать программы. Серьёзная алгоритмистика в практическом программировании требуется довольно редко. Конечно, иногда она всё-таки требуется, никуда не денешься, так что желательно понимать, что делать, если вдруг чего; ну, хотя бы куда посмотреть. Но изучение этой области можно оставить "на потом" :-)

Но вообще вот это вот "берём последний из оставшихся, меняем со случайным, и так пока элементы не кончатся" — штука довольно очевидная.

Жабаскрипт

После просмотра вашего видео о вреде жабаскрипта появился следующий вопрос. Существуют методы выхода за пределы "песочницы" и последующего исполнения произвольного кода, но правильно ли я понимаю, что все равно выполнение этого кода ограничено полномочиями процесса браузера (хотя, даже если и так, то этого все равно достаточно, чтобы отключить жабаскрипт в браузере) и, следовательно, на систему в целом этот код повлиять не может?

Parthen аватар

На ПК повлиять

На ПК повлиять не может, а вот телеметрию соберёт с большим удовольствием. Так что лучше все-таки в виртуалке как по мне.

admin аватар

Пожалуй,

Пожалуй, соглашусь — на виртуалке в целом правильнее.

admin аватар

В принципе да,

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

Иной вопрос, что мейнстрим пока ещё форточки, и много мы там видим пользователей, создающих (хотя бы просто создающих) не-администраторские учётки? Таких, которые специально для браузера используют альтернативные учётные записи, я вообще не уверен, что хоть один найдётся.

А с другой стороны, даже если из песочницы никто не вырвется -- вот, например, повесить браузер наглухо, чтоб его пришлось прибивать, JS может всегда и без каких-либо проблем. Одного этого уже достаточно, чтоб вебмакак, использующих JS (т.е. просто всех) начать отстреливать.

Здравствуйте,

Здравствуйте, Андрей Викторович, прочитал первую часть вашей книги про паскаль, пытаюсь сделать свою игрушку (простенькое 3д - рейкастинг), так вот хочется чтобы размеры карты для игры задавались из текстового файла - файла настроек. Как лучше всего реализовать 2d-карту игры (XZ - вид сверху), которая необходима для определения столкновений объектов? Какую структуру данных использовать? Так как размеры берутся из файла, то необходимы динамические данные, но реализовать это с помощью очереди, или деки получается затратно (много переходов по указателю для определения столкновения). Хочется использовать динамический массив, но вы говорили, что они представляют из себя не то, что о них думают. Нашел, что можно выделять память по указателю с помощью getmem, допустимо ли это? Также обнаружил такую вешь как адресная арифметика, прибавление к указателю какого-нибудь значения будет всяко эффективнией, чем переходы по указателю (ведь так?). Что лучше всего использовать для решения данной задачи?

Parthen аватар

Эка вы замахнулись

Один парень на ютубе таким же занимается (правда на С++, но вам сам алгоритм понять).
Ютуб:
https://www.youtube.com/user/ivan78641
Invidious:
https://yewtu.be/channel/UCq95P8i1jJLLegYcm0Y2YTw

Да, спасибо,

Да, спасибо, наверное, первое видео, которое я посмотрел по этой теме) Хоть реализация и похожа на реализацию другого блогера (англоязычного) javidx9 (https://yewtu.be/watch?v=xW8skO7MFYw), объяснения очень доступные. Вообще, изначально наткнулся на данный проект: https://github.com/myxo/ascii_doom (ролик: https://yewtu.be/watch?v=glu4Nv1USdo), после чего и захотелось сделать что-то подобное

admin аватар

Я вот чего не

Я вот чего не понял — в книге ни слова про графику, вы её-то как делать будете? Или я словосочетание "3д - рейкастинг" неправильно истолковал?

Что касается динамических массивов и адресной арифметики, то тут всё зависит от ваших целей. Вы сейчас чего хотите достичь? Варианты такие: 1) написать игру (ну, мало ли зачем — например, денег заработать); 2) научиться программировать конкретно на Free Pascal; 3) научиться программировать вообще. Если ваша цель первая или вторая — допустимо всё, что найдёте. Если третья — то от освоения списков пользы будет на порядки больше, чем от динамических массивов, адресной арифметики и getmem. Эти-то штуки от вас никуда не денутся, рано или поздно доберётесь до Си, там это всё в полный рост; а вот списки если сейчас не освоите, то так и будете их побаиваться подсознательно.

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

ну, мало ли

ну, мало ли зачем — например, денег заработать
А как это можно сделать? В смысле, не вообще :), а в контексте вот так вот возникшего желания написать игру.

Ну, судя по

Ну, судя по комментам, игра расположенная полностью на сервере и просящая деньги за доступ к этому серверу - рабочий вариант. Если кто-то достаточно трудолюбивый, сможет её вытащить - ну молодец, игра стала бесплатной. :)

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

admin аватар

Тут дело в чём,

Тут дело в чём, обычно люди "за поиграть" денег не платят, поскольку хватает вариантов убить время, за которые денег никто не просит.

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

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

admin аватар

Вообще-то,

Вообще-то, конечно, никак, но не все это понимают.

Нет, вы всё

Нет, вы всё правильно поняли, графику реализовываю с помощью crt) Списки у меня тоже используются для очереди врагов, например. Просто интересна, как тогда написать пару-тройку программ на паскале объемом +- 2000 строк? Что писать? Данная задача мне показалась интересной (хардкорной)).

admin аватар

Если задача

Если задача кажется интересной, то её надо решать :-) пофигу мороз, как говорится.

Тут, пожалуй, есть два пути. Первый — таки да, динамический массив. Лучше карту хранить в одномерном массиве, а индекс нужного элемента вычислять как (y*width + x) — так намного проще, чем возня с динамическим массивом динамических массивов.

Второй путь скорее сугубо учебный, то есть я бы не посоветовал такое делать в "боевой" программе, но пока вы учитесь -- почему бы и нет. Способ в принципе не так чтоб сложный: вместо массива с индексами использовать дерево поиска, например, двоичное, с пресловутым индексом в роли ключа. В вашей задаче совершенно неважно, в каком конкретно порядке создавать клетки карты, так что можно чуток посоображать и придумать такой порядок, при котором дерево окажется идеально сбалансированным, так что поиск нужного элемента будет проходить за log_2^N операций.

Понятно,

Понятно, спасибо за интересную идею

Parthen аватар

Чувствую себя дурачком

Начал осваивать главу про указатели. Вроде сначала все просто, а вот на тех 2 задачах у меня полнейший ступор.
Это нормально? Понятно, что сложная глава, но чтобы прям вообще ступор на этих задачах -- это норма?
P.S. Очень сильно подозреваю в этом свое не до конца очищенное Питоновское мышление. При обучении питона односвязные списки преподаются вместе с массивами. Поэтому у меня даже мысли не возникло, что с ними можно обращаться так, как сделано в решении задачи.

При первом

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

Parthen аватар

А там в главе

А там в главе указано, что если не понял, лучше дальше пойти.
Или все-таки не сильно мозг травмирует?
Я вот эту задачу решаю, даже что-то понимаю, но мозг упорно отказывается воспринимать это все.
Кстати, а не помните ту задачку?

admin аватар

"На тех двух"

"На тех двух" — это какие?

Вообще указатели — это штука весьма нетривиальная. Если бы не они, то в принципе можно было бы, наверное, вздохнуть по поводу побочных эффектов и таки начинать обучение сразу с Си. Но указатели есть, и, как ни крути, а факт их существования — это основная причина того, что во "Введении в профессию" вообще есть часть про Паскаль.

Что до Питона — ну, могу посочувствовать, действительно мозги от этой гадости прочистить довольно сложно.

У нас вот в

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

admin аватар

> был Паскаль,

> был Паскаль, но указатели нам почему-то не преподавали.

Преподавать Паскаль без указателей — практически пустая трата времени.

> естественно на Виндовс

Ещё лучше.

> нам преподают указатели на С++ и мне почти ничего не понятно

Не волнуйтесь, здесь проблема не в вас. Точнее, в вас тоже может быть какая-то проблема (нельзя же в самом деле утверждать, что её нет), но при таком построении "курса программирования" понятно быть просто не может.

> что мне делать в моей ситуации?

Что-то, мозги беречь. Ту хрень, которую вам втюхивают под видом программирования — сдать и забыть. А если хотите при этом ещё и научиться программировать — ну вот книжка есть.

Parthen аватар

Задачи на

Задачи на странице 411.
Просто вот в общем, ученики долго ее понимают? Может просто надо несколько недель, чтобы устаканилось

А сколько раз и

А сколько раз и с какой скоростью Вы прочитали главу про указатели?

Parthen аватар

Андрей

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

Я бы не

Я бы не советовал читать очень уж быстро, по-крайней мере пока Вы не уверены в том, что все правильно поняли. По-крайней мере я так поступаю: каждую новую главу читаю сначала несколько раз достаточно не быстро, углубляясь в каждое слово и каждую фразу. Это, кстати, помогает лучше запомнить то, что я прочитал и понял! Нет смысла спешить читать, а после перечитывать все заново, когда окажется, что Вы не правильно поняли материал.

admin аватар

Подозреваю, всю

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

Задачи

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

admin аватар

Это потому что

Это потому что вы умеете рекурсию. Для большинства новичков рекурсия сама по себе — это барьер примерно такой же высоты, как и указатели.

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

> Это потому что

> Это потому что вы умеете рекурсию.

Походу, не умею. То ли решение через «чистую» рекурсию вообще нет, то ли у меня не хватает ума его найти.

Двухкратный вывод с использованием рекурсии у меня получается только с помощью указателей, которые позволяют развернуть стек вызова, находясь на вершине рекурсии.

> не предполагающих оптимизацию хвостовой рекурсии

В данном случае всё равно рекурсия не хвостовая получается. Рекурсия просто заменяет собой new/dispose. Хоть и с потерей эффективности, но зато код становится гораздо понятнее, чем если с циклами.

admin аватар

> То ли решение

> То ли решение через «чистую» рекурсию вообще нет

Честно говоря, не знаю, что такое чистая рекурсия. Двойной вывод делается тупо двумя вызовами одного и того же. Или если вот прям припёрло дважды всё напечатать за одно "заныривание" в рекурсию, то вторым параметром передаём указатель на начало (первым, естественно, указатель на текущий элемент). Когда список кончился, а второй параметр не пуст, вызываем сами себя, поместив значение из второго параметра в первый, а во второй -- нулевой указатель.

> В данном случае всё равно рекурсия не хвостовая получается.

Преобразуется в хвостовую без особых проблем введением дополнительных параметров.

> Рекурсия просто заменяет собой new/dispose.

А, подождите, вы что, имеете в виду вообще без списков? Нет, без списков, конечно, не получится, аппаратный стек всего один.

> А, подождите,

> А, подождите, вы что, имеете в виду вообще без списков?

Это я и имел ввиду под чистой рекурсией — использовать стек вызовов вместо самодельного.

> аппаратный стек всего один.

А, ну да, и в норме достать что-то со дна не получится. не разобрав вершину стека.

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

Как оказалось, в FPC всё-таки есть оптимизация хвостовой рекурсии, если при компиляции добавить какой-нибудь из флагов: -O2, -O3, -O4.

> Стек не резиновый.

А вот проверки его переполнения в FPC, по крайней мере, по умолчанию, нет. Если подать на вход моей программы слишком много данных, она сегфолтится.

admin аватар

Да, это тот

Да, это тот самый барьер. Если можете себе позволить сделать паузу — сделайте её. Там в книжке на последующих страницах эти две задачи подробно рассмотрены, разжёваны и разложены по полочкам, но сообразить самому — многократно полезнее.

Экзамены...

Здравствуйте, Андрей Викторович. В связи с нынешней обстановкой в университете, где я учусь, экзамены проводятся онлайн (что уже само по себе смешно, конечно) и преподаватели настоятельно требуют у студентов включать камеры и микрофоны (а иногда, даже, демонстрировать различные документы в камеру), аргументируя, якобы, необходимостью в идентификации студента. Дело усугубляется тем, что это все происходит через сторонние иностранные платформы для видеоконференций. Я писал различные заявления и просьбы преподавателям провести эказмен очно, либо без видеоконференций, писал в инстанции, занимающиеся "защитой" персональных данных, но все безуспешно. Насколько я знаю, вы преподаете в МГУ и, если можно, не могли бы вы сказать как дела с этим обстоит там ?

admin аватар

Грядущая

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

Добрый день,

Добрый день, Андрей Викторович! Хотелось бы узнать ваше мнение. Как вы относитесь к криптовалютам? Есть ли за ними будущее? В последнее время они стали слишком популярны и многие известные люди твердят, что именно за криптой будущее. Думаю многим бы хотелось услышать ваше мнение по этому поводу.

admin аватар

Вообще я

Вообще я праздные вопросы не по делу обычно не раскрываю, но конкретно эта тема совсем недавно тут обсуждалась: http://www.stolyarov.info/node/316#comment-4238

Parthen аватар

Покуда вспомнил

Я узнал, что с tmux в консоли можно сделать подобие тайлинга, что нивелирует преимущества Иксов. Собственно, отказываюсь от Иксов, переходу в консоль, но вот проблема: русская локализация. Vk-cli, который в консоли на русском
пишет у меня отображается кракозябрами:
"10 А русс∆∆∆ ∆∆∆∆ ∆ ∆∆∆ера∆ура"
Только вместо треугольников ромбики -- без знаков вопроса внутри, просто закрашенные.
Русская локаль есть, locale -a выдает en и ru UTF-8.
Вопроса два: как решить эту проблему (я, так понимаю, проблема с кодировкой) и как блин вводить русский текст? setxkbmap без Иксов не работает.

Для изменения

Для изменения раскладки есть команда loadkeys. Из готовых раскладок есть, например, "ru", где переключение происходит по Ctrl+Shift. loadkeys действует только на текущую консоль, изменения теряются после перезагрузки. Способ задания раскладки при загрузке зависит от дистрибутива. Например, в Дебиане/Убунту это делается командой "dpkg-reconfigure keyboard-configuration" либо прямым редактированием /etc/default/keyboard.

Кракозябры, скорее всего, из-за некорректного шрифта. Меняется он через setfont. Попробуйте, скажем, "cyr-sun16". Опять же, это только для текущей консоли, и задание шрифта при загрузке, опять же, зависит от дистрибутива. В Дебиане/Убунту можно через "dpkg-reconfigure console-setup" либо прямым редактированием /etc/default/console-setup.

Parthen аватар

При loadkeys ru -- cannot

При loadkeys ru -- cannot open file ru.
На всякий случай вывод locale -a:

parthen@devuan-pc:~$ locale -a
C
C.UTF-8
en_US.utf8
POSIX
ru_RU.utf8

Шрифт cyr-sun16 открыть не может.

man loadkeys, нужно

man loadkeys, нужно грузить keymap, они расположены в /usr/share/kbd/keymaps

Parthen аватар

А все решения в

А все решения в инете для системд. У меня вот директории kbd не существует.

console-cyrillic

console-cyrillic

Parthen аватар

console-cyrillic is already

console-cyrillic is already the newest version (0.9-17)
ЧЯДНТ?

Нужно поменять

Нужно поменять шрифт (который поддерживает кириллицу) в /etc/default/console-setup. Их, в свою очередь, можно найти /usr/share/consolefonts/. Дай знать, если что-то получись из этого!

У самого такая проблема была, когда нужно было поменять размер шрифта в виртуальной консоли. На то время у меня был Arch Linux с systemd и это можно было сделать в /etc/vconsole.conf, установив переменную FONT в нужное название шрифта. У себя на Devuan'е (с sysvinit) я этого, конечно, не нашел, но нашел вот такую статейку, которая загрузиться и без джаваскрипта :)

Parthen аватар

Большое спасибо!

Русский отлично отображается после вот такого маневра в /etc/default/console-setup:
CODESET="CyrSlav"
Остается только проблема ввода русского текста

admin аватар

Лично я понятия

Лично я понятия не имею, как с этим всем работать, у меня вообще везде koi8r (но консолью я пользуюсь только для root'овых сеансов, всё остальное в иксах). Коммент я ваш раскрыл в надежде, что тут будет мимо проходить кто-нибудь, кто понимает, о чём речь.

Выживание в цифровом мире

Андрей Викторович, сейчас, кажется, без смартфона никуда, особенно в Москве, QR-коды, мобильный банкинг, приложения такси, гос-мос-услуги и все остальное в Интернете. Многие вещи уже заведомо подразумевают использование смартфонов, т.к требуются селфи или данные с датчиков (геолокация или даже гироскоп, по которому следят за манерой вождения автомобиля таксистами). Для образования требовались компьютер с Windows, Zoom, Skype, Microsoft Office, а на смартфоне WhatsApp, никто с СПО возиться не хочет. Как с этим быть? С теми кто хоть как-то высказывает свое возмущение не церемонятся, семеро одного не ждут, не хочешь - твои проблемы, увольняйся, отчисляйся. Не только о приватности и столлмановщине речь, но ведь даже альтернативы нет, человек должен использовать "экосистему" от Apple, либо от Google, соглашаться с и их пользовательскими соглашениями, что бы получить услугу от своего государства, должен в случае с таксистами, подвергаться штрафам от работодателей, которые используют данные с датчиков, которые не имеют никакой поверки и никто не отвечает за их точность и многое другое. Как-то это странно и не отрегулировано все, ведь нет даже законов, которые обязывали бы человека иметь не то что смартфон, а даже номер телефона, но такой человек выпадает из жизни

Жизнь без смартфона

Как-то это странно и не отрегулировано все, ведь нет даже законов, которые обязывали бы человека иметь не то что смартфон, а даже номер телефона, но такой человек выпадает из жизни

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

admin аватар

Лично я не

Лично я не использую смартфоны. И я пока что не заметил, чтобы "выпал из жизни".

Всё это вопрос личного выбора. Готов быть цифровым рабом на цифровых галерах и носить цифровые зонды в заднице — им и будешь. Не готов — разбей смартфон об асфальт и купи бабушкофон (и, кстати, желательно, чтобы этот бабушкофон лежал всегда дома, то есть работал как телефон, но не как мобильный), забудь про то, что можно деньги платить как-то иначе, нежели наличными, предложение поставить мобильное приложение (любое) рассматривай как личное оскорбление. И всегда, везде, где только кому-то придёт в голову спросить, есть ли у тебя мобильное приложение такое-то там, гордо отвечай "я не пользуюсь смартфонами". Во всяком случае, я вот именно так и делаю.

Да, придётся обойтись без каршеринга и арендных велосипедов. А такси придётся либо голосом заказывать, либо "тормозить" по-старинке, встав на краю тротуара и подняв руку (часто выходит дешевле, чем через агрегаторов). Ничего, это не страшно. Я, во всяком случае, серьёзных неудобств не замечаю.

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

Parthen аватар

Андрей

Андрей Викторович, это все конечно хорошо, но вы забываете одну вещь. Вы можете отказаться от вещей, где используются смартфоны. А вот ТС (как я понял, студент или школьник) не может, ровно как и я.
Ну вот представьте мой день. Утром встаешь, лезешь в телефон за расписанием, которое есть только во ВКонтакте. Приходишь на урок, все общаются о том, какие они посты выложили в Инстаграмме. Учитель приходит на первый урок и скидывает во ВКонтакте задание на урок. После окончания урок во ВКонтакте скидывается ДЗ, а оценки ставятся в электронный журнал, существующий только в виде более-менее нормального приложения на смартфон или в виде глючного сайта на жс (кстати, единственный сайт который требует от меня включить XHR, я даже не знаю, что это такое).
Я конечно могу сидеть сам по себе (чем я занимаюсь), но вот игнорировать дз не могу.
Так еще на дистанционке заставили переименовать аккаунт в реальные ФИ. И блин, я уже не говорю чтобы перенести все это в Matrix/XMPP/Email, вы мне хотя бы в Телеграм скидывайте, он в разы лучше ВКонтакте.
А 2 месяца назад закрылся бот-мост в Телеге. Теперь приходится сидеть с клиента ВК, у которого по данным Aurora Store 14 трекеров.

admin аватар

Да неужели?!

А вы директору школы заявление о невозможности использования смартфонов подавали? А вы жалобу в Рособрнадзор направили? А вы хоть что-то сделали, чтоб тем моральным уродам, которые являются вашими учителями, стало плохо?

Если нет (а очень похоже, что нет) — то это тоже личный выбор. Вы можете отказаться от использования всей этой мерзости точно так же, как и я. Просто вы считаете для себя неприемлемыми последствия такого отказа, а продолжение использования всей перечисленной дряни считаете приемлемыми. А нужно наоборот: vk и смартфоны неприемлемы, точка, все свободны, мне по сараю, что вы там про это думаете, а попытаетесь меня за это покарать (ну там двойку поставить) — я телеги накатаю во все инстанции, до каких дотянусь.

Учтите простую вещь: фраза "я так не могу" — это тоже личный выбор.

Parthen аватар

Справедливо

>Просто вы считаете для себя неприемлемыми последствия такого отказа, а продолжение использования всей перечисленной дряни считаете приемлемыми.
Вообще да, бодаться я не буду по той простой причине, что приедет ОбрНадзор, проходили (выставили мою фотографию в интернет, а я это дело сильно не терплю), бодались в итоге 2 месяца. Дободался, фотографию удалили, а учитель смотрит на меня как на бесенка.
Так что да, справедливо -- мой выбор не бодаться так с учителями основных предметов, т.к. мне ещё как-то ЕГЭ сдавать, а денег на репититора нет. И если в условной информатике я уверен, математику также вытащу, то вот русский язык мне даётся тяжко.
P.S. А вообще полный отказ от ВК мне же и выйдет боком -- у одноклассников не спросить ничего будет.

admin аватар

Понимаю и не

Понимаю и не осуждаю.

Впрочем, даже в такой ситуации всё ещё можно много чего сделать. Например, для смартфона иметь отдельную сим-карту и использовать его (вместе с симкартой) только для того, чего от вас в школе хотят, а для всего остального (в том числе для общения с кем бы то ни было кроме учителей) — бабушкофон и другую симку. Смартфон с собой носить в школу, но обесточенным — включать его только в школе и ещё дома во время выполнения домашней работы, всё остальное время держать выключенным (хотя бы в авиарежиме). И так далее.

Parthen аватар

Собственно, все

Собственно, все эти меры давно приняты.
Но что ещё: я помню, вы как-то Андроид в один ряд с виндой поставили, а Андроид все же получше. Гугл по решению антимонопольной комиссии выкладывает исходники каждый год. Некоторые энтузиасты из этих исходников собирают нормальный Андроид. На одном из таких я и сижу -- AOSP (Android Open Source Project) Extended.

Смартфон - не

Смартфон - не только Андроид. Есть ядро Linux с вендорскими блобами, есть отдельные от ядра драйверы, цепочка аппаратно-специфичных загрузчиков, прошивка модуля связи, etc. И всё это с закрытыми исходниками, без возможности создать аналог (спецификации железа тоже закрыты, а метод проб и ошибок не катит в силу быстрой смены моделей в продаже). Всё это создатели открытых прошивок вынуждены заботливо сохранять, да ещё и плясать с бубном, чтобы заставить работать.
В ПК намертво закрытого и безальтернативного почти нет. Даже закрытую со всех сторон Винду можно сменить на другую ОС. И, как ни странно, Микрософт даже приложил усилия, чтобы сохранить эту возможность после повсеместного внедрения Secure Boot. Но только на ПК - на планшеты и смартфоны с виндой они продвигают те же запреты, что и Гугл на Андроид-фоны.

Почему же тогда

Почему же тогда Libre Boot поддерживает так мало материнских плат? А за свободные компьютеры (purism, system76) требуют немалых денег? На пк с этим тоже немало проблем

Parthen аватар

Вообще,

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

> Идешь в

> Идешь в магазин покупать ПК -- смотришь, есть ли он в списке всяких свободных прошивок

А вот фиг тебе. ME или PSP есть во всех новых x86-компьютерах.

Разве что одноплатники на ARM смотреть.

Parthen аватар

Итак, у нас есть

Итак, у нас есть программа с посимвольной обработкой ввода.

...
TestProcedure(f1);
if IOResult <> 0 then
    write('Succesful')
...

Внимание вопрос: если во время исполнения прцедуры произойдет ошибка, как себя поведет программа? Выйдет ли она из процедуры, или в самой процедуре напишет невнятную ошибку?

admin аватар

Зависит от

Зависит от того, в каком режиме ({$I-} или {$I+}) была откомпилирована та строчка программы (внутри этой TestProcedure), при выполнении которой случилась ошибка.

Parthen аватар

Тогда вопрос.

Тогда вопрос. Изменится ли IOResult, если ошибка возникла в процедуре, а директива {$I-} прописана:
1) после процедуры, но перед проверкой
2) в самой процедуре

admin аватар

Всё это не

Всё это не имеет значения. Имеет значение только одно: тот оператор, который произвёл ввод или вывод, был скомпилирован в I- или в I+.

Опечаточки и одна НЕПОНЯТКА :-)

Том 1, страница 602, конец последнего абзаца:
"Паскаля закончит командой" - пропущено ":" в самом конце.

Том 1, страница 613, первый абзац параграфа про Псевдокоманды:
"--- нам уже известны из \Sx\ref{memory_reservation}" - я так понимаю это синтаксис какой-то команды LaTeX'а, который подставил бы: <длинное тире> нам уже известны из <знак параграфа>.3.2.3. (Директивы для отведения памяти).

Том 1, страница 624, 2 абзац с черточки после определения <<ленивой>>:
Однако ассембер... - пропущена буква 'л', ассембЛер

Ну и лично для себя хотелось бы прояснить одну непонятку:

Том 1, страница 579, предпоследний абзац. Никак не пойму пример с использованием and, написано, что можно получить остаток от деления беззнакового числа на степень двойки (от 1 до 32 степени); приводится пример "and eax,3" - мол, оставит в eax остаток от деления его исходного значения на 4. 2 в степени 3 = 8. Даже если говорить, что 3 - это не степень, а то на что делим, то почему в конечном итоге мы делим на 4?
Ну не понимаю, и все бы ничего, но ведь зудит в одном месте от любопытства происходящего :D

С наилучшими пожеланиями, Anonymous!
( Капчу как орешки щелкаю <смеется/> )

admin аватар

> "Паскаля

> "Паскаля закончит командой" - пропущено ":" в самом конце.

Ни черта там не пропущено, не нужно здесь двоеточие.

> Том 1, страница 613

Есть вот такая страничка: http://www.stolyarov.info/books/programming_intro/e2errata Там эта ошибка уже упоминается.

> ассембер

Спасибо, эту вы первым заметили :-)

> and eax,3

Ох. Ну вот 3 -- это в двоичной системе что? Это 00000...00011 (все нолики, только два младших разряда единички). Что, стало быть, делает and eax, 3? Выделяет два младших разряда, точнее -- все разряды, кроме двух младших, обнуляет. Ну а два младших двоичных разряда и есть остаток от деления на 4.

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

Вопрос по системам счисления

Андрей Викторович, добрый день!
Вопрос может и глупый, но для меня важный: почему при переводе, скажем, из двоичной системы счисления умножением каждой цифры этого числа на 2 в n-ой степени мы получаем число именно в десятичной системе? И как, скажем, перевести число сразу из двоичной в семеричную систему?

почему при

почему при переводе, скажем, из двоичной системы счисления умножением каждой цифры этого числа на 2 в n-ой степени мы получаем число именно в десятичной системе?

Потому что мы умножаем эти цифры на 2 в n-ой степени в десятичной системе. Если будем умножать цифры (предварительно переведя их, если необходимо) в другой системе, то получим и результат в другой системе.

И как, скажем, перевести число сразу из двоичной в семеричную систему?

Да легко!

Чтобы не было путаницы, я буду записывать каждое число в форме n[k], где k -- десятичное число, задающее основание системы счисления (в книгах обычно используют нижний индекс для этой цели), а n -- собственно число в заданной системе. В системах счисления, основание которых превышает 10, в дополнение к десятичным цифрам буду использовать последовательные буквы английского алфавита (а системы счисления, основание которых превышает 36 рассматривать не буду). Примеры: 12AB0[16], 1011[2], 356[7], 234[5]=153[6], 17B[13]+23[4]=93[31], и т. д.

Перевод из двоичной в десятичную, по формуле:
1011[2] =
= 1[2]*10[2]^0[2] + 1[2]*10[2]^1[2] + 0[2]*10[2]^10[2] + 1[2]*10[2]^11[2] =
= 1[10]*2[10]^0[10] + 1[10]*2[10]^1[10] + 0[10]*2[10]^2[10] + 1[10]*2[10]^3[10] =
= 1[10] + 2[10] + 0[10] + 8[10] =
= 11[10]

Из двоичной в семеричную, ровно по той же формуле:
1011[2] =
= 1[2]*10[2]^0[2] + 1[2]*10[2]^1[2] + 0[2]*10[2]^10[2] + 1[2]*10[2]^11[2] =
= 1[7]*2[7]^0[7] + 1[7]*2[7]^1[7] + 0[7]*2[7]^2[7] + 1[7]*2[7]^3[7] =
= 1[7] + 2[7] + 0[7] + 11[7] =
= 14[7]

Пример посложнее, из [15] в [11]:
27E[15] =
= E[15]*10[15]^0[15] + 7[15]*10[15]^1[15] + 2[15]*10[15]^2[15] =
= 13[11]*14[11]^0[11] + 7[11]*14[11]^1[11] + 2[11]*14[11]^2[11] =
= 13[11] + 96[11] + 37A[11] =
= 478[11]

Из [3] в [2]:
101210[3] =
= 0[3]*10[3]^0[3] + 1[3]*10[3]^1[3] + 2[3]*10[3]^2[3] + 1[3]*10[3]^10[3] + 0[3]*10[3]^11[3] + 1[3]*10[3]^12[3] =
= 0[2]*11[2]^0[2] + 1[2]*11[2]^1[2] + 10[2]*11[2]^10[2] + 1[2]*11[2]^11[2] + 0[2]*11[2]^100[2] + 1[2]*11[2]^101[2] =
= 0[2] + 11[2] + 10010[2] + 11011[2] + 0[2] + 11110011[2] =
= 100100011[2]

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

admin аватар

> Да

> Да легко!

фигассе легко :-)

Ненуачо? :-)

Ненуачо? :-) Процесс нудный, но не сложный.

Вся эта писанина с n[k] выглядит громоздко, конечно. Но тут мне важно было показать вопрошающему, что для всякого числа в процессе перевода нужно учитывать, в какой системе счисления оно записано. А так-то можно и попроще записывать:

раскладываем в двоичной:
1011 = 1*10^0 + 1*10^1 + 0*10^10 + 1*10^11
переходим к семеричной и собираем обратно:
1*2^0 + 1*2^1 + 0*2^2 + 1*2^3 = 1 + 2 + 0 + 11 = 13

собираем обратно

1 + 2 + 0 + 11 = 13 14

admin аватар

> почему ... мы

> почему ... мы получаем число именно в десятичной системе?

Потому что сами в ней считаем. Так нас в детстве научили.

> как, скажем, перевести число сразу из двоичной в семеричную систему?

Научиться все арифметические действия, в том числе возведение в степень, умножение, деление и всё прочее делать сразу в семеричной системе. Не так чтоб совсем невозможно, но для большинства людей нереально.

Несколько

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

Больше всего понравился Си и хотел бы изучить алгоритмы и «практическую математику».

Спасибо.

admin аватар

Думаю, что

Думаю, что стоит перейти от "чтения" к программированию. Что нужно читать дальше — станет ясно в ходе решения практических задач.

su заменил sudo

Последовал вашему совету и давно уже удалил sudo. Недвано нужно было установить пакет из исходников (из AUR). Решил посмотреть, что произойдет, если я вызову makepkg --install не будучи root. Я ожидал, что мне откажут в доступе. А выдалось такое:

WARNING: Cannot find the sudo binary. Will use su to acquire root privileges.
WARNING: A package has already been built, installing existing package...
Installing package sct with pacman -U...
Password:

Так этот su потребовал еще пароль от root. Этот su тоже следует удалить? Стоит Arch Linux.

admin аватар

su бывает

su бывает полезен для понижения полномочий (в сеансе root'а выполнить команду под обычным пользователем). Поэтому удалять его не надо, с него надо сбросить setuid bit командой chmod u-s /bin/su

Простите, но

Простите, но чем именно в сути плохо использовать 'sudo/sudors' то/те? Естественно, кроме того что уязвимости находят частенько, как к примеру недавняя так уж, CVE-2021-3156. Вроде бы как бы позволяет гибко настроить доступ в сравнении с использованием 'su', что есть собою более безопасней использование именно 'sudo' вместо 'su' как концепции.

admin аватар

Ещё раз, и

Ещё раз, и медленно: в сеансе работы нельзя повышать полномочия. Нельзя и всё. Точка.

Разумеется, su для повышения полномочий тоже использовать нельзя, отсюда рекомендация сбросить с него suid bit. И да, ssh root@0 тоже, естественно, нельзя. И мне, ей-богу, уже надоело отвечать на этот дебильный вопрос — до вас практически в той же формулировке его успели задать человек пятнадцать. Если для вас не очевидно, почему повышение полномочий в сеансе работы — действие категорически недопустимое и полностью запретное, то вам не следует обслуживать серьёзные системы.

Весьма

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

Андрей

Андрей Викторович, здравствуйте.
Вопрос, который может Вам показаться глупым (сразу извиняюсь): как в настоящее время можно заработать честному айтишнику на три корочки хлеба (может быть с маслом), не прибегая к госбюджету, работе на чужого дядю и всяческой копирастии?
Очень хочу услышать совет вольного художника. Заранее благодарю!
П.С. Куда мне идти, догадываюсь :)) но хотелось бы с пояснениями :))

admin аватар

Зависит от

Зависит от того, что этот честный айтишник умеет.

Вообще странная постановка вопроса. Госбюджет для айтишника, я бы сказал, так себе кормушка, там, судя по качеству результата, всё начальники распиливают, а всю работу делают набранные непонятно откуда обезьянки, которым, разумеется, платят как обезьянкам, а не как айтишникам (для того их и набирают). Копирастия могла бы быть актуальна для меня, поскольку я книжки пишу, но как бы большинство айтишников в этом не замечены, а в области программирования копирастия актуальна разве что для (условно) коробочного софта, какового не так много в общей массе.

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

Parthen аватар

В дополнение к Aseprite

Раз уж такое дело, как вообще разобраться, что опенсорс, а что нет, если плохо знаешь английский?
Ну то есть вот к примеру есть игра, на которую я всегда равнялся и считал ее идеалом в своей сфере -- Katawa Shoujo.
Я ее вроде как считал опенсорсом, потому что это одна из немногих программ, исходники которой я смотрел лично.
Но вот если посмотреть лицензию, там CC BY-NC-ND. То есть модификации делать запрещено (насколько помню, их сценарист не хотел, чтобы фанаты изуродовали произведение).
И если это программа, у которой нельзя делать производные, то она вроде как под GPL не подходит. Но в тоже время исходники всех версий открыты, денег не просят.

admin аватар

Ну, начать с

Ну, начать с того, что GPL — не догма. Больше того, раз уж я сертифицированный философ :-) — скажу, что с философской точки зрения та "свобода", которую Столлман воплотил в GPL, представляет собой прямо-таки хрестоматийный случай так называемой позитивной свободы, или свободы для. В действительности свобода (если это свобода, а не что-то другое) бывает только негативной, только "свободой от", а всевозможные "свободы для" — это, как ещё Исайя Берлин верно подметил, представляют собой лишь маски жестокой тирании (за дословность не ручаюсь, но можете глянуть мою диссертацию по философии вот тут: http://www.croco.net/croco/papers/stolyarov_philosophy_thesis_infofreedo... — там это всё разобрано).

С другой, ну вот вроде бы для программ должна быть свобода модификации. Но, например, для книг — ну, я бы сказал, вот прямо-таки ни за что, иначе найдётся масса желающих, например, исправить непонравившийся финал; ненуачо, пусть Эдмон Дантес таки женится на этой своей Мерседес, предварительно грохнув её мужа, а Базаров пусть выздоровеет, а а сын Атоса найдёт себе новую невесту, чтоб сам Атос вместе с Портосом и Д'Артаньяном славно погуляли на его свадьбе, и нефиг их всех там в финале морить, как это сделал Дюма. В общем, кто как, а вот лично я не хотел бы появления свободы модификации литературных произведений, если только это не сугубо утилитарная документация.

Если исходники открыты и денег не просят — это уже не копирасты. Конечно, правильнее было бы выделить некий "движок" и его отдать в более свободном варианте, то есть разрешить на нём делать другие игры (и совершенствовать сам движок при желании); но конкретная игра — всё-таки скорее не инструмент, как большинство программ, а художественное произведение, и требование его неизменности лично меня ни грамма не удивляет и не напрягает.

С другой, ну вот

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

И что в этом плохого? Если есть желающий исправить финал и есть желающий этот исправленный финал прочесть, то зачем же им мешать? Это уже будет проявлением информационного насилия.

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

admin аватар

Это будет

Это будет дичайшее зашумление, в котором невозможно будет отыскать оригинальные произведения, и никакие "механизмы, позволяющие что-то там узнать", тут не помогут — они будут либо сбоить то и дело, либо ими просто никто не станет пользоваться из-за полной бесполезности этого.

Если говорить об информационном насилии, то публикация таких вот "исправленных" произведений — это именно что информационное насилие, только уже над широкой публикой. А личные неимущественные права автора, к которым относится, в числе прочего, право на неприкосновенность произведения — как уже довольно давно показано, ничьих прав не нарушают и требование их соблюдения насилием не является.

Да, кстати, вы что на моём сайте забыли? Идеи, противоположные моим, вы имеете полное право высказывать, только не здесь.

Parthen аватар

Движок они не

Движок они не свой импользуют -- Renpy, де-факто стандарт в мире визуальных новелл, идет по лицензии MIT. И кстати он и есть причина моего выбора питона когда-то :)
Ну вот насчет художественных книг есть же фанфики. Оригинал не уродуют, а своих произведениях хоть что творите.
Ну в общем, если я правильно понял, свобода изменять нужна программам-инструментам, а не произведениям.

admin аватар

Подозреваю,

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

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

Но вот "свобода

Но вот "свобода модификации целостных художественных произведений" — это, IMHO, идея крайне неудачная.

А как же ремиксы? :)


Однажды, в студеную зимнюю пору,
Сижу за решёткой в темнице сырой.
Гляжу, поднимается медленно в гору
Вскормлённый в неволе орёл молодой.
...

admin аватар

С пародиями

С пародиями особых проблем не наблюдается, во многих юрисдикциях этот момент даже специально оговорён (в российской вроде бы нет).

Так или иначе, пародию с оригиналом никто не спутает, так что целостности исходных произведений она не нарушает.

Parthen аватар

Ну, созданием

Ну, созданием ВН я занимаюсь последние года 4 :)
Другое дело, что я вдруг вспомнил, что я вроде бы как хотел стать программистом, а не скриптером на языке Renpy/Python. Полез в Гугл искать языки, с которых пытался изучать программирование -- С++. (Спасибо тебе Гоша, удосужил).
Наткнулся на ролик IT-бороды, и вот я здесь, уже несколько месяцев изучаю все с нуля :)
P.S. Между прочим, мне вот сейчас друг предложил свою ВН сделать. Я такого не делал, всегда работал на кого-то.
Ну я конечно заявил, что только при условии распостранения исходников вместе с игрой, он согласился.
И вот фиг его знает на чем делать -- то ли на Renpy/Python, то ли пытаться вывести графику на Паскале.
Скорее все же первое, ибо я вообще не представляю, как работает Паскаль на Винде.
Ладно, я к чему. Помнится, где-то вы упоминали, что между программированием на Паскале (а я как раз осилил часть про Паскаль, но не начал еще Асссемблер) и переходу на Си должно пройти некоторое время. Так вот какое? (Ну, с небольшой поправкой на то, что на Питоне я делал некоторые вещи)

то ли на Renpy/Python,

то ли на Renpy/Python, то ли пытаться вывести графику на Паскале
Позволю себе влезть — а что понимается под "графикой"? В смысле, возможностей паскалевского crt хватит, или нужен "честный" графический режим? Просто я сомневаюсь, что пользователи-виндузятники оценят такую графику, будь игра хоть трижды гениальна по сюжету и прочему. Конечно, необходимость поддержки под Виндой вам жизнь несколько осложняет — есть, например, вот такая простая как валенок сишная "библиотека" из 13 функций, позволяющая открыть окно в графическом режиме, закрасить пиксель, нарисовать линию и реагировать на нажатие клавиш и клики мышью в этом окне — на эти кости любое мясо в плане не сильно динамичной графики нарастить можно без проблем, для ВН уж точно. Привязать ее к Паскалю вполне возможно (по крайней мере, в случае fpc — прямо сейчас попробовал треугольники по экрану погонять), но ей нужны Иксы, коих в Винде, понятно, нет (хотя, вроде, в Cygwin есть Cygwin/X, можно посмотреть-погуглить). Если хотите игру с графикой, звуком и прочим - лучше, конечно, лезть в Си, там есть, например, швейцарский нож в виде кроссплатформенной библиотеки SDL. Если интересно, у нее есть привязки к Паскалю, хотя, конечно, документация вся с примерами на Си. Короче, насчет Cygwin надо посмотреть сперва — возможно, если удастся решить вопрос с иксами, стоит утянуть вышеупомянутую gfx.

admin аватар

crt вообще не про

crt вообще не про графику

Согласен,

Согласен, формулировка не очень удачная вышла, кавычки бы "графике" не помешали. Из комментария не совсем понятно было, какого уровня графика нужна — автор указал, что освоил часть вашей книги про Паскаль, следовательно, с crt знаком. Раз вопрос был, в числе прочего, о возможности создания игры на Паскале, логично было предположить, что с иными средствами, кроме crt (а в книге в качестве инструмента для создания "игрообразных" программ разобран он), доступными в этом языке, не знаком.

Простите, что влезаю

Уважаемые Парфён и Андрей Викторович, извините что так грубо врываюсь со своим оффтопиком в ваш разговор, но просто прочитав увидел своё имя и подумал не про меня ли идёт речь?

Парфён, раз уж тут ружьё с именем Гоша на стене оказалось, необходимо чтобы оно выстрелило к концу пьесы :) Я никого к С/С++ не призывал, но может просто я не тот Гоша?

Parthen аватар

Некрасиво получилось

Я вообще про Гошу Дударя. О нем в программистком рутубе знает каждый. (На случай если Андрей Викторович замажет -- я про парня, создающего ролики языков за час)
Если вы -- он, то я на самом деле удивлен, что вы собственно здесь. И да, про С++ я говорил, когда Гоша пилил туторы по нему. Собственно его вины здесь особой и нет (разве что надо было предупредить, что это ролики не для изучения а для повторения.)
Мои извинения, если кого-то обидел :)

Очень даже красиво

Да какие тут извинения. Тут в любом случае независимо от того кто каким Гошей является, никаких обид ни у кого не могло быть.

Я в итоге не Дударь, но видимо хоть раз гляну тёзку с языком за час.

Ага-ага, он вам

Ага-ага, он вам расскажет, что "объект - это такая штучка, с которой мы вот так можем поставить точку и вот у нас тут как бы переменная, которая внутри у этого объекта".

admin аватар

Вы, прежде чем

Вы, прежде чем это глядеть, я не знаю, шапочку из фольги наденьте, что ли... мозги же испортятся.

admin аватар

На Паскале

На Паскале нужно не так чтобы именно время как таковое, на Паскале нужно наработать опыт, привыкнуть думать так, как это обычно происходит при работе на Паскале.

Кстати, Free Pascal, по идее, под виндой должен работать ещё лучше, чем под *nix'ами, поскольку, как я понял, там в команде одни виндузятники.

А что такое "BH"?

Parthen аватар

ВН -- визуальная

ВН -- визуальная новелла.
А вот как вообще понять, что уже все, готов? Или это как "только избранный может понять что он избранный"?

admin аватар

Самый надёжный

Самый надёжный способ — появление у ваших программ сторонних пользователей. Ну то есть тогда уже можно точно считать, что всё окей. Второй вариант — пара-тройка законченных и работающих программ объёмом от 2000 строк каждая.

Оба этих критерия работают с некоторым "запасом", то есть, возможно, вот это вот "всё, готов" наступит намного раньше. Но вот фиг знает.

Parthen аватар

Ну, сторонние

Ну, сторонние пользователи были, если считать мои программы на питоне за программы, а не скрипты для движка :). Но я их считать не буду, мне и так за тот говнокод стыдно.
Но вот кстати сейчас что-то странное творится. К программированию немного охладел, мне все больше начинает нравиться возиться с Линуксом. Если уж начну задачу решать оо да, интересно. Но вот заставить себя начать уже сложно.

admin аватар

Я имел в виду

Я имел в виду код на Паскале, мы же вроде бы Паскаль обсуждаем, точнее, ту стадию самообучения, когда нужен Паскаль.

По поводу "охладения" — можете не волноваться, это проходит :-) просто, скорее всего, локальный эффект выгорания. Заставлять себя не надо, толку всё равно не будет.

Parthen аватар

>Заставлять

>Заставлять себя не надо, толку всё равно не будет
Вот кстати да, только недавно это понял.
А вообще, книжек по программированию у нас нормальных, кроме ваших нет. А книжек по Линуксу? (Желательно вот прям по Линуксу, а не по всем *nix)
Хотелось бы пока его "посильнее" изучить

admin аватар

А чёрт их знает

А чёрт их знает :( Книг море, а вот есть ли среди них нормальные — ...

Понимаете, лично я Linux изучал без книжек. Собственно, тогда и не было по нему книжек толком, публика слова такого не знала. А сейчас мне как-то уже и не слишком актуальны книжки по линуксу. Так что я просто не в курсе.

А не хотели бы

А не хотели бы вы написать свой учебник по Линуксу? У меня вот как-то появилось желание изумить его вдоль поперек, прошерстив половину интернета, я всё-же ничего не нашёл. Множество книг где учат работать с Линуксом через GNome или KDE и очень мало книг где хоть что-то есть про командную строку.

Можете

Можете посмотреть книгу The Linux Command Line
by William Shotts.

Мне лично понравилось то, что автор дает начальное представление о какой-нибудь теме и не перестает упоминать, что нужно читать man-страницы и постоянно практиковаться. Единственное, что хочется выделить, так это то, что он считает допустимым и демонстрирует в виде примеров использование комманд с программой sudo (например для монтирования flash-брелка), что, по советам Андрея Викторовича, НЕДОПУСТИМО. Если развернуто, то недопустимо в рабочей сессии повышать свои полномочия. Если эти моменты фильтровать, книга, на мой взгляд, может быть хорошим стартом для изучения коммандной строки.

Ссылка на книгу на сайте автора:

http://www.linuxcommand.org/tlcl.php

Книга также издана в России.

Множество книг

Множество книг где учат работать с Линуксом через GNome или KDE и очень мало книг где хоть что-то есть про командную строку.

Попробуйте поискать книги по работе не в Linux, а в Unix. Так проще будет отсеять всю эту попсу, "где учат работать с Линуксом через GNome или KDE".

Согласен с

Согласен с автором предыдущего сообщения.
Когда я изучал FreeBSD, мне попалась, на мой взгляд, хорошая книга:

Майкл Лукас
FreeBSD. Подробное руководство, 2-е издание.

В ней графический режим даже не упоминается.
И хоть в данный момент у меня установлена Devuan2, а до этого пользовался Debian, я использую данное пособие, как
справочник, при решении возникающих проблем, поскольку программы в unix-системах одни и те же.
А вообще, как мне кажется, надо просто пользоваться любой unix OS и решать конкретные возникающие проблемы.
Еще один хороший ресурс, где можно найти ответы на множество вопросов - ArchWiki:

https://wiki.archlinux.org/title/Main_page_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)

admin аватар

Честно говоря,

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

Глобальная переменная ScreenWidth

ScreenWidth из модуля crt является глобальной переменной, а не константой. Отсюда возникают некоторые трудности, поскольку её нельзя сравнивать со своими переменными.
Например, мне нужно проверить является ли текущая позиция последней, т.е. равна ли она значению ScreenWidth:

1 for currNo:= 1 to ScreenWidth do
2 begin
3     case currNo of
4     	  firstNo: begin
5 	      prevNo := ScreenWidth;
6	      nextNo := currNo + 1;
7	  end;
8	  ScreenWidth: begin
9	      prevNo := currNo - 1;
10	      nextNo := firstNo;
11	  end;
12 { ... }
13 end;

Компилятор ругается на 8-ю строчку и выдает Error: Constant Expression expected. Я, конечно, могу завести собственную константу, но она будет работать только для окна эмулятора терминала определенной ширины, которую еще предварительно нужно узнать. Но такой вариант меня не очень устраивает.

admin аватар

Да-с... тяжело

Да-с... тяжело как-то.

Ну, во-первых, и в-главных: а как это, по-вашему, ScreenWidth может быть константой, если вы можете терминальное окошко сделать любого размера?

Второй момент: сравнивать ScreenWidth, разумеется, можно с чем угодно, лишь бы это "что угодно" было целым. Иной вопрос, что в операторе case можно использовать только константы времени компиляции. Следовательно, здесь просто не надо использовать case, он не для этого.

Ну и последнее. Чтобы достичь того, чего вы тут хотите достичь, никакой цикл не нужен. И никакой case. Если вы хотя бы для себя сформулируете, чего конкретно хотите добиться, возможно, вам станет проще.

Да, кстати, а что вы сказать-то хотели своим комментарием? Что модуль crt должен быть устроен как-то иначе? Ну так с этим не ко мне, с этим к авторам Free Pascal.

3 случая обработки

Оператор выбора я использую, потому что у меня есть еще третий случай, который я хотел показать своим комментарием, но оставил ради экономии места (но не заметил, что вставил не совсем туда). Более полный код выглядит так:

  1 for currNo:= 1 to ScreenWidth do
  2 begin
  3     case currNo of
  4         firstNo: begin
  5             prevNo := ScreenWidth;
  6             nextNo := currNo + 1;
  7         end;
  8         ScreenWidth: begin
  9             prevNo := currNo - 1;
 10             nextNo := firstNo;
 11         end;
 12         else begin
 13             prevNo := currNo - 1;
 14             nextNo := currNo + 1;
 15         end;
 16     end;
 17     applyRule(rules, initGen, nextGen, prevNo, currNo, nextNo);
 18     writeCellState(nextGen[currNo]);
 19 end;
 20 initGen := nextGen

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

admin аватар

Рискну

Рискну предложить сделать вот так:

    w := ScreenWidth;
    applyRule(rules, initGen, nextGen, w, 1, 2);
    for currNo:= 2 to w-1 do
        applyRule(rules, initGen, nextGen, currNo-1, currNo, currNo+1);
    applyRule(rules, initGen, nextGen, w-1, w, 1)

Впрочем, можно и так, как у вас, только не с case, а с обычными if'ами. Например:

    for currNo:= 1 to w do
    begin
        pr := currNo-1;
        nx := currNo+1;
        if pr = 0 then
            pr := w;
        if nx = w + 1 then
            nx := 1;
        applyRule(rules, initGen, nextGen, pr, currNo, nx)
    end

Возможны, естественно, и другие варианты.

ld компоновщик

сейчас читаю 3 часть книги,а конкретно: 3.1.4
Дочитав до момента с компоновщиком у меня возникли трудности, а именно мой дистрибутив(Manjaro) не воспринимает команду в стоке. Дальнейшие мои действия состояли в попытках установить утилиту, однако в официальных репозиториях её не оказалось(во всяком случае по прямым запросам найти не смог).
Поискав в интернете я нашёл лишь это:
https://www.gnu.org/software/binutils/
Но использовать Линукс я начал лишь в начале главы про паскаль(~3 месяца назад), и единственное на что меня хватило - распаковать архив. Впрочем, я даже не уверен что это то что мне нужно.
Поэтому и хотел спросить откуда, и как установить "ld", или его аналоги. Заранее благодарю за ответ.

admin аватар

Вообще это всё

Вообще это всё крайне странно, тот же fpc, насколько я понимаю, использует ld для компоновки. Да и nasm, если его поставить, должен был binutils притащить с собой.

Так или иначе, ld действительно входит в состав binutils; ставить binutils из исходников смысла нет, тем более что он и не соберётся без того же ld. Разумеется, этот пакет есть в репозиториях manjaro: https://discover.manjaro.org/packages/binutils

Могу посоветовать попробовать pacman -S binutils Если это не поможет — тогда я уже не знаю, надо смотреть, но как тут посмотришь.

Спасибо, вышло

Спасибо большое за ответ, команда "ld" работает исправно.
Про fpc, вышло что между главой про Паскаль и Ассемблер я сломал grub - пришлось переустанавливать дистрибутив, и по скольку связывать жизнь с Паскалем я не собираюсь(до вашей книги уже успел изучить c#, поэтому есть желание написать что то, предпочитаю его), fpc уже не устанавливал

admin аватар

C#, говорите? Ну

C#, говорите? Ну вообще реализации C# под Linux есть, но они тоже binutils с собой бы притащили. Так что остаётся только заподозрить, что вы так под форточками и сидите.

Не, ну дело хозяйское, конечно, но мои книжки вам тогда зачем? Толку не будет, я об этом прямо в предисловиях предупреждаю.

Я сейчас в

Я сейчас в процессе перехода на Линукс, да и с самого c# на время слажу, в пользу c/c++(не без вашей помощи, за что спасибо), а изучать как использовать шарп на новой для меня ОС, когда не собираешься его использовать в принципе, затея немного странная

admin аватар

Для C++ не

Для C++ не рановато? Впрочем, любой компилятор хоть C, хоть C++ под линукс тоже притащил бы за собой binutils, они по-другому не умеют.

Изучать C# под Linux действительно смысле нет, а вот в чём смысл точно есть — это слезть с форточек.

Конечно

Конечно рановато, не правильно выразился.
Конечной целью является c/c++, собственно, поэтому и начал читать ваши книги. Если конкретнее, на ютьюбе есть канал "АйТиБорода", он берёт интервью у разного рода программистов,в одном из таких роликов, про c++
(https://www.youtube.com/watch?v=QQZmDWnV618)
гость и порекомедовал ваши книги.
А писать я буду(за исключением паскаля, я конечно попробовал написать что-то сложнее условного калькулятора, очень не понравилось) на тех языках, которые изучают в разделе книги, который сейчас читаю
А с форточек я почти слез, на самом c# практически не писал.
Только с играми проблемы бывают, многие отсутствуют(хотя критичным назвать это трудно, ведь в таком случае использование форточек сводится к запуску 1-2 игр)

admin аватар

Между прочим,

Между прочим, если на Паскале не понравилось — в большинстве случаев это значит, что мозги уже испорчены. Увы. Не так чтоб прямо безнадёжно, но путь к исправлению идёт через тот же Паскаль.

Не то что бы,

Не то что бы, скорее не желание разбираться в некоторых его особенностях(в каких не вспомню, а исходники утеряны)
А сейчас уже намного более занимательная глава про ассемблер(Паскаль в базисе схож с c#, и изучать его соответственно не так интересно, чего уже не скажешь про ассемблер)

Знаете, мне

Знаете, мне тоже ВУЗе пихали C#: все, что из того получилось, так это то, что у меня пропало было желание изучать программирование. Спасибо Андрею Викоторичу, благодоря которому у меня это желание вернулось и урепилось!

Я - не преподаватель, и нет у меня пока что того уровня профессионализма как у программиста, однако на подсознательном уровне я убежден, что Вам стоит забыть (по-крайней мере на время) C# как дурной сон, и изучать программирование по книге уважаемого преподавателя так, словно Вы вообще первый раз столкнулись с программированием! Уверен, от этого будет значительно больше толка, чем от того, что Вы постоянно будете оглядываться назад на C#, сравнивая материал Андрея Викторовича с тем, что Вы изучали по C#

admin аватар

На асме писать,

На асме писать, несомненно, прикольно, используйте возможность на всю катушку — вряд ли когда доведётся делать это в практических задачах, а опыт этот чрезвычайно полезен.

Но проблема в другом. Паскаль нужен, во-первых, чтобы отбить желание громоздить в программе побочные эффекты, и, во-вторых, чтобы освоить указатели. С указателями вы после асма, возможно, справитесь и так (хотя не факт); а вот полное отсутствие тормозов с применением побочных эффектов, известное также как "сишность головного мозга", боюсь, в итоге ваш мозг таки сожрёт.

Постараюсь

Постараюсь использовать nasm как смогу.
Указатели ещё на Паскале меня увлекли, и всё в той же главе их осилил.
Побочные эффекты в функциях перестал писать, ещё в начале изучения и написания кода на c#, товарищ хороший попался, объяснил почему так делать плохая идея(делал он это с позиции полиморфизма, с тех пор и пытаюсь придерживаться принципа: одна функция -одна задача).

admin аватар

Вы не поверите,

Вы не поверите, но принцип "одна функция — одна задача" относится к правилам декомпозиции и — пабабамс! — к побочным эффектам не имеет вообще никакого отношения. Вот вообще, совсем, ну то есть вот никакого. Это из другой сказки.

Ну то есть это очень важный принцип, конечно, а ещё есть такое "правило одной фразы" (ответ на вопрос, что делает эта подпрограмма, должен состоять из одной простой фразы, причём из этой фразы должно быть в первом приближении понятно, зачем нужен каждый из параметров), и это тоже важно. Просто это не о том.

Для меня

Для меня побочный эффект выглядит как выход из "одной задачи",возможно из за моего не слишком большого опыта.
Побочные эффекты использовать не буду, по возможности конечно.
Спасибо за ответы

admin аватар

Побочный

Побочный эффект (англ. side effect) — это строгий термин, тут не может быть никаких "для меня", "выглядит" и прочего в таком духе.

В первом томе, причём в части II, которую вы якобы уже прошли, побочным эффектам посвящён отдельный параграф 2.3.6, и, кроме того, они неоднократно упоминаются в дальнейшем тексте (см. пример на стр. 323 и т.д.)

И недавно совсем этот вопрос обсуждался здесь в гостевой, вот эта ниточка: http://www.stolyarov.info/guestbook/archive/4#comment-3918

Вторую часть я

Вторую часть я действительно прочёл,
оттуда впервые и услышал про побочные эффекты(не слышал само определение, с побочными эффектами естественно имел дело)
Поразмыслив ещё пару дней, я понял, что написал глупость, за что мне несколько стыдно

Разыменование

Здравствуйте. Читаю про указатели. Возник вопрос. Операция всегда вычисляет значение. Когда производится операция разыменования с целью получения значения результат вычисления это значение из ячейки памяти. Какое значение тогда вычисляется при разыменовании когда мы, например, присваиваем что то по адресу в указателе? Заранее спасибо за ответ.

admin аватар

> Операция

> Операция всегда вычисляет значение.

Это вам кто сказал? У операции есть значение, это верно, но далеко не всегда оно вычисляется — тут дело даже не в разыменовании, есть вот такая операция «приведение типа выражения», так она в подавляющем большинстве случаев ничего не вычисляет; есть случаи, когда вычисляет, но они редки, а обычно просто то, что было (буквально те же биты) продолжают использоваться как выражение другого типа.

> Какое значение тогда вычисляется при разыменовании когда мы, например, присваиваем что то по адресу в указателе?

Никакое. Если говорить о Паскале и чистом Си, тут даже о преобразовании типа речи не идёт, поскольку "леводопустимость" в этих языках не отражается в системе типов. В Си++ происходит (с формальной точки зрения) преобразование адреса в ссылку (если что, тут тоже вычислять нечего от слова "совсем", но тут хоть что-то происходит, и можно сказать, что именно).

Эх не понял

Пытался я понять этот момент и так и не понял. Искал в интернете, потом случайно заглянул в том про Си. Там есть тема про L-value. Я из описания понял, что в случае нахождения выражения подобного *ptrvec[5] слева от присваивания оно вычисляется до адреса по которому можно, что то присвоить. Таким образом получается вычисляемым значением этого выражения будет адрес? Может я плохо отличаю операции и выражения. Разыменование(которое не вычисляется) здесь часть выражения которое вычисляется?. На просторах прочитал, что операция это то же, что и функция это верно?

admin аватар

> Таким образом

> Таким образом получается вычисляемым значением этого выражения будет адрес?

На уровне машинного кода — да, но от нас (программстов) компилятор сей факт скрывает с упорством, достойным лучшего применения.

> Разыменование(которое не вычисляется) здесь часть выражения которое вычисляется?

Ну да, и что? В полученном коде не будет ни одной команды, которая "соответствовала бы" операции разыменования.

> На просторах прочитал, что операция это то же, что и функция это верно?

В общем случае — нет.

Parthen аватар

Как вам такой вариант?

Есть одна программа - Aseprite. Пиксель-арт редактор, довольно популярный в узких кругах.
И у них очень интересная схема монетизации идет.
Сначала они делают новую версию, ее продают. Потом, когда сделали еще более новую версию, они у старой открывают исходники. И так каждый раз.
Но да, если хочешь бесплатно - то собирай сам из исходников. Если не умеешь, и хочешь новейшую версию - можешь купить.
Как вам такой вариант?

admin аватар

Надо

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

UPD: Посмотрел. Старые версии там под GPL, но, похоже, их стратегию вы поняли неверно. Вот абзац из FAQ:

Aseprite started being open source since its very beginning in 2001, and we were happy with that until August 2016. Now you can still download its source code, compile it, and use it for your personal purposes. You can make commercial art/assets with it too. The only restriction in Aseprite EULA is that you cannot redistribute Aseprite to third parties.

Ну то есть всё, фенита ля комедия, раньше было всё в порядке, а теперь оно копирастическое.

Как я к этому отношусь? Как и к любой копирастии: давить без сожаления.

Parthen аватар

Ну, там пока

Ну, там пока только 2 версии: 1.0 и 2.0. Полагаю, что когда выпустят третью, вторую заопенсорсят.
Я не силен в английском и понял так: делай с ней что хочешь, главное другим не давай, то что сделал.

admin аватар

> Полагаю, что

> Полагаю, что когда выпустят третью, вторую заопенсорсят.

Вы это откуда взяли? Там сказано прямо противоположное: до 2016 года нас устраивал opensource, а теперь выкусите.

> главное другим не давай

Вот-вот. Мне вот что непонятно, вы эту копирастическую мразоту оправдываете? Напрасно.

Parthen аватар

Не оправдываю.

Не оправдываю. Просто рушится замок представлений о любимой программе.
Эхх :(

Здравствуйте!

Здравствуйте! Ещё в прошлом издании читал, что системные администраторы могут ограничивать ресурсы, выделяемые системой каждому процессу, и меня это заинтересовало. Я искал в интернете, но всё, что я нашёл — это cgroups, но он не входит в стандартные поставки ПО дистрибутивов. Вы про него писали или имели в виду какое-то другое средство контроля?

Вообще, было бы интересно почитать про ваш опыт сисадминства, может сделаете как-нибудь заметку о своём опыте или историями о работе? :-)

admin аватар

Нет, я не имел в

Нет, я не имел в виду cgroups. Что я в действительности имел в виду, подробно описано во втором томе, пар. 5.3.12.

Писать мемуары в мои планы не входило.

Батька

Батька Торвальдс оказался все-таки не из этих...
https://www.opennet.ru/opennews/art.shtml?num=54970

admin аватар

Примечательно,

Примечательно, что в роли главной мрази опять этот долбаный Гугл.

Times New Roman в LaTeX

В LateX по-умолчанию используется шрифт Computer Modern, созданный Кнутом, но в учебных заведениях (в моем случае, в колледже) требуют для оформления более-менее серьезных работ, в том числе квалификационных, использовать именно Times New Roman.

Нормального решения я так и не нашел, пачкать руки об Microsoft Word я не хочу, с LibreOffice Writer я обращаться не умею. Может кто-нибудь подсказать, как можно поставить в LaTeX данный шрифт, если это вобще возможно? Буду очень благодарен.

Всё же ответа на вопрос пока нет

Добрый день!

Поддержу автора вопроса. Принципиальность - это конечно прекрасно и писать можно посылать хоть в спортлото, но на поставленный вопрос ответа, что характерно, не оказалось.

Автор, может тебе будет полезна эта статья, исключительно про варианты использования шрифтов в LaTex
https://lisakov.com/blog/latex-fonts/

Дело сдесь не в

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

admin аватар

Дело в данном

Дело в данном случае не в принципиальности. Я просто не изучал этот вопрос, мне шрифты из ворда никогда не казались привлекательными.

admin аватар

Вот интересно,

Вот интересно, у нас в МГУ ничего подобного ни от кого не требуют, а в вашем колледже — требуют. Вы уверены, что вам нужен такой колледж?

А вы думаете

А вы думаете кто-то учится за Москвой/Петербургом ради образования?)

admin аватар

Встречный

Встречный вопрос — а вы думаете, в Москве и Питере ситуация сильно отличается?

Здесь поддержу

Здесь поддержу тредстартера - требуют, причем не в колледже, а на факультете федерального универа, прям "русским по белому" в методичке по оформлению квалификационных работ. Упрощает жизнь то, что под TNR вполне успешно косит Liberation Serif, идущий в комплекте с LibreOffice.

admin аватар

Отправьте

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

Parthen аватар

Как сделать mutt как у вас?

Я тут занялся созданием нормального постоянного почтового ящика, решил заодно скачать себе клиент на компьютер. В интернете посоветовали mutt, да и вы вроде как им пользуетесь.
И вот в чем проблема: у меня mutt в терминале весь в синей гамме (эмулятор sakura-terminal). Мне этот цвет крайне режет глаза.
Если в голой консоли открыть, то уже лучше: там синеньким подсвечивается только верхняя и нижние строчки.
А у вас видео про спам из мерии Москвы был скриншот как раз mutt. Как выглядит у вас мне крайне нравится: черно-белое, не режущее глаза контрастное выделение.
В общем, как сделать как у вас? Это, я так понимаю, зависит от эмулятора терминала, тогда какой он у вас?

admin аватар

У меня обычный

У меня обычный xterm, как ни странно. Что касается цветных извращений, то вроде бы они настраиваются в /etc/Muttrc.d/* — но если сделать свой .muttrc в домашней директории, то его можно начать со слова reset, и тогда системные настройки действовать не будут. А по умолчанию вроде он и так чёрно-белый.

Вообще, честно говоря, не помню, как там всё устроено, я mutt для себя лет 15 назад настроил и с тех пор не трогал.

Будет

Будет ли хорошим выбором эмулятор терминала xfce4terminal или предпочтительнее Xterm? Xterm мне больше нравится, а вот как добавить новую вкладку, я не умею? В xfce4terminal это делается нажатием клавиш Ctrl+Shift+t.

admin аватар

В самом xterm'е

В самом xterm'е нет вкладок и никогда не было, эта функциональность для эмулятора терминала избыточна. Во-первых, самих терминалов можно открыть сколько угодно, и в общем случае это намного более удобно, ведь их можно расположить так, как удобно здесь и сейчас — например, чтобы видеть их сразу несколько. Во-вторых, если зачем-то хочется несколько сеансов в одном окошке, есть ещё программа screen (кстати, очень рекомендую её освоить, при удалённом доступе к серверам она просто незаменима).

Есть еще

Есть еще программа tmux, которая тот же screen но для меня чуть более удобная. Раньше тоже использовал screen.

За программу

За программу screen большое спасибо! И не пришлось менять терминал.

Parthen аватар

Вот между прочим

Предложу развлечение для отъявленных мазохистов.
Удалите/отключите у себя иксы. И попробуйте так недельку.
Могу вам гарантировать - в консоли вы вскоре будете чувствовать себя как рыба в воде.
Столько плюсов: запустить такую вещь можно вообще без дискретной видеокарты на старейшем процессоре, скорость сильно повысится, разберетесь как вообще можно ВСЕ делать в терминале.
А то у меня как-то в начале становления линуксоидом иксы повисли и я "все". Стартануть не получается, бекапов по классике не делал.
Но опять же, это для мазохистов.

Все хорошо, но

Все хорошо, но только как читать pdf и djvu файлы без Х. И музыку не послушать и видео не посмотреть.

без Х. И музыку

без Х. И музыку не послушать

Хех. У меня на кухне долгое время стоял комп не только без иксов, но и вообще без монитора. Как раз чтобы слушать музыку. Этакий самопальный интернет-радиоприёмник. Вместо полноценной клавиатуры я прицепил к нему USB-нумпад, на котором нужно было набирать трёхзначный индекс нужной "радиостанции" (распечатка со списком станций висела рядом на холодильнике). Ну и управлялось всё это несложной самописной программой.

admin аватар

Для музыки-то

Для музыки-то зачем графика? Впрочем, графика и иксы — это не одно и то же, без иксов при известной сноровке можно всё перечисленное, framebuffer никто не отменял.

admin аватар

А чего для

А чего для мазохистов-то? Я в консоли сидел года до 2005го, то есть startx говорил, только когда припрёт. Потом уЁбдизайнеры совсем сломали веб, стало невозможно жить без графического браузера, и постепенно, увы, перешёл на постоянную работу в иксах.

Parthen аватар

Ну вот

Ну вот представьте человек с детства больше 15 лет сидел на Винде. И тут ему такое дать. Это ж ломка натуральная будет.

admin аватар

Так когда ломка

Так когда ломка — это не мазохисты, это наркоманы :-)

Parthen аватар

Зачет по информатике

Готовлюсь к зачету по информатике. "Обработка строк и символов в Паскале". Среди прочих такие вопросы:
1. Что такое символьная строка?
2. Почему неудобно заменять строки массивами символов?
(весь зачет кидать не буду: все остальное мне вроде понятно, да и сам зачет в ВК в формате docx)
Так вот, разве символьная строка не является массивом символов?

admin аватар

Формально

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

Подробности см. в параграфах 2.6.9, 2.6.10 и 2.6.11. Ну да, в первом томе, естественно.

>FreeBSD, где

>FreeBSD, где пакетного менеджера с автоматическим отслеживанием зависимостей просто нет.

Я, наверное, чего-то не понимаю. А в чём проявляется отсутствие пакетного менеджера с автоматическим отслеживанием зависимостей?

admin аватар

Проявляется?

Проявляется? Ну, например, в том, что когда вы хотите установить в системе просмотрщик PDF-файлов, вам никто не говорит, что надо поставить ещё 165 пакетов, в число которых входит, например, программа для разбиения жёсткого диска на разделы (реальный случай, между прочим; описан в третьем томе, параграф 12.5.5).

Вы

Вы действительно правы. Предлагают установить только caja, dconf, enchant2, mate-desktop. Общей сложностью всего на 158МБ. Эти зависимости не автоматически отслеживаются?

admin аватар

Автоматически,

Автоматически, конечно. Похоже, мои сведения о FreeBSD несколько устарели — когда я с этой системой работал, pkg там ещё не было.

Пожалуй, вопрос тогда, на который беглое знакомство с материалом мне ответа не дало. Насколько этот pkg стоит рассматривать как часть FreeBSD? Вот port collection — это однозначно часть системы, тут никуда не денешься; pkg, насколько я понимаю, ставится в /usr/local, как и другие "дополнения", то есть это одна из программ, работающих на FreeBSD — но далеко не все такие программы являются частями FreeBSD. Самостоятельно ответить на этот вопрос я могу разве что поставив FreeBSD и попытавшись с ней поработать, но времени у меня на это нет вот просто категорически.

```% which

```
% which pkg
/usr/sbin/pkg
```

Насколько я могу ответить — это часть системы. Ports collection можно опционально не выбрать при установке, pkg — не выбирать нельзя. Устанавливается везде как jails и bhyve. Я не видел, чтобы pkg кто-то не использовал или агитировал против него.

Вот в NetBSD pkgsrc изначально не стоит, его предлагают поставить самостоятельно.

Наверное смогут ответить полноценние.

admin аватар

Понятно,

Понятно, спасибо. Да, если не в local, то это уже часть системы, без вариантов. Просто, видимо, те материалы, которые я вчера нашёл в режиме "быстро-быстро", тоже уже успели устареть.

В общем, поправить надо будет это место в книжке.

В копилку

В копилку фактов: в современной OpenBSD пакетная система тоже является частью базовой системы, если что.

$ ls -1 /usr/sbin/pkg_*
/usr/sbin/pkg_add*
/usr/sbin/pkg_check*
/usr/sbin/pkg_create*
/usr/sbin/pkg_delete*
/usr/sbin/pkg_info*
/usr/sbin/pkg_mklocatedb*
/usr/sbin/pkg_sign*
Parthen аватар

Различия Freepascal и PascalABC.net

Внезапно осознал, что на ЕГЭ, который мне предстоит сдавать, скорее всего не будет ни Линукса, ни FreePascal. В связи с этим вопрос тем, кто работал с PascalABC.net -- будут ли там нормально компилироваться программы с синтаксисом FreePascal?

PascalABC.NET есть

PascalABC.NET есть под Линукс, работает через mono, а не дот-нет. Соответственно, байт-компилилованные "экзешники" нужно запускать через:

mono program.exe

Если не использовать ничего Windows-специфичного (например GUI) или наоборот, FreePascal-специфичного (вроде Graph/CRT), то должно работать точно также.

Единственный тонкий момент - там точно не поддерживаются обозначения некоторых специфичных типов, вроде longinteger (integer в pascalabc соответствует лонгу в fpc), но в рамках школьного курса вряд ли такое может понадобиться. Если что, для него есть документация.

admin аватар

Оно, может, и

Оно, может, и есть, но ЗАЧЕМ? Pascal.ABC никогда не был живым инструментом и не задумывался в качестве такового, это как вместо самолёта на симуляторе летать — суррогат как он есть. На симуляторах, конечно, пилоты тренируются, но это потому что на настоящих самолётах летать чертовски дорого. Работать с тем же Free Pascal ни разу не дорого.

Затем, чтобы

Затем, чтобы сдать ЕГЭ, очевидно. Вопрос был о том, будет ли написанное под fpc работать под pabc. Ответ - в большинстве случаев будет, но есть нюансы.

Parthen аватар

Встречный

Встречный вопрос - а есть список всех этих нюансов для ознакомления?

Тут сложно -

Тут сложно - PascalABN.NET очень быстро развивается. Условно говоря, вчера еще не было in-place объявлений переменных или срезов массивов - сегодня появились. Но, опять же, базовый язык в основном совместим с fpc (то есть с Turbo Pascal), а использование лямбд и паттерн-матичинга в рамках школьного курса информатики, наверное, все-таки избыточно (но тут уже от учителя зависит).

Для этого и стоит держать у себя оба компилятора, чтобы написанное под одно с минимальным допиливанием заработало бы на другом. Мы ребенком пока напоролись только на случай с Integer/Longinteger; когда дойдут до плавучки, наверняка еще что-нибудь вылезет.

Впрочем тут уже пояснили, что для ЕГЭ требуются только ответы, на чем писать - не важно.

Да, еще одно уточнение: не PascalABC.NET есть под Линукс, а консольная версия PascalABC.NET может работать под mono.

admin аватар

Ага, понятно. Ok,

Ага, понятно. Ok, принято, возражения снимаю.

admin аватар

А что, на ЕГЭ

А что, на ЕГЭ теперь ещё и программировать на компьютерах надо? Слон сдох.

Сдавал информатику в 2012

На ЕГЭ в практической части уже давно предусмотрено написание программ. На бумажке.... как сочинение по русскому языку, только пишется блок-схема решения и программа на одном из приведённых языков.
У нас кроме Паскаля (в ЕГЭ не оговаривается какой именно Паскаль), были ещё варианты написать на Си, псевдокоде и вроде бы Си++. И уже тогда казалось что это какие-то лютые школы где выпускники на Си.
Сейчас Гугл показывает что Си++ заменён на Питон.

Parthen аватар

>в ЕГЭ не

>в ЕГЭ не оговаривается какой именно Паскаль
Только вот я очень неуверен, что проверяющие осилили Линукс.
> Сейчас Гугл показывает что Си++ заменён на Питон.
Таки нет. Мне прислала учитель пробник, там С++, Паскаль, Питон и алгоритмический язык.
Basic до этого года был, но исключили.

admin аватар

А не пофигу, что

А не пофигу, что там проверяющие осилили? Вам же не нужно посылать программу на проверку, нужно отправить только ответ.

Parthen аватар

А вот это для

А вот это для меня новость. Мне с 8 класса твердили, что проверяющие будут проверять программы. Да и на тайной имитации ОГЭ так и было.
Ну коли такое дело -- так вообще все отлично. Еще бы как-то поставить себе Линукс на комп и вообще проблем не будет.

admin аватар

Так вы линукс

Так вы линукс до сих пор не поставили? А может, ну его нафиг, это программирование? :) В мире есть много других хороших профессий.

Parthen аватар

Вы меня не так поняли :)

Линукс у меня стоял уже как полгода до того, как я вообще ваши книжки нашел :)
Я про то, чтобы на ЕГЭ себе его поставить. Я на пробнике ОГЭ смог уговорить проверяющих разрешить мне скачать и установить puppy linux. (Самый маленький по весу дистрибутив, что я нашел)

admin аватар

Э, да, пардон,

Э, да, пардон, что-то я о вас слишком плохо подумал.

Не, ну в крайнем случае отнеситесь к этому как к досадной, но не слишком серьёзной помехе. Ничего сильно сложного писать на ЕГЭ вам не потребуется, и, опять же, четыре часа — и все свободны. Не слишком приятно, но пережить можно.

Parthen аватар

Может и у меня

Может и у меня просто крыша едет. Обстановка вокруг ЕГЭ страшненькая, вся жизнь зависит от клочка бумаги и 4 часов.
Линукс для меня уже не помеха. Я натурально не представляю, как можно на долгосрочной основе работать под чем-то другим. Неудобно крайне, без тайлинга и терминала.

admin аватар

Что линукс не

Что линукс не помеха — это я не сомневаюсь :-) Помехой может стать винда с паскалем-абц или что там ещё вам предложат на ЕГЭ.

admin аватар

C++ раньше не

C++ раньше не было, были бейсик, ШАЯ, Паскль и чистый Си. Сейчас вместо бейсика питон (sapienti sat, так их растак), а чистый Си заменили на Си++ (вроде и смешно, а вроде и плакать хочется).

чистый Си

чистый Си заменили на Си++
Особенно веселит, как сформулирована причина замены - дело-то, оказывается, в большей актуальности и востребованности Си++. И пофиг, что от Си++ в тех примерах только cin и cout...

admin аватар

Да уж больше

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

А то, что работа на C++ без понимания основ превращается в заклинания, спеллбуки, переписывание древних свитков и прочее вот это вот — этого все эти моральные уроды в упор не видят, чо.

Parthen аватар

Давно уже

Только вот в 2021 вводят кЕГЭ. Теперь оно будет ТОЛЬКО на компьютере. Сайтик на js сделали, загружаешь и скачиваешь с него и на него файлы. Учителей заставляют готовить усиленно, чтобы ученики могли вдобавок работать с файлами, строками как с массивами (раньше такого не было).
И вот между прочим небольшой оффтопик: код на бумажке писать это норма или нонсенс? Вы у студентов как зачеты проводите?
И да, объясните пожалуйста шутку про слона, а то такое чувство, что поисковик меня дизинформируте :)

работать с

работать с файлами, строками как с массивами
Помню, в 11 классе (эх, уж 10 лет прошло) послали меня на олимпиаду по информатике (правда, из информатики на уроках у нас была подготовка презентаций да игры в "Звездного юнгу" - кто не в теме, был на Винде XP такой стандартный пинбол, ну да не суть). Вот где-то за две недели до того сказали: "Пойдешь!", была найдена на просторах Тырнета какая-то книженция по Паскалю (ага, по Turbo, с синим окошком) и все заверте... И до глубины души я, помнится, был поражен вот этим вот моментом с файлами. Во всех заданиях входные данные нужно было читать из файла, это было отдельно оговорено. Но когда организатор заглянул через плечо и увидел вот эти вот assign, reset и т.д., у него в глазах был ужас:
- Это чо?
- Ну как, файл же тут читать надо, написано же.
- Убирай это все, пиши read - проверять будем, набьем с клавиатуры!
Вот в тот самый момент я, как та девочка из анекдота, "впервые понял, что взрослые тоже бывают тупорылыми..."
Мне-то, повторюсь, сравнивать было не с чем, я думал, когда изучают Паскаль, это рассказывают - как без файлов-то? А оказалось, что только спустя 10 лет кто-то там додумался. Вообще, можете в меня чем-нибудь кинуть, но, имхо, это первый более-менее здравый шаг - включение хоть какой-то практики в эти "тестилки".

admin аватар

Зачёты и

Зачёты и контрольные я провожу на машинах, то есть да, программирование на бумажке как вид деятельности мне совершенно не симпатичен — кроме прочего, ЭТО проверять крайне тяжело.

Про ЕГЭ посмотрел, там ахтунг какой-то с языками. Но есть и хорошая новость: от программы, которую напишете вы сами, передавать нужно только ответ. Ну а те задачи, в которых дан в том или ином виде код на нескольких языках, как правило, не зависят от особенностей диалекта, да и вообще там для человека, умеющего программировать, проблемы разобраться обычно нет.

Этот наконец сломался, несите следующего

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p2028r0.pdf

Весь документ представляет собой "плач Ярославны" о проблемах поддержки "стандартной" библиотеки (в отличие от любой другой, ага), но третий снизу абзац на последней странице тонко намекает, что на самом деле она нафиг никому не нужна, и все об этом знают.

Где вы вообще

Где вы вообще это увидели? Там нет никакого плача о проблемах поддержки std, там говорится о том, что современная имплементация крайне неэффективна (а всякие хэш-мапы вообще небезопасны, их нельзя совать в продакшен), но её не меняют, потому что боятся сломать совместимость со старым кодом, который существует только в бинарном виде. Наоборот, чувак пишет о том, что нужно смело ринуться в бой, всё сломать, но сделать всё более эффективным, иначе Си++ останется на задворках истории, потому что даже стандартные регулярные выражения в два раза медленнее питонячьих (даже удивительно как им удалось достичь таких феноменальных результатов). А абзац, который вы упомянули, говорит о том, что многие перестают использовать std, потому что она тормозная, а ускорить нельзя без ломания обратной совместимости, и что скоро std будет использоваться только студентами на лабах. Вердикт - надо ломать. Пишу это безотносительно отношения своего и окружающих к std, просто вы неверно проинтерпретировали текст (с точностью до наоборот, я бы сказал), а я не могу спать пока в интернете кто-то не прав.

Читаем в контексте

Что ж, давайте разбираться. Во-первых, реализации в таком состоянии по одной-единственной причине -- спецификация не позволяет сделать иначе.
За спецификацию во многом отвечают члены комитета, которые имеют весьма посредственное представление о последствиях своей "деятельности".
Собственно, основная часть документа представляет собой ликбез по теме ABI, с которым, цитирую, "relatively few of us have much hands-on experience".
Эти же персонажи часто плачут, что люди, занимающиеся реализацией, не дают исправить недостатки спецификации (известные уже на момент выхода оной) десять лет спустя.
Причём, один раз такую глупость уже совершили, а раз уж члены комитета (пусть и компиляторщики) не хотят повторения перехода на С++11 -- это кое о чём всё-таки говорит.
Тем не менее приводится ряд мотивирующих примеров, который надо трактовать так: "да, мы сами сделали эту хрень, но уж в следующий раз мы точно всё сделаем правильно(tm)".

Во-вторых, последний абзац на самом деле перечисляет примитивы, которые (с оговорками) нет смысла переписывать: динамические массивы и строки.
Но только потому что с ними сложно напортачить, да и используются они почти повсеместно.
(Здесь следует оговориться, что автор представляет интересы Гугла в комитете, для которых вычислительные ресурсы дороже человеческих)
Особенно уморительно это смотрится на фоне последних двадцати лет, на протяжении которых от сторонников стандартной библиотеки можно было слышать лишь "используйте её: она есть везде, переносима, написана людьми умнее и оптимизирована по самое что ни на есть -- написанное вручную не будет более эффекитвным".

В-третьих, предложение "всё сломать" на самом деле влечёт за собой предложение "давайте ломать каждый раз".
И речь не только о "старом коде, который существует только в бинарном виде" -- так и видится картина полной пересборки репозиториев дистрибутивов Linux, потому что разработчики нескольких библиотек поддержки решили использовать новый ABI.
То есть каждые три года (5? 10?) предлагается пересобирать весь существующий софт, потому что кто-то решил "Почему бы нет? Зато производительность!".
(Описанное является очевидным преувеличением, но видимость стабильного ABI не стоит недооценивать)

Наконец, сама проблема является штатной для библиотек в целом -- рано или позно приходится выбирать между обратной совместимостью и новыми возможностями.
В данном случае всё раздуто из-за выдуманной статусности "стандартной" библиотеки (в реалиях С++) -- это всего лишь библиотека, и если она плохо решает (или не решает вовсе) практические задачи, то она никому не нужна.
Очевидно, есть тот самый эффект насаждения в течение двадцати лет, но собственные мозги никто не отменял.
А если язык программирования может "остаться на задворках истории" из-за библиотеки, там ему и место.

admin аватар

К сожалению,

К сожалению, эти мрази, превратившие C++ в дурно пахнущее месиво, всё равно не остановятся.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".