Завершение акции по разработке программы для участников фэндома и открытие новой акции [выбрана заявка]

+142
в блоге Общеличный блог
Это заняло гораздо больше времени, чем рассчитывал — но дело таки завершено.



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

Была выбрана заявка:

Редактор, чтобы делать 3D модельки из кубиков

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

Возможности проекта:
  1. Полностью трехмерная модель с несколькими режимами камеры.
  2. Загрузка произвольных текстур
  3. Установка как отдельных кубиков (включая полублоки), так и наборы кубов.
  4. Выделение и копирование участков
  5. Предпросмотр фигуры перед установкой
  6. Создание палитр текстур
  7. Улучшение визуального вида модели за счет освещения и граней
  8. Возможность установки прозрачности для текстур
  9. Нарезка модели по слоям с сохранением в двумерные файлы

Под катом скрины готовой программы и информация о новой акции.

Небольшая модель
Установка набора кубов предпросмотром
Выделение области для копирования
Модель-домик с прозрачным окном
Строим пирамиду параллелепипедами
Режимы управления камерой
Диалог послойной нарезки

И поскольку задача завершена — я объявляю о новой акции с теми же условиями.
Кратко об условиях акции.
1) В посте или в личку (но предпочтительно в посте) вы высказываетесь, какую программу вы бы хотели получить.
2) Тематика — любая. Я достаточно квалифицирован, чтобы осилить практически любую предметную область.
3) К заявке должно быть приложено краткое описание в свободной форме — что программа должна уметь, как работать, если будут примеры входных/выходных данных — отлично. Расписывать во всех деталях не нужно, см. пункт 4.
4) По истечению срока сбора заявок (до 14.02.2021 включительно), я выбираю наиболее мне понравившееся предложение и начинаю работу с заказчиком, путем личных переговоров, уточнения задания и т.д. — обычный цикл разработки.
5) Когда разработка завершена — счастливый заказчик получает программу, а я делаю пост об этом с отчетом.

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

UPD: Сбор заявок продлен до 16.02.2021 включительно по причине праздничного дня.
UPD2: Победившая заявка:

Игровое приложение генерации аномалий по случайным геокоординатам

346 комментариев

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

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

tabun.everypony.ru/blog/computers/196225.html
Это видел, но там весь клиент ради буры. А мне бы не буру, а чтобы текст красиво сжимался по ширине экрана и при этом оставался читаемым — сейчас иначе, чем скроллом по всем 4 направлениям и постоянным зумом пользоваться с мобилки весьма сложно :(
habr.com/ru/post/119127/ сделай, лол)
Сделай что? Я не кодер ни разу и не дизайнер, в тонкостях не шарю. Автор попросил идей накидать — ему накидали, ко мне какие претензии?

Впрочем, это уже неважно.
UPD2: Победившая заявка:

Игровое приложение генерации аномалий по случайным геокоординатам
Адаптацию под мобилки
livestreet.ru/blog/templates/15882.html
mmozg.net/
или просто подгони чьи-то действующие правила под схожий сайт/себя
Это все конечно хорошо, но это надо в сам табун встраивать или это какой то обвес для условной лисы/хрома/сафари/что-там-еще-популярного-из-браузеров? Если обвес то это костыль (да и тот со свистом пролетит мимо айдевайсов), в идеале клиент наподобие того же dtf, заточенный именно под мобилки. Но, повторюсь, это была просто идея для автора, которую уже закопали (ещё до ваших комментариев).
bunker.lunavod.ru/
Бункер адаптирован под мобилки, спрашивай их
Был там пару раз, но до сих пор так и не понял, что это такое и для чего нужно :(
Я слоупок, но объясню. Бункер был нужен чтобы не заскучать в период эпичных поломов табуна. А потом там собралась компашка, и теперь это анклав-чятик полутора программистов.
анклав-чятик полутора программистов

В последнее время постоянно на них натыкаюсь, как irl так и в инете. Везёт видимо. Ещё немного, и сам начну превращаться в программиста…
которую уже закопали

Идею не закопали, просто она не прошла отбор.
Тупо не потяну, не мой уровень разработки.
Он-то есть, но он не обновляется года три так точно и работает на новых (и наверняка слегка старых) версиях Android крайне плохо. За неё в своё время отвечал cab404, но его последний визит был в августе прошлого года.
Ну раз так, надо изучить вопрос. Разработка под Android — для меня полезна и нужна, дабы вырасти над собой, но тут явно попахивает большим объемом работы, который в одно рыло не факт что вывезешь.
Как вариант, можно было бы привлечь nogard -а: он в разработке под Android более чем разбирается и тянет свой клиент в одиночку. А ещё мало кто пишет ему в discord с правками клиента, потому может быть свободен, ну, не считая рабочих обязанностей.
Не могу сказать с уверенностью, согласится он или нет, но если таки да — то это будет уже два рыла, а не одно!

А потом проект становится общетабуновским и туда начинают привлекаться все: от Флаера до Хомуры.
Подумаю. Основная беда в том, что у Табуна нет API, значит, придется как в староглиняные времена — парсить HTML-вывод, а это море увлекательных нет приключений и превозмоганий.
Андреймал же чтото делал насчет табунского АПИ, или у меня ложная память…
У него если нет доступа к БД Табуна через localhosT/SQL, то API точно такой же пиратский, как и у меня будет, если возьмусь (с той лишь разницей, что по части разработки для Web он профессионал, а я любитель).
Ну да, пиратский, но уже отлаженный кучей всяких самопальных табунских плагинов, так что есть смысл его взять.
Звучит привлекательно, это мне тогда останется на Java клиента написать и APK где-то разместить (в Playmarket вряд ли возьмут)
Эээ, но ведь есть же. Очень удобная и полезная штука, кмк. И не нужно никакой HTML парсить.
А потом проект становится общетабуновским и туда начинают привлекаться все: от Флаера до Хомуры.
Почему бы и нет =) Контрибутить в открытые проекты всегда хорошо
Короче, с учетом дискуссии выше
Мобильный клиент для табуна

в списке заявок.
Попробуй оперу. Если навестись на блок текста и немного увеличить-уменьшить страницу, то опера выправит этот блок по ширине экрана.
Выправить то выправит...
Вот только зрение надо как у грифона. И когти, чтобы самым кончиком попасть в плюсик (копытом без увеличения — нереально).
А что мешает увеличить?
А всякие стрелочки/иконки оно тоже увеличит? И весь текст как пост так и комменты будут на одном уровне, одного размера без необходимости скролла?
Если тебе плюсоминусомёт нужен НАСТОЛЬКО часто, что скроллинг становится мучительным, то видимо тебя надо забанить за накрутку рейтинга) А если нет, то и скроллить ничего не надо, потому что всё остальное на одном уровне слева
Но нужность мобильного клиента я ни в коем случае не отрицаю, если что
Я понимаю, что можно найти костыли для всего и ничего не делать вообще (по типу — поиск мы через бэкап замутим, аватарки юзерскриптом, а рейтинг нам не нужен) но деньги же зачем то собираются? Аж в двае потока полоски. Фиг с ним, с нормальным редизайном, включая нативную мобильную версию с утопией, в конце концов, клиент ровно такой же костыль — но помечтать то можно хотя бы? Что хоть кому то не лень всё равно?
Да это ж аналог творческого режима для Майнкрафта! Правда если тебе от майна нужны только кубики…
а это ж аналог творческого режима для Майнкрафта

Не совсем так, в редакторе есть инструменты, которые в Майнкрафт можно сделать только командными блоками, и то не все.
Например, установка сферы из кубиков.
Впрочем, как инструмент для помощи конструирования в Minecraft, утилита и была заказана, если я правильно понял суть.
2018? Блин, а казалось, совсем недавно ты эту акцию объявлял ._.
совсем недавно

