LINUX.ORG.RU

Избранные сообщения chuemir

Помогите вспомнить фамилию писателя фантаста

Форум — Talks

Напомните мне у какого фантаста я такое вот читал?

Компьютеры достигли «квантового и энтропийного предела», так и назывались ЕМНИП «предельные компьютеры», дальнейшее наращивание мощностей «вглубь» стало невозможно. В результате вычислительная архитектура «окаменела» в этом «предельном» состоянии и стабилизировалась на сотни и тысячи лет.

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

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

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

 , ,

Jameson
()

Запуск GUI-программы через Ansible на 15-ти хостах

Форум — Development

Мне нужно запустить через Ansible программу сразу на ~15 хостах. Программа GUI-шная, но запустить ее надо в терминале, чтобы в случае вылета программы, терминал остался, можно было быстро посмотреть выхлоп.

  - name: Запуск программы
    shell: "export DISPLAY=:0.0 ; fly-term --noclose --workdir /usr/share/ourProject -e \"./programm\""

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

Я пробовал отвязываться от терминала так:
    shell: "export DISPLAY=:0.0 ; (fly-term --noclose --workdir /usr/share/ourProject -e \"./programm\" &)"

Но тогда программа запускается и сразу завершается. Блоками по 5 хостов: сначала на первых 5 хостах, через секунду на следующих 5 и так далее.

Я курил маны на модули shell, raw, command, но ничего работающего как нада сделать не смог.

Что нужно прописать в команду, чтобы программа просто была запущена на хостах, а Ansible поехала работать дальше без ожидания?

 , , , ,

Xintrea
()

Релиз DRM-Free версии постапокалиптической игры Atom RPG

Новости — Игры
Группа Игры

18 декабря 2018 года стало главным событием для любителей хороших RPG. В этот день вышел идейный наследник таких хитов прошлого, как Fallout, Wasteland, System Shock, Deus Ex, Baldur's Gate. Игра быстро получила высокие оценки и позитивные отзывы игроков со всего мира. И сегодня, эта прекрасная во всех отношениях RPG появилась на GOG - для Linux, Windows и Mac! Без DRM.

Сюжет:

«В 1986 году СССР и Западный блок были практически уничтожены в ходе обмена ядерными ударами. Те, кто уцелел, борются за выживание, но кто-то решил довершить начатое. Вы - один из выживших после апокалипсиса. Ваша задача - исследовать жестокий и загадочный мир Советских Пустошей, завоевать в нём своё место под солнцем и распутать зловещий заговор, угрожающий жизни на Земле даже больше, чем атомная война...»

( читать дальше... )

>>> Подробности

 , , ,

anonymous
()

Coq 8.9

Новости — Open Source
Группа Open Source

Состоялся релиз Coq 8.9. Его разработка заняла 7 месяцев с момента выпуска Coq 8.8. Этот релиз является результатом ≈2000 коммитов и ≈500 pull request’ов.

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

( читать дальше... )

>>> Подробности

 , , , ,

Guest_1488
()

Как скачать игру для Windows из Steam в Linux?

Форум — Games

Вылазит сообщение при загрузке игры, что она не подходит под эту платформу. Хочу просто скачать и играть в Wine.

Сообщение такое:

При обновлении Fallout произошла ошибка (неверная платформа)

 , ,

expie
()

Рекомендации по сборке бинарников под Linux

Форум — Talks

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

1). Не компилируйте в последней на данной момент убунте (арче, федоре). Конечный пользователь обязательно словит «GLIBC_2.23 not found». Причём по нажатию по значку программы ничего не произойдёт - ошибку напишут в консоли

2). Какие библиотеки положить с прогой, а какие - нет, вам подскажет стандарт LSB. В разделах Core, Desktop и так далее есть подраздел «3.1. Relevant Libraries», перечисляющий те файлы системных библиотек, которые обязаны быть в каждом дистрибутиве Linux (хотя бы в репозиториях).

Я иногда сталкиваюсь с незнанием о существовании LSB. Например, некоторые игрушки в Стиме «тащат с собой» libm и libXfixes, непонятно зачем. Также одно время его тащил бинарник 2GIS, но потом это исправили (разработка 2GIS приостановлена).

