LINUX.ORG.RU

Сообщения utf8nowhere

 

Все софтверные мануфактуры придерживаются таких взглядов?

Роберт Мартин. Быстрая разработка программ

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

 

utf8nowhere
()

Вспомнить игру

Нашёл сам: Hostile Waters (Hostile Waters: Antaeus Rising)

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

Игра 3D. Есть что-то вроде контрольного пункта на корабле, стоящем в море. Самим кораблём управлять было нельзя, но можно было вылетать с него на чём-то вроде вертолёта (футуристического вида?), а также другой техники, в зависимости от миссии. При приземлении на корабль, ЕМНИП, открывалось меню контрольного пункта, где, наверное, можно было чинить/наворачивать транспортное средство.

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

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

Это всё, что я запомнил.

Кое-что ещё вспомнил: как мне кажется, вертолётом можно было таскать эту танкетку.

 , ,

utf8nowhere
()

Key-value storage (?), с непредсказуемым key или document storage

Короче, ребзя, нужно мне создавать и классифицировать файлы по нескольким параметрам. Например, по толщине и зелёности. Сейчас я использую иерархическое хранение в файловой системе, вроде: "./толщина:XXXсм./зелёность:YYY%/".

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

Решил я, что мне нужна БД, которая бы брала набор параметров и возвращала мне что-нибудь, что можно использовать как путь. Похрену, что. UUID, например.

Из требований: легкость в освоении и настройке, т.к. записей там будет всего несколько сотен и нет смысла возиться с настройкой производительности; работа по сети.

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

Остальное выясним в процессе обсуждения.

 

utf8nowhere
()

Мобильный телефон без WiFi и игр

Есть такие сейчас? Чтобы даже змейки или чего подобного не было установлено. Чисто звонки+sms.

 

utf8nowhere
()

Самый мощный в мире серийный встраиваемый компьютер класса ВохРС сделан в России ￾

Специалисты российской инженерной компании АО «РТСофт» первыми в мире построили и успешно испытали самый мощный встраиваемый безвентиляторный компьютер класса BoxPC SWAP-C Premium на базе новейшего мобильного embedded-процессора Intel Skylake Xeon 1515M с мобильным серверным чипсетом СМ236, бортовой графикой Iris Pro Graphics P580 и памятью 32 ГБ ЕСС DDR4. Это первый серийный embedded-продукт подобного класса на мировом рынке с исполнением вплоть до -40…+70 °С.

Применение ультрасовременных 14-нанометровых платформ серии Intel Xeon 1515M/1505M 3,7/2,8 ГГц – это кардинальное пополнение серийных линеек компактных отечественных машин BLOK Industrial и BLOK Rugged, предназначенных для создания защищенных, критически важных и ответственных инженерных решений масштабируемой производительности с длительным жизненным циклом в системах атомной энергетики, управления воздушным движением, в системах специального назначения и безопасности.

Машины BLOK на мобильной платформе Intel Xeon 1515М шестого поколения, с объявленной доступностью на мировом рынке в 1-м квартале 2016 года, обладают рекордными характеристиками производительности, энергоэффективности, управляемости и защищенности.

По словам технического директора «РТСофт» Алексея Рыбакова, «наиболее значимым результатом работы по наращиванию возможностей профессиональных машин серии BLOK считаем не столько факт великолепной производительности и энергоэффективности CPU/GPGPU платформы Xeon 1515M, сколько те преимущества, что дают эти ультрасовременные технологии для достижения целей надежности, необслуживаемости и неубиваемости за очень бюджетные деньги».

Компьютеры серии BLOK на базе новейших платформ Intel Xeon 1515M/1505M и i7 6820EQ/6822EQ гарантируют простоту и удобство при создании безвентиляторных (бесшумных) полиэкранных сетевых HMI (до 3 DisplayPort, разрешением до 4K), специальных серверов и шлюзов, бортовых машин, где предъявляются серьезные требования по оптимизации габаритов, веса, энергопотребления и цены наряду с высокими требованиями производительности, совместимости, безопасности и минимальной стоимости владения.