NTFS в обычном режиме разработки
Не у меня только слишком легкие идеи.
Может и легкие, а может и нет. Я не ставлю целью выбрать самую сложную задачу, а ту, которая мне будет интересна.
Не думаю что рисование на основе посылаемых МК в COM-порт данных формата «время/уровень» и рисование на их основе графика сейсмических колебаний с сохранением в файл и экспортом в виде графического файла прям интересно.
основе посылаемых МК в COM-порт данных

графика сейсмических колебаний

экспортом в виде графического файла


У нас есть победитель, расходимся, нечего тут больше выбирать :-)

А мне нравится. Как раз недавно с COM-портом на Qt работал, побеждая жестокую разницу между виртуальным и «железным» портом.
«железным» портом.

Археотек есть только у узких специалистов…
COM-порт до сих пор широко используется для отладок и оборудования. Это LPT уже выпилен почти отовсюду.
Мои железки практически все на CH340. Мне нет никакого смысла искать железный когда есть дешевая и сердитая реализация виртуального.
А как с ПК связываешь? Я могу без проблем сделать программу для Win32/Win64, которая открывает COM (аппаратный или виртуальный через USB) и читает из него данные с заданной четностью, контролем, стоп-битами и прочим.
Если твоё железо байты последовательные посылает — сделать под него интерфейс на ПК несложно.
USB-кабелем связываю. Драйвер микросхемы автоматом создаёт виртуальный COM-порт.
Аналогичным способом работает и мой программатор для болидовской пожарки. Самая главная функция при этом это возможность выбора порта, а то при смене USB разъемов порты разные даются.
Ну это конфигом программы решается, при старте ничего автоматом открывать не нужно, только считать настройки и если ошибка — предложить выбор.
Пример того как это выглядит.
Примерно так и будет
Тогда следующей опцией будет выбор разрядности АЦП. Чтобы не только от ардуинок читало, но и от контроллеров посолиднее.
Это уже в задании пропишем, когда выберу заявку. Пока я не представляю формат входящих данных даже. Просто уровни сигнала 0-255?
В ардуинке в мониторе порта отображается как число от 0 до 1023.
Более-менее понятно. Анализатор уровней с выделением главных данных и отбрасыванием шума.
Простое АЦП, коих в доступе аж шесть штук, если не занимать пару под I2C.
Тогда вообще легко, если номер COM в системе виден, то стандартный QSerialPort его возьмет.
Заявку записал, спасибо.
Получать данные по RS485 было бы интереснее. Но заказанные мной платы потерялись в дороге.
Взломай Табун и почини его.
Взломай Табун и почини его.

Я не был комсомольцем, так что «сложные пути» не мой стиль :-)
Тогда напиши новый Табун с возможностью импорта аккаунтов.
новый Табун

Лунавод уже сделал это за меня, импорт контактов (если без пароля) — для его уровня дело пары часов.
Вопрос в том куда девать старый табун. В архив с ссылкой, а на новом пересоздавать в автомате все имеющиеся там блоги с вписыванием ссылок на заархивированные посты? Пахнет извращением.
Ну а зачем нужен старый Табун, кроме как для исторических целей? Нужен какой-то пост — поиском найти в архиве «только чтение».
Табунский-то поиск всё равно не работает.
Но некоторые древние посты время от времени некрокомментят… как традиция даже
На том, что слелал Лунавод, уже давно слишком своя атмосфера.
Хотя функциональчик дернуть не мешало бы. Взять хотя бы переголосование оценок.
Это да.
Это где ссылка на чудо сие?
bunker.lunavod.ru
Но там ничего нет, кроме флудилки.
А здесь есть все, кроме флудилки. Единство и борьба противоположностей :-)
Ну это из-за того что он изначально делался ребятами из закрытого флудилкоблога как запасная площадка когда Табун на ногах не стоял и падал.
Сейчас его функционал объективно лучше чем у Табуна: переголосование, функция игнора, настраиваемые всплывающие уведомления. Даже автоспойлер на картинки есть.
Попрошу заметить: флудилОК.
Сам не понимаю, на кой чёрт там так много флудилок, если можно в теории создать один-несколько чатов для всех.
Просто ты воспринимаешь их как отдельные посты, а надо как страницы форумной темы.
Спойлер
Жалко мне того, кто возьмётся делать, но всё же…
Итак, была когда-то ещё под DOS программка «Фейсворк». Кривая, полоумная, но идея в основе была хорошая:
Есть моделька «человеческое лицо вообще, стандартное» и ключевые точки на нём. Есть (вводится пользователем) фотка в профиль и анфас. Мышуком перетягиваются ключевые точки на места, соответствующие им на фото (углки глаз и губ, точки носа, подбородка и прочая хрень типа ушей). После чего прога просчитывает лицо уже в виде тридюшной модели конкретной головы и мордяки.
В оригинале оно ещё и текстурой фотки ложило, но именно это выглядело… странно.
Зато оно не умело сохраняться в стандартных форматах.
Итак, фейсворк, пересчитывающий результат в высокополигональную модель головы, и сохраняющий в виде .obj, .3ds, .lwo
А если он не только человечьими лицами оперировать сможет, но и поняшьими, грифоньими и прочими драконьими — брони саранчой налетят на такой девайс!

И да, мне могут возразить, что подобные редакторы есть в Позере, мейкхумане и подобных — то категорически возражу: там надо дёргать кучу веньеров настроек, в надежде, что получится нечто похожее на ожидаемое. А я хотел бы, чтобы как в фейсворке: ключевые точки профиля и анфаса перетягивать мышкой и получать практически 100% сходство с оригиналом-картинкой.

И?
А оригинал программы есть? Просто принцип понять.
А оригинал программы есть? Просто принцип понять.
Типа такого:
поздняя попытка 2007
видео по оной.
Она умеет погчампов делать Спойлер
... d e l...
Аааа, это слишком профессиональная система. Тут кубиками не отделаться :-)
Тут кубиками не отделаться… А вот общей благодарностью Табуна — вполне!.. 888-)

А «дел» — сперва ссыли почему-то отвалились от предыдущей ветки сообщений…
Потом их перенёс, а тут заделитил…
Я выше прислал ссылку на кое-что с исходниками.
Результат выдаёт гораздо лучше того, что показано в видео Navk'a
И без всякого натягивания ключевых точек вручную. И уже с данными о цвете, то есть, текстурированную модель, по сути.
Простенькая программулина для учёта комплектующих радиодеталей или разных расходников.
Чтоб учитывать что, чего и какое количество, так же чтоб можно было прикрутить картинку если надо, работающий поиск по базе для нахождения необходимого компонента.
В принципе можно обойтись Excel, но это не интересно.
А в чем смысл? Программы учета сделали сразу же, как появились компьютеры (ОК, первой программой был таки расчет атомной бомбы, но второй — учет).
Их же миллионы, от 1С до всяких любительских поделок.

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

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

принимать кучу пользовательского соглашения

Ну совсем без этого никак, мои программы, которые бесплатно ставлю, но без исходников — идут под лицензией freeware. Вот типовой вариант.
tereshenkov.ru/pubdocs/tereshenkovav_license.pdf
То есть всё равно, соглашение заключается, просто без отчислений и скрытых платежей.
Куда коньяк с кофе посылать? Если надо конечно.
Куда коньяк с кофе посылать?

350040, а/я 207. Но пересылку коньяка почта запрещает, а кофе испачкает ячейку, так что не стоит.
Как с заявками на акции разберусь — посмотрю, что тут можно сделать.
Можешь набросать пока задание — список данных, список полей, операции. В свободной форме задание, само собой, формализация уже моя забота.

