LINUX.ORG.RU

Сообщения Xenius

 

Как вы относитесь к коду с юникодными символами?

 , ,

Уже довольно давно везде доминирует UTF-8, в GNU/Linux это системная локаль по умолчанию, и в этой кодировке и файловая система и большинство текстовых файлов.

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

А как с этим в ваших любимых языках — поддерживают ли они не-ascii символы вне строк вообще? Есть ли языки, где юникодные символы определены в стандартной библиотеке, кроме APL?

А что вы думаете насчёт того, чтобы применить например #define в C, чтобы в самом коде можно было использовать ≤ ≥ ≠ ≡ вместо <= >= != == например? Кроме того, можно использовать греческие буквы для имён переменных, например ε обозначать предел при интерполяции.

В других языках можно другие операторы заменять, например → ⇒ вместо -> =>

Вводить их можно как специальными средствами текстового редактора, так и общеиксовыми методами ввода, например использованием Compose. Не знаю, можно ли настроить или нет, чтобы разные символы вводились одновременным нажатием двух кнопок, но это тоже вариант. Так же есть AltGr и возможность сделать для этого специальную раскладку.

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

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

Xenius
()

Как вы выбираете язык программирования для реализации проекта?

 , , ,

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

Я не прошу советов типа «используй язык $LANG», понятно что есть множество вариантов, но мне интересно, как решать проблемы выбора такого рода в общем случае?

Конкретно в области программирования:
Какой язык программирования изучить?
Какой язык выбрать для реализации конкретного проекта?
А если уже выбран язык, то какую выбрать имплементацию? Например существует более 80 имплементаций Scheme.

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

Но что, если таких ограничений нет? Как выбрать что-то в этом случае?

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

А если даже выбрали/разработали — в игре понадобится скриптовый язык. Какой встроить? Разрешать ли много языков или ограничиться одним?

Кроме того, кроме широко известных альтернатив вроде Squirrel, Lua и Tcl, есть и менее распространённые варианты, например javascript, newlisp, Scheme. Какой выбрать? А как узнать о других вариантах, которые сходу не вспомнились?

Xenius
()

Существует ли язык высокого уровня, который устойчиво быстрее C?

 ,

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

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

Так вот, возможно ли сделать такой язык? Если да, то в каком направлении копать?

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

Xenius
()

Как бы вы отнеслись к Open Source DRM?

 , ,

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

Кроме того, всё ПО на таком гипотетическом устройстве свободное — то есть публично доступны исходные коды и инструкции, как заменить ПО на купленном устройстве.

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

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

Какое устройство было бы лучше, с проприетарной прошивкой, но без DRM или такое?

Xenius
()

Какие есть дистрибутивы без systemd?

 , ,

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

Я сходу знаю только Slackware и CRUX.

В Ubuntu systemd вроде пока нету, но есть большая вероятность что они перейдут. В любом случае, ubuntu-based исключаем.

В каких дистрибутивах GNU/Linux до сих пор сохранился sysv/bsd - like init в качестве основного?

Xenius
()

Как восстановить файловую систему с карты памяти?

 

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

Накрылась вся файловая система на карте памяти (microSD):

# fdisk -l /dev/sdb 

Disk /dev/sdb: 7945 MB, 7945060352 bytes
245 heads, 62 sectors/track, 1021 cylinders, total 15517696 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000100

This doesn't look like a partition table
Probably you selected the wrong device.

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   ?     4211712     5262335      525312    0  Empty
/dev/sdb2        33554576  1124074127   545259776   11  Hidden FAT12
/dev/sdb3   ?     8388608   277348831   134480112    0  Empty
/dev/sdb4   ?     8388736     8519807       65536   10  OPUS

# dosfsck -n /dev/sdb 
fsck.fat 3.0.26 (2014-03-07)
Logical sector size (524 bytes) is not a multiple of the physical sector size.

# mount -t vfat /dev/sdb /mnt/
mount: wrong fs type, bad option, bad superblock on /dev/sdb,
       missing codepage or helper program, or other error
       In some cases useful info is found in syslog - try
       dmesg | tail  or so