Libjpeg62, libpng12, библиотеки иксов, GTK, cups, libGLU можно прописать как зависимость RPM или DEB пакета. А всякие там wxWidgets, OpenCV, ffmpeg можно положить в архив с программой, и «подцеплять» при запуске. Отдельно можно сказать про Qt: в LSB - устаревшая версия, поэтому новую версию можно также положить в архив с программой.

3). Компилятор GCC можно приготовить особенным образом, чтобы скомпилированная прога не требовала новый C++ Runtime. Например, в стиме, запущенном в Ubuntu 12.04, перестал работать веб-браузер, потому что Webkit стал требовать GCC 4.9 минимум, а в системе - 4.6. Valve просто не знали как компильнуть правильно.

А вот Canonical знают: гляньте в свойства Firefox 52 из состава этой версии убунты. about:buildconfig говорит, что собрано в GCC 4.8. При этом никакого C++ Runtime не требует!

Достигается это следующим образом. Компилировать с новым GCC, линковать со старыми либами. В дистрибутиве Linux «CentOS 6» существует замечательный репозиторий devtoolset, позволяющий установить в систему GCC 6. Готовые бинарники зависят от C++ Runtime от GCC 4.4, а также от Glibc 2.12. Красота!

Если прямоты рук не хватило, чтобы избавиться от зависимости от нового C++ Runtime - можно по-старинке положить libgcc_s и libstdc++ в архив с прогой - как это делает Icculus в DRM-free портах игр.

4). CentOS 6 вообще замечательная база для билд-фермы! X-Server 1.7 имеет поддержку Xinput 2.0, тогда как SLES 11 имеет X-Server 1.6 без такой поддержки. Xrandr в CentOS 6 уже используется для мульти-мониторых конфигураций, тогда как в CentOS 5 ещё использовался Xinerama, а Xrandr - только для смены разрешения экрана. В общем, дистр - довольно современный, и всё, что нужно, там есть.

А ещё там куча репозиториев: EPEL, Rpmfusion, Repoforge, Qt. Из них можно установить GTK3, wxWidgets последней версии, последний BOOST, последний GCC, и так далее.

5). В случае, если вы собираете игру, хедеры OpenGL лучше использовать от Khronos Group. Умолчальные Месовские, в теории, те же самые, но в случае CentOS 6 - старые. Сам файл библиотек, с которым будете линковать, обязательно должен быть месовским, а не NVIDIA или AMDGPU-PRO. И желательно чтобы файл библиотеки был старым. А header-ы - новые.

6). В DRM-free копиях игр есть замечательные скрипты запуска игр, которые подцепляют lib32 или lib64.

7). Меня бест ошибка «libpulse.so.0 не найден». Линкуйте её через dlopen(), блин! То же самое можно сказать про libcurl.so.4, libcurl.so.5 и libudev.so.0 и libudev.so.1. Такие проги, как Google Chrome, слинковались с этими библиотеками с помощью dlopen() (можно проверить командой strings chrome | grep lib), причём с несколькими версиями сразу. Я не знаю как.

 , ,

ZenitharChampion
()

Кастомизация i3

Форум — Desktop

Уважаемые лоровцы! Как создают потрясающие темы на оконные менеджеры? Достало облизыватся чужими скринами, хочется самому чего нибудь сделать. Поставил i3, а дальше что делать понятия не имею. Можете скинуть ресурсов для воплощения моих фантазий. Буду очень благодарен)

 , , , ,

Artamudo
()

Эмуляция медленной сети с большим пингом, потерями...

Форум — General

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

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

Что я попробовал:

#!/bin/bash

echo "emulation of slow network"
sudo echo

sudo tc qdisc del dev eth0 root
sudo tc qdisc add dev eth0 root handle 1: htb default 12
sudo tc class add dev eth0 parent 1:1 classid 1:12 htb rate 70kbps ceil 2kbps
sudo tc qdisc add dev eth0 parent 1:12 netem delay 200ms

Тестирование показывает, что upload в самом деле стал черепашинским, еле 60 кбит/с выдает. Из-за медленного аплоада и download тоже стал медленным хотя всё еще это сотни килобит а не десятки мегабит, но это лишь следствие, мы не можем заставить другую сторону (которую тестируем) слать медленнее...

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

Как это сделать? Чтобы не только исходящая скорость была низка, но и входящая?

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