Но скорее всего, я тебе готовое решение найду. Это порнотетрис хороший или там IDE без багов найти сложно. А учет — их много.
Вот набросок, набросал в паинте. Может что-то подобное есть в инете простенькое. Спасибо.
Набросок
Полноценные транзакции со списанием/занесением единиц нужны, или изменение количества идет просто правкой «открыл, поменял остаток, закрыл»?
Открыл, поменял остаток, закрыл.
Ну тогда действительно бухгалтерский учет не нужен.
Либо найду готовую, либо сделаю.
Пасибо.
По-моему из текста этой лицензии неочевидно, какие права при «передаче третьим лицам» возникают (или не возникают) у этих самых третьих лиц. Здравый смысл подсказывает, что третьи лица должны соблюдать условия этой же лицензии, но из текста лицензии это по-моему не следует. А фраза «другие действия, не нарушающие данное Лицензионное Соглашение» вообще создаёт бесконечную рекурсию)
Главная цель данной лицензии — не разрешить все противоречия юридического плана (если б это было возможно, то не нужны были бы ни юристы, ни суды) — а прикрыть пользователя от гнева администратора сети или контролирующих органов.
Потому что программа без документов — это дыра в безопасности для администратора и нарушение для проверяющих.
А фиговый листок лицензии это снимает хотя бы частично — программа не пиратская, не ломаная и есть право на использование.

Впрочем, я тексты своих документов постоянно улучшаю, это уже третья редакция, так что спасибо.
Про «третьих лиц» было добавлено для многопользовательского режима, ибо число машин не прописывают в лицензии, пусть раздают всем пользователям.
Up теме, после первого дня сбора заявок у меня 5 вариантов.
1. Мобильный клиент для табуна
2. Рисование на основе посылаемых МК в COM-порт данных формата «время/уровень» и рисование на их основе графика сейсмических колебаний с сохранением в файл и экспортом в виде графического файла
3. Фейсворк, пересчитывающий результат в высокополигональную модель головы, и сохраняющий в виде .obj, .3ds, .lwo
4. Простенькая программулина для учёта комплектующих радиодеталей или разных расходников.
Также есть заявка от человека, являющегося понилюбом, но не зарегистрированного на Табуне — тактическая игра про гоблинов, защищающих родное болото от эльфов, гномов и людей :-)

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

применением геоданных.

Спойлер
Короче, есть игровое приложение типа детектор аномалий. Но работает оно об вайфаи. То есть расположение и сила аномалий/радиации/пси полей зависит от рсположения окружающих вай-фаев, их уровня сигнала и тип угрозы определяется по алгоритму из имени точки. Выглядит это так.
Спойлер
Но вай-фай детектор мне скучен. Мне хочется чтобы приложение создавало угрозы по географическим координатам, ну типа как покемон го распределяет покемонов по местности.
Мне чего-то вспомнилась древняя забава радиолюбителей «охота на лис» =)
создавало угрозы по географическим координатам

Считать координаты в телефоне не проблема, это я умею. Но откуда брать базу угроз?
Смысл Зоны в том что аномалии не подчиняются понятным закономерностям. Приложение может само случайно распределять их по местности. Даже можно ввести событие Выброс после которого приложение изменит расположение аномальной активности.
Так же можно добавить мини-игру «поиск артефакта».
Короче, ты хочешь игру с автоматически генерируемым миром.
Занятно, запишу.
Да, это позволит делать полное погружение в лесу/поле.
Ага, лег такой в палатку, а телефон пищит «аномалия в 5 метрах, спасайся».
Заходишь на перевал, а он пси-полем перекрыт.
прости, случайно курсором промохнулся и тебя минуснул
И обходить его генератором рандомных фейковых GPS координат, как и у покемонов?
Смысл игр не только в том, чтобы выиграть, а в том, чтобы
1) играть.
2) выиграть относительно честно.
Самый главный вопрос: а нахуя?
Самый главный вопрос: а нахуя?

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

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

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

Первый раз слышу. Какой закон это регулирует и где хранится реестр «вредоносного» ПО?

технически это незаконно

Как и большая часть жизни в известной стране. Число законов таково, и сформулированы они столь сказочно, что осуществлять какую-то деятельность сложнее сидения на стуле и не вляпаться — почти нереально.
Какой закон это регулирует
ст. 273 УК РФ
и где хранится реестр «вредоносного» ПО
Реестра, насколько я знаю, нет, вывод о вредоносности делается каждый раз экспертизой.
Как и большая часть жизни в известной стране. Число законов таково, и сформулированы они столь сказочно, что осуществлять какую-то деятельность сложнее сидения на стуле и не вляпаться — почти нереально.
Да уж =)
cт. 273 УК РФ

Ну да

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


а моя программа предназначена для санкционированного уничтожения. Вот стоит у меня как у разработчика задача выполнить rm * / -rf или там format c: по крону.

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

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

Это, конечно, как оно должно быть, а не как оно есть. Вообще, во многом законы проистекают из презумпции виновности, начиная от ваще незаконного требования прописки (не зарегистрирован — виновен и не получишь кучу плюшек, а то и посидишь в обезьяннике, если в чужом городе) и заканчивая запретом наркотиков, хотя в теории, если человек исследует всякие цепочки молекул и ему просто по кайфу смотреть, как изменение 1% состава приводит к появлению в трипе розовых единорогов — в чём его угроза и вред для общества?
но это не делает мой орган вредоносным самим по себе
Это потому что никакая мизулина пока не придумала такой закон =)
Это, конечно, как оно должно быть, а не как оно есть.
This.
Ведь принципе, нет возможности доказать, что я делал программу не в научных/исследовательских целях, а с целью навредить — до тех пор, пока я не осуществил деяние вреда

Купил как-то мужичок ошейник с gps-маячком чтоб за коровой следить, а его раз, и за использование спецсредств взяли. И никого не волновало что это изначально было для коровы.
Уже писал выше
Число законов таково, и сформулированы они столь сказочно, что осуществлять какую-то деятельность сложнее сидения на стуле и не вляпаться — почти нереально.
Дело не столько в числе законов, а в том что презумция невиновности у нас только на словах, а на деле (прецендентов вагон и тележка) у нас идёт как раз презумция виновности. Ты должен доказывать что не верблюд, а не тебе. Такова практика.
Римское право недовольно.
В автократиях право работает только пока не мешает автократии.
Потому и изобрели сенат, чтобы выставить автократа на мороз. При необходимости.
Здесь и сейчас такого механизма нет.
А если пропатчить вирус так, чтобы он перед запуском выводил окошко с кратким описанием своего функционала, плашкой «ОПАСНО!», предупреждением о возможной потере данных и надписью «Нажимая кнопку ОК, я в здравом уме и трезвой памяти беру риск на себя и соглашаюсь на то, что с моим компьютером может быть сделано всё вышеописанное»?
Вопрос в том, признает ли экспертиза его вредоносным ПО или нет.
Кроме того, ты официально даже пропатчить его не можешь, потому что для этого тебе нужно использовать оригинальный вирус, а ты не можешь использовать вредоносное ПО.
Up посту, осталось три дня на сбор заявок.
В принципе, у кого сейчас идей нет, могут не расстраиваться — думаю, что акция будет регулярной, это хороший способ выйти за пределы.
Напиши кастомную говорилку, которая будет зачитывать текст, используя загруженные пользователем звуки.
Давно такие сервисы есть.
Первая же ссылка

apihost.ru/voice
Поигравшись с параметрами, понял, что за смешные деньги могу озвучить всех «Героев» на твердую четверку.
Yandex.Speech, нямс, еще лучше делает, но там дорого.
Так он жеж платный.
Там как-то криво сформулировано, но вроде для личного использования можно и так брать.
Это с тарифом-то 2 рубля за 1000 символов? Чтой-то сомневаюсь.
Кстааати, кажется я даже пытался уже этой программой пользоваться.
Ну или чем-то с очень похожим интерфейсом и там после скачивания пары файлов говорили «Дай деняк или хрен тебе, а не перевод.»
Ну даже так — у меня например, в игре 50 сценариев, в каждом по 30-40 реплик, каждая по 160 символов, примерно.
Это выходит на 600 рублей за всё. Реально смешные деньги, позволяющие худо-бедно закрыть вопрос озвучки на всю игру.
Иии, это конечно круто если ты делаешь коммерческий проект, с небольшим количеством реплик и не требовательный к качеству озвучки. В любом другом случае дешевле будет собрать свою говорилку.
коммерческий проект