Благодаря открытой и стандартной архитектуре гарантируется великолепная совместимость с самым современным системным ПО класса Linux, Windows, ОС реального времени и с гипервизорами, поддерживающими технологию виртуализации. Архитектура машин позволяет использовать наиболее актуальные технологии в разработке продвинутых гетерогенных и графических приложений: OpenCL 2.1, MS С++ AMP, DirectX 12, OpenGL 5.0.

Машины BLOK на платформе Intel Skylake Xeon/i7 будут доступны для российских и зарубежных потребителей в температурном диапазоне -10…+50 оС или -40…+70 оС, в исполнении для III группы ТС АС-ЯРО или в исполнении для групп 1.1, 1.2, 1.3, 1.4.1 УХЛ по ГОСТ РВ 20.39.304.

Компьютеры обеспечены высоким уровнем сертификационной и лицензионной поддержки для работы в различных сегментах экономики РФ и стран Таможенного союза: TÜV NORD CERT (ISO 9001:2008), ФСТЭК, Ростехнадзор, Минпромторг и др., поддержаны гибкими возможностями кастомизации как аппаратной части, так и UEFI/BIOS в кратчайшие сроки. Изделия обеспечивают самый высокий уровень защиты от любых экспортных ограничений.

За разработку компьютеров серии BLOK компания «РТСофт» в 4-м квартале 2015 года была удостоена звания лауреата национальной премии в области импортозамещения «Приоритет-2015».

Машины серии BLOK доступны для заказа, гарантия на них оптимальна для «длинных» проектов: от 3 до 7 лет. Тест-драйв машин возможен со склада «РТСофт» бесплатно.

АО «РТСофт» благодарит своих технологических партнеров, сотрудничество с которыми позволило создать и поддерживать в России серийный продукт мирового класса: «Фирма «НИТА» (Санкт-Петербург), НТЦ «Элинс» (Зеленоград), ФНПЦ НИИИС им. Ю.Е. Седакова (Нижний Новгород), SWD Software (Санкт-Петербург), «Кварта Технологии» (Москва), АО «РусБИТех» (Москва), корпорация Intel, Adlink, Kontron AG и Transcend.

Расширенную информацию можно получить на сайте http://blok.rtsoft.ru/ или в компании «РТСофт».

 , , , ,

utf8nowhere
()

Reverse SSHFS mount

Думаю, ЛОР-овцам будет полезно.

Итак, все знают, что можно с помощью sshfs примонтировать удалённую директорию:

sshfs user@server:/remote/path /local/path

Однако, возникла обратная задача: примонтировать локальную директорию на сервере, инициировав подключение и командуя с локальной машины. При этом не подымая ssh-сервера на клиенте. Да вообще не делая ничего, что может потребовать root-прав, вроде поднятия интырпрайз-ready NFS-сервера.

Пользуясь прямой видимостью клиента с сервера (если бы её не было, можно бы было организовать reverse-туннель), пробовал поднять всякие колченогие недосервера, вроде davserver для WebDAV или python -m pyftpdlib для FTP и монтировать их на сервере с использованием wdfs или curlftpfs. На чтение работало (медленно), при попытке записи на WebDAV процесс на сервере намертво зависал (кажется, виноват wdfs, но я особо не разбирался), а curlftpfs не поддерживает seek.

Немного погуглив, наткнулся на это https://blog.dhampir.no/content/reverse-sshfs-mounts-fs-push и понял: это ОНО! Правда, там то, что мне нужно, описано другими словами: сервер иницирует подключение к клиенту и монтирует ему путь, который считает нужным. Но тут вопрос в том, что назвать сервером. Я называю ту машину, где работает sshd.

Итого, команда выглядит так:

dpipe /usr/lib/openssh/sftp-server = ssh user@server sshfs :/local/path /remote/path -o slave

 , ,

utf8nowhere
()

Положение иконок в трее зависит от текущего времени

Есть MATE. Есть апплет notification area по соседству с апплетом clock. Ширина clock меняется в зависимости от отображаемого времени. Ну там допустим секунды: когда в единицах секунд 3, то она поуже, когда 4 пошире, когда 5 опять поуже. Следом за изменением ширины clock двигается влево-вправо notification area.