I-Love-Microsoft
()

Создать пакет на уровне TCP «с нуля», в IPv4 задать IP-адрес получателя и идентификатор. С помощью чего реализовать?

Форум — Development

Надо создать пакеты на уровне TCP с редактированием всех заголовков. Также на IPv4 нужно задать идентификатор и IP-адрес получателя(все остальные заголовки на уровне IPv4 и ниже будут генерироваться самостоятельно). Хотя если таких инструментов нет, то могу создавать пакеты «с нуля». Как и с помощью чего можно это реализовать? Никогда раньше не работал на таком уровне с интернетом.

Желательно было бы на Python это все сделать, но если он не имеет для этого инструментов, то могу использовать C++.

 ,

letni
()

i3wm - lxappearance не меняет настройки font hinting

Форум — Desktop

Во всех популярных linux дистрибутивах устанавливается slight-rgba font hinting;

я в debian jessie для настройки отображения gtk приложений использую lxappearance, но в нём не работает изменения font hinting.

В чём может быть проблема?

 

misanthropy
()

i3wm на работе

Галерея — Скриншоты

Рабочая среда. Используется:

  • Связь:
    • sip - linphone
    • xmpp - pidgin (ранее weechat,profanity)
    • mail - thunderbird (mutt не подошел из-за exchange)
    • twitter - rainbowstream
    • rss - newsbeuter
    • мессенджеры - viber, telergam, skypeforlinux
  • Работа:
    • DB - DataGrip (получил бесплатно со студенческой лицензией)
    • Code - SublimeText3, vim(почти дефол, только emmet добавил)
    • RDP - remmina
    • VNC - TightVNC Viewer (нет, через remmina не удобней)
    • Заявки ТП - assystweb

Не так давно надоел i3, поставил gnome,kde,xfce,fvwm,openbox - ничего не дало такого удобства как i3. Вернулся. Вдохновение черпаю из галереи LORа и dotshare.it
Из деятельности: поддержка пользователей (и психологическая в том числе), иногда кодинг (php,nodejs), бд (mssql,mysql), автоматизация всего, что смогу (свод составления отчета к одной кнопке)
Вторая дата справа - это время на сервере, есть необходимость в мониторинге. Если дата не та, которая нужна - срабатывает notify-send и дата меняет цвет на красный.

 ,

topolskij
()

Рабочий i3

Галерея — Скриншоты

Шрифт в терминале и I3 статус : terminus и FontAwesome
В I3 статусе: коньки с отображением статуса TeamViewer, если запущен - то показывает ID
Параметром for_window убраны рамки с часто используемых ПО и подогнана GTK, тема Sublime и браузера в одинаковые цвета

 ,

topolskij
()

Стоит ли ставить Hearthstone через Arc Welder?

Форум — Games

Единственное, что сейчас стоит через Wine - Hearthstone. И было бы неплохо поставить Hearthstone через Arc Welder,чтобы удалить Wine. Или Arc Welder еще тот костыль(Относительно Wine) ?

 arc welder, ,

Deleted
()

Перехват нажатий клавиш в gtk2hs

Форум — Development

Есть пара вопросов по Haskell и Gtk2hs:

Во-первых, как правильно перехватывать нажатия клавиш в Gtk2Hs? Дока предлагает на keyPressEvent повесить функцию, которая с помощью tryEvent будет формировать событие, отвечающее нажатию обрабатываемой клавиши. Как это вообще работает и что делать, если нужно обработать нажатия нескольких клавиш?

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

Ну и вот код того, что я там понаписал: http://pastebin.com/nq9DwWG4

 ,

SeTSeR
()

The Eudyptula Challenge

Форум — Development

Всем привет.

В С у меня вообще нет опыта, но очень интересен кернел. Копаясь в интернетах, набрёл на The Eudyptula Challenge проект с таким описанием:

What is it?

The Eudyptula Challenge is a series of programming exercises
for the Linux kernel, that start from a very basic "Hello world"
kernel module, moving on up in complexity to getting patches
accepted into the main Linux kernel source tree.

What skills do I need to take this?