Если ты делаешь коммерческий проект, то суммы там совсем другие. Потратить 5-10 тыс рублей на какие-то штуки к личному некоммерческому проекту — это вполне обычное дело. Я некоторые спрайты заказывал, некоторые мне рисовали так.
У вордурня нет таких денег, что бы тратить по несколько тысяч джаст фор фан.
Ну совсем-совсем без денег делать тяжко.
Понятно, что имей я, например, свободные 300-400 тыс — я бы просто заказал всю графику с нуля.
А так, кусок там, кусок там, не сильно накладно, но уровень проекта растет.
Иди рисуй! За деньги!
Кстати
В любом другом случае дешевле будет собрать свою говорилку

600 рублей, о которых шла речь выше — это час работы нормального программиста, или 2-3 часа работы разработчика среднего уровня вроде меня.
Даже за 4 часа — собрать можно только пищалку «виу-виу».
Тот проект, что я тебе отдавал — чистого времени на 10 часов вышло, при том, что я имел опыт и в генерации частот, и в чтении/записи WAV-файлов.
Ну, понятно что за 600 рублей тебе нейросеть не сделают (хотя есть у меня подозрение, что 90% таких сайтов пиздят, что у них эти самые нейросети вообще используются), а вот простую говорилку собрать, это делов на день-два от силы, опосля чего пользовать её можно будет бесплатно хоть до старости, ещё и улучшая по мере необходимости.
а вот простую говорилку собрать

Простая говорилка и говорить будет просто, металлическим голосом.
Ну так мне как раз такая и нужна.
Ну ОК, раз так, поищу бесплатный генератор, да соберу тебе говорилку.
Записал к прочим заявкам.
UPD: О, в Qt же есть генератор, но он от семерки и выше работает. У тебя семерка?
Воу, только погодь, мне нужон такой, чтоб он мог пользовательскую речь загружать. Что-то типа, считывать окружающие папки с ассетами и брать звуки из них. И с возможностью как в программе по твоей ссылке ставить при необходимости паузы и пользовательские ударения в словах.
Этого не будет в рамках, которые я могу осилить за разумное время.
Генератор речи — могу сделать, который читает введенный текст из строки и пишет в WAV.
Неее, такое я могу тупо с торрентов скачать.
Короче если некогда забей, может сам напишу, если конечно когда нибудь дотащу свою жопу до С# для чайников.
Сейчас встроенный генератор запилю, может, будет полезно. Нет — ну ничего не теряю, все равно нужно научиться встроенный движок речи использовать.
Ну, если всё равно пилишь то скинь, авось для чего и сгодится.
Там ряд проблем, начиная с того, что под Windows 7 нет системной русской локали голоса, нужно ставить чьи-то самодельные версии, чего я страшно не люблю. Плюс, голос гонится только в звуковой канал — то есть, захватывать нужно самому.
Вот образец записи через простой генератор.

tereshenkov.ru/tmp/res.wav

Но это явно не то, что ты ищешь.
Блин, вот если б там мужской голос был, это было бы как раз именно то что надо!!!
Сейчас поищу мужской.
Вот вариант с мужским голосом. Голосовой сет любительский, но в принципе, речь разобрать можно.
tereshenkov.ru/tmp/res_male.wav
Неее, женский был гораздо круче, у мужского тут ни голоса ни дикции.
Я регулировал скорость, женский был -25%.
Послушай вот этот вариант.

tereshenkov.ru/tmp/res_male2.wav
Лично я бы предпочёл что то ближе к первому.
Если в принципе подобный вариант приемлем, давай я сейчас оформлю графическую морду, там есть выбор скорости и тембра.
Поиграешься с вариантами, чтобы не высылать тебе сотни файлов.

Вот последний вариант, подкрутил тембр вниз на максимум.
tereshenkov.ru/tmp/res_male3.wav
Неее, лучше с крутилками, перебор звука по переписке это ваще такое.
ОК, сейчас запилю, ожидай.
Не уверен, что тебе еще актуально, но сделал читалку под Windows на основе системного драйвера и внешних голосов.

Внешний вид

Качать здесь

tereshenkov.ru/tmp/simplespeech.zip

Под Windows 10 — работает сразу. Под Windows 7 — для русских голосов, нужно еще установить их отдельно отсюда (это любительская сборка голосов, но с Windows совместима).

tereshenkov.ru/tmp/RHVoice-v0.2.161(RU).exe

Если найдешь полезной, добавлю запись в WAV.
Забава конечно, только голоса почему-то не переключает. Шо на русском, шо на англицком, во вкладке переключается, а говорит всё равно дефолтным.
Какие голоса у тебя отображаются при выбранном русском языке?
По умолчанию Microsoft Anna. При переключении на русский добавляются RHVoice Elena и Aleksandr, каждый в двух вариациях, затем каждое переключение языка повторно добавляет в список Анну на английском и весь набор RHVoice'ов на русском, но при переключении голосов всегда воспроизводится на дефолтном.
Сейчас проверю.
Опробуй эту версию.
Был баг, вроде не должен влиять, но исправил.

tereshenkov.ru/tmp/simplespeech_2.zip
От тяперь норм работает!

Только дефолтным голосом больше по русски говорить не хочет.
Оно и раньше не говорило. Это был баг.
Сейчас только два русских голоса — Elena и Aleksandr из дополнительной установки (как в Windows 10, сейчас не могу сказать).

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

Если к следующей акции еще будет актуально — подашь заявку, а так нет, не смогу помочь по-быстрому.
Не парься, если будет надо просто нагуглю какую-нибудь снималку звука с компа.
Audacity с выбранным источником WASAPI прекрасно это делает. Но записать тысячу текстов таким образом — копыта отвалятся.
Ты пириувиличиваишь.
У меня в основном проекте более 2000 реплик персонажей. Я для озвучки буду брать сервис-читалку, где есть API. 2000 файлов качать вкопытную —
копыта отвалятся.
Лол, звучит как озвучка паст с того ещё двача =)
Семёрка. Даже с поддержкой OpenGL.
НТФС не хочет лёгких задач?)
Я хочу выйти за грань, познать себя, преодолеть :-)
Это могут быть и легкие, и тяжелые задачи. Если бы я знал, чего ищу — было бы проще.
Я хочу выйти за грань

Без козы? Без козы не выйдет.©
Если это какая-то сложная шутка, то я её не понял.
Но козами, в отличии от пони, не интересуюсь — вот как выйдет My Little Goat, там посмотрим.
Сыграй в Ведьмак 3 — будешь в теме. :D
Я пока установил себе Battletech по скидке и несмотря на дикие тормоза (нужен ПК игровой), выглядит оно очень хорошо.
Что-то такое всегда хотел сам разработать — на два порядка проще, конечно, но.
Ну не наркотики же надо было тебе предлагать. :D
Он прикольный, но предел в четыре своих меха в копье оставляет 95% мехов за бортом — как бы ни были хороши малыши, даже средним очень скоро не остается места на задании.
Ну и комп кнч туповатенький, может задавить только мясом, что впрочем очень активно практикует — я раз на атаке+защите увидел 7 почти равновесных моему копий, причем пару ходов они имели преимущество три-четыре к одному.
Алсо авангарды с танком-командным циклопом кое-как дают простор для тактики.
Игровой ПК там кстати не поможет, за время загрузки так и будешь успевать чай попить.
(блин, вот у нас как раз таких не хватает, одни немотивированные студенты, которые пишут диплом и валят куда-то в банки или коммерцию =/ Где таких людей можно взять? =)
Где таких людей можно взять? =)

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