Даже если отодвинуть чуть-чуть notification area, то в clock слева есть ещё информация о погоде, которая продолжает скакать. Да и всё содержимое апплета — погода, часы, минуты, десятки секунд — похоже, прижато к правому краю и в зависимости от текущей секунды двигается туда-сюда.

У вас ещё есть вопросы, почему linux никак не взлетает на десктопе? А винда всё ещё жива?

 ,

utf8nowhere
()

Ноутбук не уходит в сон если примонтирована sshfs ￾

При нажатии Fn+F3 (sleep) DE блокирует экран, но дальше вместо его обычного гашения и остановки кулеров и проч., ЭВМ просто перестаёт реагировать на нажатия клавиш и тачпад; через минуту тыканья по клавиатуре всё отлипает как будто никакой команды заснуть не было, можно ввести пароль и продолжить работу.

Если отмонтировать sshfs, то засыпает нормально.

Напомните, насколько ядро linux технически круче остальных ядер и который сейчас год непрерывных побед на десктопах?

 , ,

utf8nowhere
()

Беспредел

Вахтёр, как обычно, спонтанно воспламенился на ровном месте и снёс топик www.linux.org.ru/forum/development/13086276 за использование слова «говнокод».

Давно слово «говнокод» стало запрещённым? При том, что вахтёр сам его активно употребляет:
написать драйвер для своего устройства (комментарий)
Производительность C++ (комментарий)
copy_to_user из прерывания (комментарий)
передать вектор в C++11 (комментарий)
И третий раз Грег пытается протолкнуть kdbus... (комментарий)

Доколе?

 , ,

utf8nowhere
()

utf8 everywhere ￾

Копировал с помощью js-консоли в браузере (функция copy()) в буфер обмена всякую дрянь вроде невалидного юникода, потом вставлял в адресную строку и гуглил. (да, я развлекаюсь как аутист)

Внезапно заметил, что исчезла панель задач. Что же такое? Слава utf8, Alt+Tab всё же работает. Что мы видим?

Sorry, Ubuntu 16.04 has experienced an internal error

ExecutablePath
/usr/lib/mate-panel/wnch-applet
Package
mate-panel 1.12.2-1
Короче, из-за херни в заголовке окна браузера свалился апплет со списком окон.

Попытки воспроизвести показали, что валится на '\uFFFE'. В JS-консоли (Ctrl+Shift+i) выполняем copy('\uFFFE');, вставляем из буфера обмена в адресную строку в новой вкладке и жмём ентер.

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

Подходил к концу 2016-й год. Это какой по счёту год непрерывных побед Linux на десктопе?

 , ,

utf8nowhere
()

Есть ли жизнь на daily сборках Ubuntu (17.04)?

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

Например, нужен gcc 7, он есть в toolchain ppa для 17.04. (Предлагающим собрать его из сорцев на текущей системе — сразу на выход. В 2016-м конпелять из сорцев это ниже достоинства белого человека).

Как обстоят дела с общей нестабильностью системы? Много ли багов?

 ,

utf8nowhere
()

Все сообщения темы на одной странице

Помню, много-много лет назад, когда ещё ЛОР был синим у всех, была возможность показать все сообщения топика по URL-у типа http://linux.org.ru/url-темы?page-1. Потом (тоже уже давно) эту фичу убрали. Почему?

Сейчас можно так сделать, нажав на «показать удалённые комментарии», но это не то.

 ,

utf8nowhere
()

Что за идиотская мода — называть map (ассоциативный массив) «картой»?

Как-то раньше не обращал внимания, но в последнее время всё чаще замечаю, что std::map и его однофамильцев из других языков в русскоязычном интернете называют «картой». Я, конечно, не строил никаких иллюзий, но неужели русскоязычное IT-сообщество настолько выродилось, что всё, на что оно способно — это пользоваться гугл-переводчиком?

Правильнее всего, на мой взгляд, было бы называть тем, чем map является — «ассоциативным массивом». Но если хочется перевести относительно буквально, то наиболее близким термином я бы назвал «отображение». map и function в математическом- и CS-контексте это синонимы, но термин «функция» занят. Поэтому «отображение».