A basic understanding of the C programming language is required.
No previous Linux kernel coding experience is needed, but that
of course will help.
и очень заинтересовался ☺ Но меня немного смущает порог вхождения. Я никогда не писал ничего серьёзного в юзер-спейсе, кроме хеллоуворлдов из упражнений в K&R (сейчас по-тихоньку разруливаю вот это, хотя, в сишке более-менее ориентирусь (по крайней мере, мне так кажется ☺). Вопрос: стоит ли вообще рыпаться с этой едиптулой, или лучше набить скиллов, лет 10-15 практикуясь в обычных С проектах?

 , ,

ubik
()

Написание свободной(Free as in Freedom) книги-самоучителя по программированию: планы, цели, задачи

Форум — Development

Итак, я решил написать(или как вариант, собрать из кусочков) книгу-самоучилель по программированию, в которой бы не было глупых и нелепых ограничений на распространение. Однако копилефт я все же считаю приемлемым в данном случае. Общественным достоянием это не будет т.к. вполне могут найтись желающие использовать результат в своих проприетарных книгах, а проприетарные книги — плохо. Лицензия самого текста книги-учебника будет или Creative Commons Attribution-ShareAlike (что позволит без каких-либо проблем переиспользовать текст из википедии) или что-то вроде GNU Free Documentation License (без неизменяемых разделов естественно).

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

Теперь к теме того, на кого книга ориентирована, какие начальные знания предполагаются, чему книга будет учить, какой первый ЯП взять и каков будет авторский самысел: С этим моментом я пока что не определился окончательно, и тут есть что обсудить. В частности, я не вижу особого смысла объяснять какие-то базовые понятия комбинаторики, об этом можно доступным языком прочитать из школьных учебников. Системы счисления(СС), перевод из одной СС в другую - вот это еще можно. One's и two's complement представления знаковых чисел — про это тоже можно написать. Если же человек не понимает комбинаторику, он ее быстро поймет на примере кода, который будет достаточно наглядно это показывать, и который всенепременно будет.
Пока что в качестве первого языка я склоняюсь к Си, и тому есть причины. Все прочие распространенные языки (кроме ассемблера, хотя его трудно назвать распространенным) не настолько близки к аппаратному уровню. Про нужность понимания на низком уровне написано тут http://russian.joelonsoftware.com/Articles/BacktoBasics.html https://habrahabr.ru/company/piter/blog/271347/ , не вижу смысла повторяться. Приведу лишь цитату:

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

Притом еще один важный момент: Си будет изучаться параллельно с ассемблером. Если речь идет об изучении ассемблера, необходимо четко зафиксировать то, на какой архитектуре это все происходит и в какой ОС. Так вот, ОС будет GNU/Linux а архитектура x86-64. Будут постоянно проводиться параллели между тем, что из себя представляет код на Си в текстовом виде, и тем, в какой текст на ассемблере его превращает компилятор. В связи с этим, первым делом будет рассказано о goto и конструкции if(условие) goto метка;. Про конструкции вида

if(условие)
{
  что-то_делаем;
}
else
{
  что-то_другое_делаем;
}
Будет рассказано немного позже, притом это будет рассказано и словами, и через написание эквивалентного кода через if(условие) goto метка;. Циклы, for(){} while{}, do{}while(), конструкция switch-case и break continue внутри них будут так же объясняться через все тот же if(условие) goto метка; притом будет делаться явный акцент на том, что намного лучше использовать нормальные циклы, чем лепить всюду этот условный goto. Кроме того, будет так же рассказано про Labels as Values. Почему так важна эта странная штука, if(условие) goto метка;? Потому что она имеет наипрямейшее отношение к тому, как работают ЭВМ, а всякие циклы СКРЫВАЮТ это. Рекурсия в Си будет объясняться только после того, как будет объяснено, что такое стекфрейм и соглашения вызова, будет сказано про оптимизацию хвостовой рекурсии, и о проблеме забивания стека, если такая оптимизация не происходит, притом это будет наглядно показано в ассемблере. Учиться отлаживать код надо будет тоже «с пеленок», притом отлаживать и ассемблер, и всякие там Си. Будет и про асм-вставки в Си, clobber list. В качестве ассемблера будет рассматриваться GAS, а никакой не NASM т.к. GCC умеет выплевывать ассемблер именно в GAS синтаксисе. Насчет выбора Intel или AT&T синтаксиса - тут я склонюсь пожалуй к тому, что надо ЗНАТЬ И УМЕТЬ ПОНИМАТЬ ОБА. Кроме того, GAS давно уже умеет в оба синтаксиса, так что проблем с этим не будет. Единственная проблема с GAS в том, что это однопроходной ассемблер, так что можно освоить и какой-нибудь NASM, YASM.

Первые хеллоуворды будут написаны вообще в особом стиле, без использования printf() и вообще без библиотеки Си; Будут использованы куски на ассемблере, которые делают системный вызов write и read, и с ними можно(нужно) будет линковаться, чтоб что-то вывести на экран. Будет рассказано и про printf естественно, но только когда будет совершенно четко ясно, что такое вообще va_list. Будет куча отсылок к драфту стандарта Си (недрафт почему-то платный). Будет так же рассказано про устройство ОС. В конце скорее всего будет дано задание сделать свою игрушечную ОС так что предполагается что человек к тому моменту должен уже отлично понимать всякие там связные списки, графы, очереди, спинлоки-аллокаторы свои уметь делать на асме при желании. Алгоритмы сортировки, обхода графов, хеш-таблицы, все это будет объяснено на языке Си, и плюсов вообще касаться я не буду.

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

Кроме того, после моей книги предполагается, что человек должен уметь заниматься такими ненужными (в GNU/Linux) на первый взгляд вещами, как крякинг, реверсинг, исправление ошибок в бинарниках, не обладая исходным текстом. Восстановление логики работы программы по дизасму. Ну и программирование в машинных кодах (без ассемблера, одним HEX редактором).

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

cast ASM be_nt_all mister_VA

UPD: Программирование и отладка на C/ASM - Первые программы. Знакомство с C и ассемблером. Компиляция, линковка, код возврата. Вывод текста.

 , , ,

SZT
()

Посоветуйте что-нибудь в стиле облы, морровинда.

Форум — Games

Хочу что-нибудь похожее, не онлайновое, в даггерфолл и арену как-то не хочу, хотелось-бы игру с похожей прокачкой, то есть не по очкам опыта, а по умениям, Fallout: New Vegas надоел таки. Есть ли такое?

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

 , ,

NetBurst
()

Генерировать простые числа на haskell

Форум — Development

Помогите придумать функцию, генерирующую бесконечный список простых чисел, такой же как [1..] или fib a b = a:fib b (a+b).

Очевидно, что это можно сделать неоптимально:

ghci> let isprime x = all (\n->x`mod`n/=0) [2..x-1]
ghci> take 10 $ filter isprime [2..]
а так же можно сделать оптимально, но так,чтоб генерировала бесконечный список у меня не получается
ghci> let isprimeof x primes = all (\y-> x`mod`y/=0) primes
ghci> let newprime primes = x where Just x =  find (flip isprimeof primes) [(last primes)..]
ghci> let addprime primes = primes ++ [newprime primes]
дальше можно определить primegen primes = primegen $ addprime primes, но это будет бесконечная рекурсия, которая не выдает список

 

FeelUs
()

XMonad, Haskell глазами начинающего: что?

Форум — Development

Добрый вечер.

http://xmonad.org/xmonad-docs/xmonad-contrib/XMonad-Layout-Spacing.html

layoutHook = spacing 2 $ Tall 1 (3/100) (1/2)

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

layoutHook = spacing

Ну, вроде, всё окей

2

Из текста ниже по странице понял, что это как раз кол-во пикселей

$ Tall

Для layout под названием Tall?

1 (3/100) (1/2)

Что символизируют эти числа?

И ещё -

  • Почему после применения этой шайтан-магии у меня поменялось имя layout, отображаемое на xmobar?
  • Я добавил эти строки в первый раз, mod+Q - появились отступы. Поменял 2 на 20, сохранил конфиг, mod+Q - ничего не изменилось, xmonad --restart - ничего не изменилось. Завершил сессию, зашёл заново - настройки применились, отступы стали по 20. Почему ни mod+Q, ни xmonad --restart не сработали, как надо?

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

 ,

Norong
()

Запустить в линуксе шелл-команду x86 или x86_64 машинным кодом

Форум — Development

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

P.S. тег syscall ставлю просто так, не знаю, он тут причем или не причем

 , , ,

hlebushek
()