Емнип, в некоторых странах можно регистрировать юрлицо, не будучи резидентом.
Проблема в том, что по российским законам, лично я не смогу работать там удалённо, потому что это всё ещё будет уголовным преступлением. Максимум, я смогу нанять команду горячих финских парней, которые сделают всё за меня, но это всё равно потребует личного присутствия и оформления туевой хучи всяких бумажек на скандинаво-бекмамбетском.
С чего бы?
1) Регистрируешь компанию в стране, где порнотетрис не является преступным.
2) Пишешь порнотетрис.
3) Нанимаешь горячего финского парня на минималку, платишь ему один месяц зарплату, он типа «пишет порнотетрис».
4) Выпускаешь порнотетрис от имени компании (не физлица!)
Ух ты, дейвствительно можно!
Правда не слишком дёшево и через левые конторы...
Ну, в любом случае дело это не скорое. Мне ещё пилить и пилить тетрисы без порно, пока мир не узнает о моей непревзойдённой гениальности.
Это имеет смысл, если у тебя уже есть серьезный проект и ты хочешь сделать его серьезную порноверсию, да не просто сделать, а легально продавать и зарабатывать на озабоченных клопперах.
Для чисто забавы — можно порнотетрис выложить на любой клоп-площадке, или через анонимные борды.
Пили поняшный клон Sven bomwollen:D
Кстати, а ведь это идея!
Ну, если у нас кого-то сажают, например, на бут, а потом он понимает, что хочет делать ядро или дистр, а то и вообще RTL проца — его переводят туда. Но с порнотетрисами да, сложнее, у нас нет отдела их разработки =)
(но вообще это серьёзная беда, что большинству новых сотрудников не хватает мотивированности =/)
у нас нет отдела их разработки

Это серьезное упущение менеджмента.
Напиши письмо нам на почту или на форум с предложением открыть такой отдел =)
Как минимум, отдел по разработке игр для ОС у вас должен быть. Зачем нужна ОС, если на ней нельзя играть в нативные игровые приложения?
Нет, у нас нет такого отдела =( Приходится силами других отделов разрабатывать, вот я как раз недавно запилил с полтора десятка пакетов с игрухами для дистрибутива, жду, когда на третий диск положат =)
Нет, у нас нет такого отдела =(

(замышляет всякое)
Приходи к нам начальником такого отдела)))
Лучше попробую пару игровых проектов оригинальных собрать.
SFML и SDL в пакетах есть?
SDL (причём как первая, так и вторая) есть, конечно, а вот SFML собирать надо, это да.
Могу попробовать собрать тот же Сапер на SDL. Если его нет в поставке стандартной.
Вроде бы нет, так что можешь попробовать =)
Основная проблема — лень лапки железо. Если я хочу чего-то сделать под Linux или Windows — я покупаю у васяна в подвале x86 за пару тысяч рублей и пишу. Если под MacOS — я покупаю у того же васяна старенький Mac за тридцать тысяч, что напряжно, но раз можно вложиться.
Эльбрус же, насколько я понял, раздобыть дешевле 5000 зелени не выйдет, и в подвалах они не водятся.

Подними свой пост про доступ к машине, я как буду морально готов — туда напишу. Сначала Win/Linux соберу, потом пойду к вам.
Так он жеж платный.

Вот бесплатный — https://voxworker.com/ru, там только лимит в 20000 символов в сутки, те за 2-3 дня можно все озвучить.
Пасиба, это вот прям то что надо!
Эту еще попробуйте, приятные тембры, не напоминают железный голос робота.
Сяп.
А перевод нот в частоты пьезодинамика есть?
А перевод нот в частоты пьезодинамика есть?

Чем частоты пьезодинамика отличаются от частот PCSpeaker?
Смотря какой хрипер: древний на обычном динамике или сменившая их пьеза.
У меня просто из головы выпало какой диапазон я в МК могу задавать.
Последнее время везде в ПК ставлю пьезу вместо здоровенных динамиков, на слух разницы нет.
Но я и слушаю только сигналы от BIOS, надо попробовать сравнить звуки с шагом частоты на двух машинах, интересная идея.
Я просто так спросил, так как доступа к компу для гугления с проверкой нет. Музыкальный звонок родителям собрать хочу, а то магазинные изделия почему-то быстро из строя у них выходят.
Лол, майнкрафт на минималках получился =) UPD: а лол, про это уже написали в комментах
По статичным скринам, так выходит.
Но в майнкрафт, нямс, нельзя без скриптов сделать движение в сферических координатах вокруг точки. Нельзя быстро приближать/отдалять. Нельзя ставить большие фигуры одним кликом (без командных блоков) и еще ряд мелочей.
Ну, это да, не всё же должно быть на совсем минималках =)
Чисто прикол, для пишущих на С++.
Сможете сделать в коде программы «сиськи»?)) И чтоб компилилось без ворнингов?
Типа такого

int main() {
… тут что угодно
/(o)(o)\
… тут что угодно
}

И без макросов, ибо чит))
int main() {
/*
/(o)(o)\
*/
return 0;
}


Но да, формально это не «в коде программы».
читер)) Но есть и реально рабочее решение ))
Спойлер
struct Dummy {
    Dummy operator/(Dummy x) {
        return {};
    }

    Dummy operator()(Dummy x) {
        return {};
    }
};

int main() {
    Dummy o;
    o
    /(o)(o)\
    ;
    return 0;
}
СпойлерИдея верная, но можно проще, без переопределения /
СпойлерВсе эти переопределения базовых операторов — имхо, дичь, пользы от которой в 5% случаев, а остальное — делание кода нечитаемым кем-либо, окромя автора.
Много видел аргументов «за», но так и не понял, чем запись
MyVector a;
MyVector b;
a.AddVector(b);

хуже записи
MyVector a;
MyVector b;
a+=b;

Ловите джависта
Паскалиста :-)
А если не а+б а посложнее a + b / c * (d + e / f)
СпойлерЭто относится к 5%, но даже тут лучше определить для MyVector какие-то функции, которые будут нести смысл операций.
e
  .div(f)
  .add(d)
  .mult(b)
  .div©
  .add(a)

Да, я так делаю =/
М-м-м… прямо старым добрым ассемблером запахло…
ассемблером

Не подскажешь из глубин памяти, как для int21h задать цвет текста?
Везде пишут, что только через Escape-последовательности, но они не работают в чистом FreeDOS (хотя DOSBox прекрасно обрабатывает).
Использовать int10h ради пары строчек текста — это тоже извращение.
а любая ДОС не умеет в Escape-последовательности «из коробки».
Там надо ей драйвер сначала подсунуть ansi.sys. А в досбокс видимо он встроен, ибо штука популярная

comp.site3k.ru/ibmpc/chaptr16.html
Это понятно, но вопрос, как заставить работать цвета без ANSI.SYS
Никак. ansi.sys перехватывал int21h из ядра ДОС на себя, и всю работу с Escape делал сам. Так что только int10h если без него. Ну или самому перехватить 21 и парсить поток…
Тут должно быть какое-то простое решение.
Потому что турбопаскалевский SetColor прекрасно работает под FreeDOS. Не лезет же он в графический режим int10h всякий раз, в самом деле.
Он может и напрямую в видяху писать… возьми да дизасмом распотроши, куда он лезет внутри SetColor
возьми да дизасмом распотроши