Когда я вижу где-то «у меня есть карта std::map<int, string>» и т.п. — хочется взять и ушатать.

Перемещено tailgunner из development

 

utf8nowhere
()

Домохозяйки правы, говоря «процессор» на системный блок

!Ъ: https://youtu.be/Cn4vC80Pv6Q?t=1m12s

Ъ: презентация интерфейса Xerox Star от 1982. Презентующий, описывая компьютер, говорит «It consists of a processor...» и при этих словах указывает на ящик, который сейчас школьники и прочие страдающие бредом реформаторства именуют «системный блок».

Полное предложение выглядит так: It consists of a processor, a large display screen, a keyboard, and a pointing device called a mouse. При этом презентующий указывает на соответствующие компоненты. Отсюда видно, что речь не идёт о том, что внутри есть процессор, а процессором явно называется весь ящик.

 ,

utf8nowhere
()

g++ internal compiler error при компиляции говнокода с -O2

Итак, берём лютый говнокод

int main()
{
	auto f = [](void* ptr) { goto *ptr; };

	f(&&label);

label:
	return 0;
}
и скармливаем его g++. Пока уровень оптимизаций меньше -O2, то он компилируется. Работает везде по-разному. У меня падает с
*** stack smashing detected ***: ./a.out terminated
Aborted (core dumped)
на http://melpon.org/wandbox/ мирно завершается с кодом возврата 0.

Но стоит только включить уровень -O2... (компиляция на вышеупомянутом сайте, gcc HEAD 7.0.0 20161113 (experimental))

prog.cc: In function 'main()::<lambda(void*)>':
prog.cc:3:23: internal compiler error: Segmentation fault
  auto f = [](void* ptr) { goto *ptr; };
                       ^
0xaf60df crash_signal
	/home/heads/gcc/gcc-source/gcc/toplev.c:338
0xb2c48d cleanup_control_flow_bb
	/home/heads/gcc/gcc-source/gcc/tree-cfgcleanup.c:250
0xb2c741 cleanup_tree_cfg_1
	/home/heads/gcc/gcc-source/gcc/tree-cfgcleanup.c:702
0xb2c741 cleanup_tree_cfg_noloop
	/home/heads/gcc/gcc-source/gcc/tree-cfgcleanup.c:766
0xb2c741 cleanup_tree_cfg()
	/home/heads/gcc/gcc-source/gcc/tree-cfgcleanup.c:817
0xa403c4 execute_function_todo
	/home/heads/gcc/gcc-source/gcc/passes.c:1918
0xa4137b execute_todo
	/home/heads/gcc/gcc-source/gcc/passes.c:2015
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <http://gcc.gnu.org/bugs.html> for instructions.

Самая младшая падающая версия — gcc 4.6.4 (на вышеупомянутом сайте). Версии проверял не все, только несколько верхних и нижних плюс пару промежуточных, они крашатся. Думаю, крашатся все промежуточные.

Похоже, разработчики g++ не были готовы к тому, что их расширение «Labels as Values» будут скрещивать с лямбдами.

Кстати, clang++ отвергает код с такой формулировкой:

prog.cc:3:27: error: indirect goto in function with no address-of-label expressions
        auto f = [](void* ptr) { goto *ptr; };
                                 ^
Хорошая защита от говнокода, но некоторым она не нравится: https://llvm.org/bugs/show_bug.cgi?id=18658

Воспользуемся воркэраундом, приведённом в багрепорте и изменим лямбду:

auto f = [](void* ptr) { goto *ptr; crap: void *pcrap = &&crap; };
clang++ компилирует и не падает. И что самое забавное — g++ тоже перестаёт падать!

При этом g++ начинает лучше оптимизировать код: в первоначальной версии кода, на уровне -O1 остаётся вызов лямбды, а в версии с dummy-меткой в лямбде main компилируется просто как обнуление eax и возврат. clang++ с -O1 оптимизирует main до такого же состояния. Правда, я подозреваю, это не результаты инлайнинга, а результаты выкидывания кода с UB.