# dmesg | tail
FAT: invalid media value (0xf2)
VFS: Can't find a valid FAT filesystem on dev sdb.



Судя по всему что-то накрылось серьёзно.

Есть ли возможность как-то восстановить именно файловую систему, а не отдельные файлы (про photorec в курсе)?

Может быть где-то что-нибудь вручную поправить, чтобы уговорить fsck взяться за дело? Сейчас ещё попробую проверялку из DOS.

Телефон предлагает отформатировать карту.

Xenius
()

Перенос системы, что лучше, cp, tar, cpio, rsync?

 , , ,

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

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

Вопрос по первому пункту — чем оптимально переносить много файлов на другой раздел? Есть способы:
cp -av, tar (можно два тара в пайп, один тарит, другой разтаривает), cpio в паре с find, rsync, возможно dump, ещё можно делать дамп самой файловой системы, копировать через dd и делать resize2fs до или после. Возможно есть ещё способы или утилиты.

А чем лучше всего?

Xenius
()

Какие новые свободные игры появились за последние годы?

 legend of edgar,

Ищу во что бы поиграть, но понятно что интересуют только полностью свободные игры, которые собираются под GNU/Linux.

Понятно, что про классику типа Wesnoth и тд, я давно знаю и играл. Legend of Edgar прошел ещё три года назад, понравилось.

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

Перечисляю то во что играл и понравилось: GNU Robbo, Freedroid Classic (RPG вроде не очень), Wesnoth, wz2100, Legend of Edgar, ну и текстовые игры, но их не ищу.

Xenius
()

Программы для читов в играх под GNU/Linux

 , ,

В Windows есть такие программы, например Artmoney, CheatEngine, TCheat и так далее — скажем пишешь значение жизней, ищешь в памяти, потом изменилось — отсеиваешь, повторяешь поиск и так далее, а когда нашел конкретный адрес, можно себе поставить бесконечные жизни. Некоторые из этих программ умеют кроме того ещё и дизассемблировать код в памяти, ставить брейкпоинты и так далее.

А вот про что-то такое под GNU/Linux я не слышал ни разу. Стало интересно, есть или нет?

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

Xenius
()

Ещё одна задачка на теорию вероятностей

 , ,

У ведущего за непроницаемой ширмой есть монетка с 0 и 1 на её сторонах и стандартный шестигранный кубик (от 1 до 6). Он вначале случайным образом выбирает, что кидать (например с помощью той же монетки), а затем кидает монету или кубик и называет полученное число. Ведущий назвал число 1. Какова вероятность, что он получил его киданием монеты?

А теперь усложним задачу. Ведущий ленивый и с вероятностью 3/5 вместо того, чтобы выполнять протокол, просто называет число от 0 до 6 наугад (все числа с равной вероятностью). Он назвал 1. Какова вероятность, что он получил это число киданием монетки?

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

Xenius
()

Самый быстро грузящийся LiveCD

 ,

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

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

Xenius
()

Писать прикладные скрипты на PHP — это извращение?

Время от времени встречаю такую фигню: кто-то использует локальный веб-сервер с php-cgi для того, чтобы выполнить задачу, которая никак не связана с веб-программированием, например раскидать файлы по директориям, переконвертировать логи в другой формат и тд, а запускает их заходя по URL типа http://localhost/script.php .

Зачем так делать? Это нормально или стоит тем, кто так делает, посоветовать изучить какой-нибудь другой язык кроме PHP?

Xenius
()

Постобработка изображения в Xorg по маске

 

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

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

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

Вообще какие есть способы изменение изображения с монитора с неравномерным преобразованием?

Xenius
()

Работают ли современные дистрибутивы с локалями отличными от *.UTF-8?

 , , ,

Я пробовал запустить файловый менеджер, предварительно написав команду