Я уже забыл, как на таком уровне всё делается.
Впрочем, заказчик на DOSBox принял, просто для себя хочу разобраться.
Я на 75% уверен, что лезет. Ещё на 25% уверен — что лезет напрямую в видеопамять (но это приведёт к UB на несовместимых с CGA, EGA или VGA адаптерах).
Для int 21h — нативно никак, оно не умеет в такое (поскольку заточено под терминалы и пришло ещё со времён CP/M).
Чтобы работали ESC-последовательности — загрузи драйвер ANSI.SYS через config.sys (он как раз представляет собой перехватчик функций вывода int 21h, позволяющий реализовывать команды управления для адаптеров CGA, EGA и VGA, и ограниченно — MDA, MCGA и, вроде бы, Hercules).
Нативно можно выводить цветной текст только сервисами BIOS видеокарты — это int 10h. Ну либо копировать последовательно байт данных — байт атрибутов в видеопамять простой подпрограммой типа
; outputColorString DS:SI = ASCIIZ string, AL = row, DI = column, DH = attributes
; destroys: BX, ES, CL, AX, SI, DI
outputColorString:
    mov bx, b800h
    push bx
    pop es
    mov cl, a0h
    mul cl
    add di, ax
    mov ah, dh
@1: mov al, byte ptr [si]
    or al, al
    jz @2
    stosw
    inc si
    jmp @1
@2: retn   
К слову, она автоматически «переносит» строки в отличие от int 10h (благодаря структуре видеопамяти).
Это всё прекрасно, но после того же паскалевского SetColor — обычный Writeln выводит цветом, и если его не сбросить — то и после завершения программы команды выводят цветом.
Что-то еще есть.
writeln, как я понимаю, вполне может использовать именно прямую запись в видеопамять с установленным байтом атрибутов. Ну или int 10h.
А насчёт того, что после завершения выводится цветом — это только если ты поменял цвет, не помню точно, то ли первого, то ли последнего знакоместа последней экранной строки. Если такое происходит, то весь дальнейший вывод (и прокрутка) идёт с заполнением новых знакомест этим самым байтом атрибутов (и это уже как раз происходит не на уровне DOS, а на уровне BIOS видеокарты).
Действительно, проверил, так и есть.
Значит, Writeln при цветном режиме — запоминает позицию курсора, потом пропечатывает символы в видеопамяти (по сути, эмулируя алгоритмы int21h с переносом строк) — а потом двигает курсор в ту позицию, где он должен бы быть. Иного способа совместить вывод нет.
Природа старые системы такие такие удивительные.
Да, скорее всего именно так. По крайней мере, это наиболее логичный вариант.
Выглядит годно, что за язык?
Эм… любой?) Я таким образом векторную математику в паскале оформлял (вектор объект, методы которого возвращают такие же векторы {за редким исключением})
В js, например, вся работа с массивами и строками сейчас так выглядит, только аргументами там обычно коллбэки/предикаты идут, но и их можно вынести в константы и писать что-то вроде
list
  .filter(shit)
  .sort(natural)
  .map(capitalize)
Эээ, любой объектно-ориентированный? =)
Такое можно сделать где угодно, от JS и C++ до питона.
СпойлерAddVector не делает понятнее, вектора конкатенируются или складываются покоординатно, зато оно в четыре раза больше места занимает, чем +=. Это проблема с читабельностью, когда у тебя больше одной операции в строке: `k*(a+b)` гораздо проще читается, чем `a.addVector(b).mulByCoeff(k)`. Второе более читабельно, только если из конктекста не всегда очевидно, какого типа переменные ты используешь, но это чаще проблема с названием переменных, чем с названием методов.
четыре раза больше места занимает

Брукс пишет, что написание кода — ничтожно малая часть от разработки, остальное время это тестирование и отладка.
Я как бы согласен с Бруксом.
Дело не в написании, а в чтении.
Ну фиг знает, мне лично имя функции/метода проще прочитать.
Ну в Scala например там вообще можно определить например такие «сиськи» как один оператор /@[email protected]\ (скобки правда нельзя) и вызывать потом как х = /@[email protected]\(у)

А в julia пошли еще дальше, и разрешили весь юникод, там хоть иероглифы китайские определяй…
разрешили весь юникод

Ой, это уже всё поздно.
Исторически язык IT — английский. Этот как делать в настройках CMOS русские буквы. Если человек в CMOS зашел, он английский на уровне «прочитать надписи» знает. А если не знает, то лучше бы не заходил.
ну julia это язык для матана в основном заточенный… там можно например напрямую греческие буквы лепить виесто транслита lambda = delta * omega
Если человек в CMOS зашел, он английский на уровне «прочитать надписи» знает.
Это если английский. А если мы про японский аналог Setup, то нет, мне пришлось со шпаргалкой ходить по оному у PC-9821 =)
Вот о том и речь — какой-то японец засунул свой японский в Setup, а страдал ты. А использовал бы английский — no problems
Это да, у меня боль от этого от работы с PC-98 =)
А в julia пошли еще дальше, и разрешили весь юникод, там хоть иероглифы китайские определяй…
Я вспомнил 1С с его русскими названиями функций и при этом английской грамматикой… Можно ненадо
Ну, в случае векторов это интуитивно понятно. Вот когда << вместо сдвига становится выводом в поток — вот это да, уже кажется дичью.
Но в условии сказано, что перед «int main() {» не должно быть ничего.
Я могу даже на суровом С (-std=c99, gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0), а не на С++, причём без ворнингов на максималках:
int main() {
    int o(int(*p)()); return 2
    /(o)(o)\
    ;
}
flandre ~ # gcc -c -std=c99 -pedantic -Wall -Wextra -o /dev/null t.c
flandre ~ #
Если нужно чтобы не только компилилось, но и линковалось, то чуть сложнее (ибо в С нельзя nested functions и есть warning на unused parameters):
int main() {
    int o(int(*p)()); return 2
    /(o)(o)\
    ;} int o(int(*p)()) { return p(p);
}
flandre ~ # gcc -std=c99 -pedantic -Wall -Wextra -o /dev/null t.c
flandre ~ #
Ага, круто! =)
а в режиме С++ ругается (gcc 9.1.0)
error: invalid conversion from 'int (*)(int (*)())' to 'int (*)()'
все же с типами пожестче у него, чем у голого С.
Ну, С и С++ — всё же разные языки. =)
Для С++ предлагали выше (я только немного оптимизировал способ):
int main() {
struct x { int operator()(x) {return 0;} } o; return 2
/(o)(o)\
;
}
flandre ~ # g++ -std=c++03 -pedantic -Wall -Wextra -o /dev/null t.cpp
flandre ~ #
Ага, это мой вариант тоже. только лучше 1 возвращать, чтоб деление на 0 не получить)
Ну, запускать-то мы её не планируем. А так-то да, можно и 1, разницы нет, просто 0 первым пришёл мне в голову =)
Собственно, в С++ важно, что нет warning-а на unused parameters. Но зато, как мы видим в C++ типы указателей на функцию отличаются (видимо, из-за манглинга), в отличие от С.
С++ важно, что нет warning-а на unused parameters.
Ага… если поставить только тип без имени, ворнинга нет. Компилер даже вообще иногда может выкинуть этот параметр, смотрел я асм выхлоп…
Да, там иногда можно наворотить аццкой математики для бенчмаркинга, в конце написать return 0, и потом удивиться, что у тебя цикл на миллион итераций завершается за 0,0002 с, а потом смотришь ldis и видишь там { return %ctpr3; } { nop; } { ct %ctpr3; } и понимаешь, что компилятор выкинул весь твой цикл нафиг, ибо он ни ни с чем по данным не связан =)
Ага… на этом можно также хитровыебанные UB ловить. Влетел я так разок… после вызова
obj.~Obj();
obj.var = 666; // не выполнится =)
Дохрена умный компилер считает, что раз деструктор вызван, то нефиг и объект больше трогать. И ему пофиг, что объекты там на хитрой куче по особому живут…
Ну, вызывать деструктор вручную это… best practices
До сего момента, я даже не знал, что в C++ это можно :-)
Вроде бы он вызывается только в delete для указателей и автоматически для объектов на стеке.
ну там был кольцевой буфер на особой куче, где жили объекты… создавались через placement new, убивались соответственно тоже вручную.
Ну, из недавних лулзов: бесконечный цикл — это UB, и поэтому, например, шланг просто завершает прогу там, где она входит в бесконечный цикл, емнип =) Забавно, когда у тебя for(;;) не подвешивается, а спокойно завершается =)
Ага, и поэтому я для истинного бесконечного цикла обычно пишу что-то вроде:
while (1) {
    __asm__("nop");
}