Такие дела.

Что касается багрепорта — я его организую как только мне выдадут доступ к gcc-шной багзилле.

 , ,

utf8nowhere
()

Наследование от стандартных контейнеров

Я всегда, как мне казалось, пытался быть взвешенным, нейтральным и объективным. Например считая, что в макросах нет ничего плохого там, где они нужны (в отличие от школьников и фанатиков, вопящих «ололо, макросы в C++ низзя!») и т.п.

Но во что я свято верил до недавнего времени — от std::vector&co наследоваться — харам! Что если хочется — ты что-то делаешь неправильно.

Решил попробовать boost::program_options. А там... наследуют от std::map!

Что же, неужели в наследовании от контейнеров может быть смысл? Или boost'еры что-то делают не так (не вообще, а в этом локальном случае)?

 , ,

utf8nowhere
()

Тонкости форматирования кода в скобкоязыках

Внимание! Этот тред не про табы vs пробелы! Все и так знают, что единственный адекватный стиль это «табы для отступов, пробелы для выравнивания».

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

// арифметические выражения
auto a = 2
       + 3
// if
if (  very_long_condition_1
   && very_long_condition_2
// вызов функции
very_long_function_name( very_long_argument_1
                       , very_long_argument_2
// и даже цикл for!
for ( int i = 0
    ; i < N
    ; ++i

Плюс сюда можно добавить base and member initializer list, где строки начинаются с запятой и т.п.

У меня остаётся ряд нерешённых вопросов:

  1. Где ставить точку с запятой в арифметическом выражении?
  2. Где ставить закрывающую скобку и точку с запятой при вызове функции?
  3. Где ставить закрывающую скобку и открывающую фигурную для if/for? Должно ли положение открывающей фигурной отличаться для случая однострочного и многострочного условия? Пока я для себя решил, что стиль K&R, но при многострочном условии открывающая скобка на новой строке. Это если закрывающая круглая была на той же, где и последнее условие.
  4. Где ставить двоеточие в initializer list при переносе: все равно после имени конструктора или на новой строке перед первым членом списка?
  5. Придерживаться ли правила «всё или ничего»: помещать все условия или все аргументы на одной строке, если влезают и помещать каждый в своей строке, если не влезают? Или сувать в строку пока влезают и переносить первый невлезший? Больше склоняюсь к «всё или ничего».

ЛОР поможет ответить на эти вопросы, ну или хотя бы попытается.

 , ,

utf8nowhere
()

Чем мой аватар был хуже?

Чем www.linux.org.ru/photos/137176:-1719735449.jpg хуже www.linux.org.ru/people/Rastafarra/profile вот этого?

С хрена ли мой снесли?

 ,

utf8nowhere
()

«В [Windows]NT нет fork()» — миф.

На самом деле есть, и даже COW.

https://groups.google.com/forum/#!topic/comp.os.ms-windows.programmer.nt.kernel-mode/hoN_RYtnp58

The most important parameter here is SectionHandle. If this parameter is NULL, the kernel will fork the current process. Otherwise, this parameter must be a handle of the SEC_IMAGE section object created on the EXE file before calling ZwCreateProcess().

NTSYSAPI
NTSTATUS
NTAPI
ZwCreateProcess(
    OUT PHANDLE ProcessHandle,
    IN ACCESS_MASK DesiredAccess,
    IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
    IN HANDLE ParentProcess,
    IN BOOLEAN InheritObjectTable,
    IN HANDLE SectionHandle OPTIONAL,
    IN HANDLE DebugPort OPTIONAL,
    IN HANDLE ExceptionPort OPTIONAL
    );

Ещё вот: forknt.c

Перемещено tailgunner из development

 , ,

utf8nowhere
()

Typeclasses в Haskell

Часто можно услышать их сравнение с «интерфейсами в java» или что-то в таком духе. На мой взгляд, это плохая аналогия. Тайпклассы больше напоминают свободные шаблонные функции с неопределённой для общего типа реализацией (ну или [взаимно]определенные через другие функции, но это уже детали), которые надо явно инстанциировать для своего типа.

 ,

utf8nowhere
()

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