export LANG=ru_RU.KOI8-R LC_ALL=ru_RU.KOI8-R
, всё равно имена файлов отображались как UTF-8. Насколько я знаю, иксы как таковые ничего кроме UTF-8 не знают.

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

Значит ли это, что не UTF-8 локаль будет создавать только проблемы, а помогать в редких случаях когда используются консольные утилиты типа tr, не умеющие (или не желающие) использовать юникод?

Eddy_Em, что скажешь?

P.S. Интересная ссылка про юникод.

Xenius
()

Что будет, если инопланетяне найдут флешку?

 , ,

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

Если смогут, то как?

Xenius
()

LiveCD без иксов, но со всем что нужно для работы

 , ,

Скажем что-нибудь вроде sysrescuecd, но только чтоб было побольше всяких консольных утилит, особенно для восстановления данных, полноценное GNU-окружение и не было иксов. Или пусть иксы будут, но не запускаются по умолчанию. Ну и чтоб влезал без проблем в 128 метров оперативки и не трогал жесткие диски при загрузке (как forensic mode в GRML). Ещё желательно чтоб быстро загружался, а то например finnix сканирует при загрузки LVM, LUKS и тд, GRML зачем-то запускает Avahi и пытается — а надо чтоб просто загрузил полноценную консоль как можно быстрее — а там уже в консоли можно был при желании поднять интернет, LVM и тд — но только то что нужно. И все необходимые утилиты для работы были изкоробки (поэтому tinycore не годится например).

Сам systemrescuecd похож на то, но всё-таки не совсем.

Xenius
()

Как ограничить права приложений?

 ,

Есть приложение, которое хочет очень уж много привилегий, а конкретно сканер штрихкодов из F-Droid. Как закрыть приложению привилегии кроме пересборки/перепаковки apk, если функциями, для которых они могут понадобиться, я не собираюсь пользоваться?

Например мне нужно только сканирование штрихкода и копирование результата в буфер обмена — как закрыть всё кроме доступа к камере? Зачем этому приложению лезть в список контактов?

Xenius
()

Как ставить бесплатные приложения без регистрации в google?

 , , ,

К сожалению, в f-droid есть не все нужные программы для андроида, но Play Market проприетарный. Как ставить приложения из Play Market которые там бесплатные, не имея аккаунта в гугле и без собственно Play Market, который я при перепрошивке собираюсь выпилить, а пока просто отключил?

Я знаю сайт 4pda, но говорят, что там приложения перепакованные и неизвестно что автор темы в них напихал.

В частности, мне нужно приложение GPS Test, так как SatStat (вроде) не всё что нужно показывает. Кстати, а где посмотреть, под какой лицензией вообще это приложение (GPS Test) и где его исходники?

Ещё вопрос — есть ли возможность поставить CyanogenMod или Replicant на устройство, которого в списке поддерживаемых нет? Загрузчик вроде открытый.

Xenius
()

Распаковка ZIP-архивов с русскими именами в cp1251 или cp866

 , , ,

Как вы это делаете?

Я знаю, что:

  • 7zFM не умеет корректно их распаковывать, но позволет их распаковать с кривыми именами.
  • Дефолтный unzip не умеет, но распаковывает с кривыми именами
  • Дефолтные Ark и file-roller не могут распаковывать вообще никакие архивы zip с русскими именами, даже в UTF-8, так как unzip в листинге показывает их знаками вопроса.
  • 7z альфа-версии уже должен уметь, но его не видно под GNU/Linux
  • Патченный unzip от AltLinux должен уметь. Есть как минимум два разных патча
  • unar умеет распаковывать, кроме того он же умеет распаковывать и RAR v3, единственный (поправьте если не так) из свободных программ

Добавьте то что вы знаете о других программах.

Xenius
()

Гигантские файлы

 

# ls -l superfile.dat 
-rw-r--r-- 1 root root 8070450532247928832 Oct  6 00:06 superfile.dat

Угадайте, как я это сделал?

Файловая система без ошибок, файл существуют на самом деле и имеют такой размер. Ядро и утилиты не модифицированные.

Xenius
()

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