Но вот вопрос: выкинет ли компилятор бесконечный цикл вот тут (C++):
[[noreturn]] void soft_halt()
{
    while (1) {}
}

Было бы здорово, если бы он не выкидывал его тут.
__asm__("nop");
Непортабельно, более правильно как-то типа
__asm("");
Единственный случай, когда мне потребовался бесконечный цикл — в разработке под микроконтроллеры ARM, с тулчейном GCC и кастомным скриптом компоновщика — так что тут портируемость распространяется разве что на clang, который эту запись также воспринимает, и я решил, что этого достаточно хд
__asm__ __volatile__
нужно использовать, иначе он тут тоже имеет право убрать.
Возможно. Я знал про volatile, но где-то однажды увидел фразу, что ассемблерные вставки в определённых условиях волатильны по умолчанию, и что у меня эти условия выполнялись. Это умозаключение я сделал достаточно давно, и его результат превратился в механическое правило не писать volatile перед ассемблерными вставками.
Че, правда? Ща попробовал while(1); и while(1){} и for(;;); и for(;;){}
внутри простого int main() {… return 0;}
нормально впадает в бесконечный цикл. Оптимизация -О3

clang version 8.0.1 (tags/RELEASE_801/final)
Target: x86_64-pc-windows-msvc
Thread model: posix
Да, пустой бесконечный цикл в таком случае по каким-то причинам действительно не убирается. Но вот пример бесконечного цикла на cppreference (ссылка, см «Infinite loop without side-effects») действительно оптимизируется.
Нихера себе, сказал я себе… реально выдает сразу 1 без цикла… вот если заменить на return a; то зависает. А собственно какого хрена… ну хочу я формулу посчитать тупым перебором, и чё… неясненько…

upd
нифига себе… он и так выкидывает
int fermat() {
  const int MAX = 1000;
  int a=1,b=1,c=1;
  // Endless loop with no side effects is UB
  while ((((a*a*a) != ((b*b*b)+(c*c*c))))) {
    a++;
    if (a>MAX) { a=1; b++; }
    if (b>MAX) { b=1; c++; }
    if (c>MAX) { c=1;}
  }
  return 0;
}

причем неважно в условии == или !=
Помоему это кто-то уже заоптимизировался в шланге… gcc9.1.0 на О3 даже так не чудит…
Если разделить main и fermat по разным translation unit-ам — то честно зависнет х)
Наркомания какая-то… схрена ли это «no side effects» если от результата зависит что потом в консоль выведется…
А если убрать проверку вовсе — программа просто вылетит. clang 11.0.0, x86_64-pc-windows-msvc
int bar() {
  const int MAX = 1000;
  int a=1,b=1,c=1;
  // Endless loop with no side effects is UB
  while (1) {
    // if (((a*a*a) == ((b*b*b)+(c*c*c)))) return 1;
    a++;
    if (a>MAX) { a=1; b++; }
    if (b>MAX) { b=1; c++; }
    if (c>MAX) { c=1;}
  }
  return 0;
}
Компилятор не может в общем случае определить, есть ли у тебя в коде бесконечный цикл или нет. Иногда может. Но ему разрешено убирать циклы без сайд-эффектов (сайд-эффекты по определению в стандарте не включают в себя зависание в бесконечном цикле), даже если они бесконечные, потому что чаще все они конечные, и это позволяет оптимизировать лучше.

Самое весёлое, что я видел на эту тему, это что та же фигня вызывает UB в Rust (чего по дизайну не должно быть в принципе, если не использовано unsafe), см. длинный срач на эту тему, который не могут разрешить вот уже 5 лет. Там в т.ч. обсуждают мотивацию за этой оптимизацией и почему её так сложно искоренить без урона в производительности.
Ну да, раст же юзает шланговский бэкенд — поведение общее, логично)

кстати volatile int a=1,b=1,c=1; таки дает бесконечный цикл. И std::atomic < int > a=1,b=1,c=1; тоже
Ну в расте это хотя бы баг, а не фича…
это кто-то уже заоптимизировался в шланге…
Не, ну почему, всё верно: цикл либо завершится и функция вернёт 0, либо цикл не завершится, что является UB, а значит, функция может делать всё, что угодно, в том числе и вернуть 0, значит — функция всегда возвращает 0. Это на самом деле логично: если есть условие либо «сделать А», либо UB — то это эквивалентно «сделать А» всегда.

Эх, говорят, gcc версии 1 при ub запускал nethack и печатал в консоль текст песни про 99 бутылок, это вот забавно так забавно =)
значит — функция всегда возвращает 0.
так если б 0 — было б хоть понятно что тело целиком выброшено… он 1 возвращает в исходном примере, в том то и шляпа. То есть он заведомо некорректно if исполняет.
А, ой, да, щас посмотрел повнимательнее: там return 1 — единственное условие выхода из цикла, а return 0 — это unreachable. Так что логика там «цикл либо завершится и функция вернёт 1 (поскольку единственная возможность выйти из цикла — это вернуть 1), либо цикл не завершится, что является UB, а значит, функция может делать всё, что угодно, в том числе и вернуть 1, значит — функция всегда возвращает 1».
Интересно, а с чего они ваще взяли что бесконечный цикл должен быть UB? Может я так поток застопорил, и грохну его из соседнего потом через TerminateThread. Да, так делать тупо, но «законом не запрещено» же…
Ну, обработка сигналов — это уже не «чистая» операция, так что то место, где ты by design обязан словить сигнал, логично помечать волатильным.
Хм, может, от версии зависит? Или, может, ему надо -O4, не помню (где-то на хабре, кажется, была статья про это)
хотю qiz (pop-qiz, вопрос-выбери правильный ответ) игрушку. с возможностью картинок и редактирования базы вопросов (желательно простым встроенным редактором). пример: фотка пони и выбери правильное имя.
язык программирования — без необходимости ставить спец программы для работы проекта; среда — win x64.
без необходимости ставить спец программы для работы проекта

Значит, что-то нативное вроде С++ или Delphi с WinAPI или SFML/SDL.
Записал.
Вот только что такое qiz я не знаю, а pop-quiz даёт мне кране мало информации.
Поясни, пожалуйста, желательно, с примерами.
Мб что-то типа такого.
Аааа, понял, я думал, что игра требуется в режиме синглплеера.
А если нужно просто выводить и редактировать базу для отображения на экране (проекторе) подобных схем-вопросов с графикой
Спойлер
это можно сделать.
а в чём сложность сингла? вопрос-ответ уже в базе. таймер, кнопки ответа, база результата.?
Сложности нет, просто не вижу смысла в нём. Это же соревновательная игра, порвать всех соперников на британский флаг и порадоваться.
Но если нужно — сделаю и сингл.
Кажется, такое проще на html-css-js набросать
Я больше люблю десктопное делать.
очень упорото, но да.
викторина? вопрос-ответ? загадки?
я даже и не знаю, как объяснить-то, чтоб без мата и махания руками.
Всё ОК, уже понял суть. Заявка принята к прочим, через пару дней буду выбирать для реализации.
Сбор заявок продлен до 16.02.2021.
Ставил дату на 14 — но в этот день людям не до размышлений о заказе программ, большинство заготавливает шампанское/подарки и пытается впихнуться в рестораны/кафе/сауны :-)
Продлеваю сбор на пару дней.
Текущий список заявок:
1. Мобильный клиент для табуна
2. Рисование на основе посылаемых МК в COM-порт данных формата «время/уровень» и рисование на их основе графика сейсмических колебаний с сохранением в файл и экспортом в виде графического файла
3. Фейсворк, пересчитывающий результат в высокополигональную модель головы, и сохраняющий в виде .obj, .3ds, .lwo
4. Простенькая программулина для учёта комплектующих радиодеталей или разных расходников.
5. Игровое приложение генерации аномалий по случайным геокоординатам
6. Игрушку с возможностью картинок и редактирования базы вопросов простым встроенным редактором). пример: фотка пони и выбери правильное имя.
Также есть заявка от человека, являющегося понилюбом, но не зарегистрированного на Табуне — тактическая игра про гоблинов, защищающих родное болото от эльфов, гномов и людей :-)

Мелькавшая в посте выше говорилка не тянет на заявку — встроенный в систему генератор я выведу в интерфейс просто так, а полноценную голосовую нейронку не потяну.
Фейсворк, пересчитывающий результат в высокополигональную модель головы, и сохраняющий в виде .obj, .3ds, .lwo

Хммммммммм...

А сможешь движок второго старкрафта разобрать, что бы из него можно было 3D модели и их анимации извлекать и конвертировать в нормальный формат?
Сейчас установлю, посмотрю чего там наворочено.
Нет, не смогу. Там очень специфичный формат, свой собственный.
Ну, что-то подобное я и подозревал.
Могу нарезать спрайтов из второго WarCraft. Впрочем, они есть в открытых источниках, можно делать свой WarCraft.
Есть потрошилки готовые для первого Старкрафт и старых ВоВ…
Ну, это добро я и сам найти могу, такое мне без надобности.
Только нужно помнить, что задники там рендерятся блоками 8×8, а не 32×32, как может показаться)
Так и есть, там очень хорошая для своего времени система пейзажа, да и сейчас годно смотрится.
Криптобитсы нарисуй. Чтоб вместо плюсиков можно было одаривать табунчян битсами.
Надо ток сделать все правильно, не повторять ошибок биткойна. Как правильно — хз :)
Чтоб вместо плюсиков можно было одаривать табунчян битсами.

И пользы от них будет столько же.
Ценность денег — в покупке на них всякой всячины. Сейчас даже за топовый биткоин почти ничего купить нельзя, только продавать его друг другу.
Покупать на них аватарки!
Сначала починить на них аватарки))
Взять исходники любого блокчейна и сделать на его основе токен с кошельком — это дело пары дней для разработчиков вроде KerHarrad и makise_homura, либо неделя для меня. Но смысла в этом будет немного.
Хм, а интересная бизнес-идея =)
Оставлю-ка я заявку на эмулятор для Аскоты-170. А то сам явно не напишу.
В общем, есть механический компьютер, вот такой: www.youtube.com/watch?v=9sUsiYnHwqI
Для него можно писать программы на его собственном языке, ассемблировать, отлаживать и запускать вживую.
Пока я занимался отлаживанием и ассемблированием в блокноте, но это неудобно и совершенно не наглядно. Поэтому я хочу среду разработки для Аскоты.
У него в текстовом окошке можно задать текст программы, вот например такой:
backward1:
1: read I; II+=; prn(); //Программа №1: Читаем регистр I, прибавляем его значение к регистру II и распечатываем.
1: read II; I+=; prn(); newline; // Программа №1: Читаем регистр II, прибавляем его значение к регистру I и распечатываем. Затем сдвигаем бумагу на следующую строку и возвращаемся к началу программы.

Во втором текстовом окошке появится машкод:
1 0/0 12/4 14/3
1     12/3 14/4 17/4

Дальше можно делать всякие интересные штуки — можно ходить курсором вверх-вниз по одному окну, и будет подсвечиваться соответствующая строка во втором, в первое окно можно добавить новый кусочек «goto backward1;», и во втором окне появится код «33/4», подсвеченный цветом «появился только что» — это важно, потому что машкод нужно вручную вбивать в программную доску, и нужно знать, что изменилось и что надо вбивать/выдёргивать.
Это что касается ассемблирования. Что касается отладки — можно задать исходное состояние машины (количество регистров, число в регистрах I и II, положения всяких рычагов, скорость исполнения и всё такое), запустить, и программа начнёт исполняться по шагам, подсвечивая текущий шаг и печатая в ещё одном окошке результаты, в данном случае, ряд Фибоначи, выводимый в два столбика, примерно так: youtu.be/yaGGcsdyCAU
Да, хорошо бы, чтобы программа была с открытым исходным кодом, потому что программирование Аскоты не очень хорошо документировано, в нём иногда всплывают мелкие, но важные нюансы, и хочется поддерживать отладчик up to date.

kuzya93 слишком много кушает, я понимаю.
Хорошая заявка, записал.
Посмотрю, что тут можно сделать.
По сути, это ж реализация ассемблера для заданного «процессора» со встроенным отладчиком и ВМ-кой?
Ну да, вроде того.
Лол. Механический VLIW с 46 исполнительными устройствами с гибким их распределением между двумя конвейерами (в том числе возможной отдачей исполнительного устройства под оба конвейера, как я понимаю?), 159 бандлами программной памяти, 1 регистром ввода (но не вывода — вывод отдельной инструкцией), 5 регистрами общего назначения и 5 независимо переименуемыми регистровыми окнами шириной 1 с глубиной переименования 10. Но, правда, без внешней памяти. Это «Роботрон», детка, не то, что нынешние архитектурщики и физдизайнеры.
Так что теперь я ну уж точно видел всё =)
Надо запустить на нем Doom и BadApple =)
Блин, а было бы правда годно =)
Правда, боюсь, нужно будет к нему приделать механическое MAU и внешнюю память на пин-борде — но это того стоит!
Вот чтение и вывод упаковать в 159 бандлов будет ещё той задачей (на деле — меньше, чем 159, ибо там надо нопы вставлять, как я понимаю, чтобы тайминги соблюсти).
О, а ещё, в качестве очень интересной (для меня), но совершенно нереальной задачи: написать для Аскоты программу вычисления тригонометрической функции (любой на выбор).
Ограничения аппаратные: чуть больше 50 шагов программы, не больше одного чтения регистра в шаге (но прочих математических и логических операций в шаге может быть много), нет аппаратного умножения, деления и сдвига.
Текущий список заявок за 12 часов до закрытия приёма:
1. Мобильный клиент для табуна
2. Рисование на основе посылаемых МК в COM-порт данных формата «время/уровень» и рисование на их основе графика сейсмических колебаний с сохранением в файл и экспортом в виде графического файла
3. Фейсворк, пересчитывающий результат в высокополигональную модель головы, и сохраняющий в виде .obj, .3ds, .lwo
4. Простенькая программулина для учёта комплектующих радиодеталей или разных расходников.
5. Игровое приложение генерации аномалий по случайным геокоординатам
6. Игрушку с возможностью картинок и редактирования базы вопросов простым встроенным редактором). пример: фотка пони и выбери правильное имя.
7. Эмулятор для механического компьютера Аскота-170.

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

Игровое приложение генерации аномалий по случайным геокоординатам

Ибо это Android и геоокординаты :-)
С создателем заявки свяжусь в ближайшее время и начнем работать.

Пару слов по остальным заявкам:

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

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

Эмулятор для механического компьютера Аскота-170.

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

Игрушку с возможностью картинок и редактирования базы вопросов простым встроенным редактором). пример: фотка пони и выбери правильное имя.

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

Батон сделали сами, аномалии скинули на NTFS. Новый ждалкер практически готов!
Намекаешь что он его шесть лет делать будет?
Ну, «Героев» я пять лет пилил, так что есть шансы…
— Ты программная пони (объект) — программная пони (класс)!
— Разработка будет длится вечно! Бухахаха!
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.