LINUX.ORG.RU

Избранные сообщения shkolnick-kun

Как обращаться с графами, хранящимися в реляционной БД?

Форум — Development

Привет ЛОР!

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

В данном поделии предполагается работа и визуализация графов.

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

В БД так же не силен, собственно хочу изучить реляционные БД с в свободное время.

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

Итак, первая часть вопросов

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

В БД, будут таблицы:

  • графы
    • id
    • desc
  • узлы
    • id
    • graph -> графы.id
    • desc
  • связи
    • id
    • src -> узлы.id
    • dst -> узлы.id

Насколько я понимаю, при копировании графа мне придется:

  • вставить новую запись в «графы»
  • запросить её id
  • вставить дубликаты узлов с новым id
  • запросить их id
  • преобразовать старые id узлов для связей в новые
  • вставить связи с новыми id узлов

Во всем это мне не нравятся два предпоследних шага. Хочется облегчить себе работу и есть две альтернативных идеи:

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

  • добавить в «связи» колонку graph -> графы.id, добавить в «узлы» колонку num (номер узла в графе) и соответственно из колонок src и dst «связей» ссылаться не на узлы.id, а на узлы.num.

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

Вопросы:

  • Насколько правильно я понимаю что, надо делать?
  • Как правильно обращаться с такими графами в реляционной БД?
  • Если перечисленные варианты жизнеспособны, то в каких случаях какой из них целесообразно использовать?

 , ,

shkolnick-kun
()

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

Форум — Development

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

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

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

  • RoboZZle — работает через Web, есть тысячи готовых уровней, кампания с фиксированной последовательностью избранных уровней и редактор, что бы делать свои уровни. К сожалению сайт на данный момент подглючивает: вики не работает, а форум засран спамерами.
    На данный момент лучшее, что нашлось из онлайновых. Правила игры: имеется поле из квадратных клеток одного из трёх цветов (RGB), можно двигаться вперёд и поворачивать на 90°, можно проверять цвет текущей клетки и вызывать процедуры (до пяти процедур, включая F1 которая запускается при старте). В некоторых уровнях разрешено перекрашивать текущую клетку. Цель игры — собрать все звёзды на уровне.
  • Light-bot. Есть в нескольких вариантах. lightbot.lu самый простой в использовании, но крайне примитивен, так как нет ни процедур, ни условных выражений. Есть две флеш версии: [https://armorgames.com/play/2205/light-bot]первая 1.x чуть получше веб-версии, так как есть одна процедура, работает через эмулятор без флеша. Флеш версия 2.0 без флеша уже не работает, а флеш RIP, зато там уже есть зачатки control flow похожие на то что есть в Robozzle. В общем, не годится.
  • ПиктоМир. Есть две онлайн версии: https://www.niisi.ru/piktomir/online/index.html — инопланетянский интерфейс какой-то, но выглядит прикольнее, хотя сходу непонятно, какая кнопка для чего. https://online.piktomir.ru/index.html — задания и команды те же самые, интерфейс более понятный, есть справка, но выглядит скучновато. Пока что нигде не нашел комментариев, почему в онлайне висит две версии и какая новее.
    Ещё есть оффлайн версии, причём на одном сайте только для Windows и мобильных платформ, а на другом и для Linux, но где исходники этой версии, я не нашел, возможно она проприетарная.
    Система команд — что-то среднее между robozzle и lightbot, и имеет команды и оттуда и оттуда. Control Flow есть, но сделан довольно сложно и топорно, а не красиво и элегантно, как на roboZZle.
    В ПиктоМире у процедуры в начале есть опциональный флажок, куда можно вставить повторитель на фиксированное к-во раз (от 1 до 6), условное выражение или условие цикла while. Причём, можно ли вставить флажок и какого типа решает составитель уровня, а не игрок.
    В то же время в robozzle никаких специальных операторов не требуется, поскольку можно, например, внутри F2 в конце положить вызов F2 на красной клетке. Тогда получится цикл while (red) {остальной код}. А если процедура сама себя не вызывает, то её вызов будет иметь эффект if(some color) {код процедуры} и так далее. Имитировать счётчик для фиксированного числа повторений можно с помощью процедуры с не-хвостовой рекурсией.
  • Cargo-Bot Online — клон игры Cargo-Bot, работающий в браузере. (UPD)
    На нескольких (вроде не более 8) платформах расположены башни из ящиков четырёх цветов (красный, желтый, зелёный, голубой) высотой не более шести штук. Над ними на рельсе может перемещаться кран. Цель игры — переместить эти ящики на указанные платформы в указанном порядке.
    Система команд очень похожа на RoboZZle, и как оказалось, написана под впечатлением от неё: взять/положить ящик (одна и та же команда), сместиться к платформе слева, сместиться к платформе справа, вызов процедур от первой до четвёртой. Каждая команда может быть выполнена в зависимости от содержимого крана (пустой, любой ящик, ящик конкретного цвета).
    На мой взгляд, RoboZZle интереснее, так там работа идёт в двумерном пространстве. Кроме того, нет редактора уровней.
    UPD Нашел версию лучше, старая ссылка вот.

Далее, три похожих игры про гусеничного робота:

  • Кодвардс — программа пишется на урезанном CoffeeScript, с добавлением цикла.
    loop 3
        robot.rotate left
        robot.move 1
        robot.rotate right
        robot.move 1
    end
    Если залогинится, то дают доступ к демо курсу, где нет ничего кроме этих двух команд, даже циклов и условий, а дальше платно и дорого. Лучше тыкать в режиме Hour of Code, там чуток интереснее и есть другой исполнитель, который может поднимать предметы на двух картах. В общем на один раз пройти и забыть сгодится. Регистрация того не стоит. Кроме того, не запоминает написанный код. Если перейдёте на предыдущий уровень — начинайте заново.
  • RoboMind — программа пишется на языке, похожим по синтаксису на C, только циклы называются по-другому, в частности есть repeat(3) {} для повторения фиксированное к-во раз, repeat {}, откуда выход только через break или end, repeatWhile () {} (аналог обычного while () {} ). Команды движения выглядят как forward, backward (заменяется forward с отрицательным аргументом), left, right, paintWhite, StopPainting, pickUp, putDown. У команд движения в скобках можно указать аргумент, например backward(-2) эквивалентно forward(2). Если зарегистрироваться, открываются дополнительные «курсы», где я видел Python в качестве управляющего языка. Есть Offline-версия на Java 11, но исходников я не нашел, хотя лицензия указана Apache. До этого была проприетарной и платной и требовала лицензионного ключа. В русской версии Hour Of Code где-то посередине был баг, мешающий пройти. Хотя может уже устранили.
  • Karel the robot — похоже на предыдущие два, но есть задания чуток сложнее и интереснее. Не требует регистрации, но есть некие continuation code, которые позволяют получить доступ сразу к последним заданиям из другого браузера. Примерно как пароли к старым играм. Язык самый простой из всех перечисленных — упрощённый python, с ещё более короткими командами (go, left, right, get, put) и без необходимости писать : после if, while, и с отступами в качестве операторных скобок, например так выглядит код для предпоследнего задания:
    while not home
      while not wall
        if sword
          get
        go
      left
    
    В отличии от двух предыдущих, здесь нет пульта, где можно вводить команды мышью.

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

Меня интересует, есть ли что-то подобное перечисленному, но с понятной свободной лицензией, работающее на GNU/Linux? Что бы именно робот, который ходит по миру с препятствиями, может идти вперёд и поворачивать и управляется кодом, который можно писать текстом.

Другие браузерные игры. Не то, что нужно, но тоже кому-то интересные:

  • http://box-256.com/ — Восьмибитный компьютер, работающий через браузер с 256 байтами памяти, где нужно писать программу на ассемблере. Написан, к сожалению на Unity, поэтому несвободный и долго загружается.
  • https://alexnisnevich.github.io/untrusted/ — выйти из лабиринта, меняя код игры (на java script)
  • https://david-peter.de/cube-composer/ — Паззл, из одной башни кубиков собрать другую башню кубиков.
  • Jahooma's LogicBox — на входе имеется строка. Есть базовые блоки: стартовый, удаление первого символа, проверка первых двух символов на совпадение, удвоение первого символа и просто перенаправление входа на выход и составные блоки, которые надо сделать самому в первых уровнях из базовых, а в следующих можно их использовать. Блоки нужно выстраивать на сетке 6 на 7 клеток, что бы получался нужный результат на выходе. Первые 10 уровней простые, на 10 резко возрастает сложность.
  • blockly.games — семь игр для обучения программированию. Правда здесь используется Scratch и только в последней игре можно писать ещё и кодом на JavaScript. Задания все относительно несложные.

Ещё есть множество всяких онлайновых игр на code.org, tynker.com и нескольких других сайтах, но они все дальше простейших условных выражений и циклов не идут и довольно однотипные и слишком простые, поэтому подробно останавливаться не буду. Может там есть что-то более интересное, но это надо копаться и перебирать все.

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

Из таких я видел две:

  • KTurtle — имеется в комплекте KDE, ничего дополнительно ставить не надо, часто ставится прямо сразу с системой. Что можно сказать — черепашка, может рисовать картинки. К сожалению не очень зацепило, так как нет уровней с заданиями которые можно проходить. Кроме того, на мой взгляд роботы в мире с препятствиями интереснее.
  • КуМир — не смотря на невзрачный вид, эта система на мой взгляд лучше всех перечисленных выше, поскольку её исходный код сразу доступен, не нужно и можно его скачать и скомилировать, а можно взять готовые бинарники, включая автоматические ночные сборки.
    Сразу после установки доступен один «практикум», что в терминах игр эквивалентно кампании. Задания довольно простые, но можно проявить творческий подход и написать более универсальный код, чем минимально необходимый для прохождения автоматического теста.
    В среде есть всё необходимое для разработки своих «практикумов», включая редактор «учителя», где доступны функции и процедуры, заблокированные для «студента», но позволяющие писать проверяющие алгоритмы. Для исполнителей есть простые редакторы сред, позволяющие, например, нарисовать лабиринт.
    Программирование ведётся на диалекте Учебного алгоритмического языка, который используется в некоторых школьных учебниках информатики.
    алг Вперед
    нач
    · цел напр
    · напр := mod(направление, 4)
    · выбор
    · · при напр = 0: игрек := игрек + 1
    · · при напр = 1: икс := икс + 1
    · · при напр = 2: игрек := игрек - 1
    · · при напр = 3: икс := икс - 1
    · все
    · вперед
    кон

    Язык на мой взгляд неплохой, близкий по духу к Паскалю, но имеющий особенности синтаксиса, которые появились только в более поздних языках. Например, нач (аналог begin) нужен только в начале описания подпрограммы (алгоритма, алг), а для циклов и условий используются другие операторные скобки (кц ... нц и если ... то ... иначе ... все), для объявления переменной достаточно написать её тип и имя как в C, а слово var и двоеточие как в паскале не нужно.
    Имеется довольно много синтаксического сахара, облегчающего читаемость кода. Например, функции и переменные могут иметь имена из нескольких слов, разделенных пробелами, е и ё эквивалентны. Логический оператор не можно воткнуть между не только перед, но и между словам в многословной логической функции, например можно написать если не справа стена то ... все, а можно если справа не стена то ... всё и в цикле можно написать нц 3 раз ... кц, а можно нц 3 раза ... кц.
    Понравилось в этом языке разделение функций и процедур. И те и другие имеют синтаксис алг нач кон с опциональными параметрами, которые могут быть входными, выходными (рез) входными-выходными (арг рез или аргрез). Объявление функции выглядит так же, только добавляется ключевое слово типа возвращаемого значения (цел, вещ, лог, лит и тд) между словом арг и именем алгоритма. Возврат значения выполняется с помощью присвоения специальной переменной знач вместо аналога return, что на мой взгляд хуже.

    Есть конечно и недостатки. Использование кириллических символов и русской лексики затрудняет понимание кода иностранцам, а писать сам код менее удобно, так как <> (сравнения) [] (массивы) | (комментарии) набирать из русской раскладки по умолчанию нельзя. Впрочем этот недостаток легко решается с помощью самой IDE, где вроде бы есть сочетания клавиш, которые вставляют эти символы из русской раскладки, но даже если бы их не было, и в Windows и в GNU/Linux можно сделать свою раскладку, использующую вторую клавишу регистра (Обычно AltGr, он же правый альт) или поставить готовую. Ну и переключение раскладки одним нажатием CapsLock (или чего-нибудь другого на вкус пользователя) вместо комбинации из двух нажатий типа Ctrl-Shift тоже сильно облегчает набор символов, недоступных в текущей раскладке.
    Но, на мой взгляд, непривычная лексика — это не особо значительный минус. Чем кц пока ... нц из КуМира хуже какого-нибудь repeatWhile () {} из RoboMind? По-моему, ничем. А, поскольку код во всех этих системах, сугубо учебный, то и необходимости шарить его с иностранцами особой нет.

Интересуют только свободные игры, где есть готовые кампании с уровнями с плавно, но не слишком медленно повышающейся сложностью и возможностью делать свои уровни. Просто какие-то среды типа KTurtle — их полно, но там или готовых задачников/кампаний нету или есть, но дальше освоения простейших конструкций языка они не идут. В этом плане мне понравились задания из Karel Challenges, там есть например рекурсивный сбор яблок, выложенных в виде двоичного дерева. Не слишком сложно, но и не слишком просто. Хотелось бы ещё чего-то вроде прохождения лабиринта, но не по правилу левой или правой руки, а по более продвинутым алгоритмам, где правило * руки не работает.

 robozzle, , кумир, ,

Xenius
()

Дип лёрнинг: быстрый старт

Форум — Development

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

 , ,

beaver
()

Какой самый мелкий и «достаточно мощный» linux-ARM комп существует?

Форум — Development

В идеале хочется что-то похожее на samsung galaxy смартфон по габаритам, но открытое, без экрана, с 2 микрофонами (хороший стереозвук), GPS, GLONASS, BT 4.0, GPRS, LTE. Открытое - там не андроид, а что-то грузящее голое ядро с модулями под все устройства на борту и рутовым доступом через USB шнурок. Ключевое - готовое корпусо-батарейко решение, чтобы девайс запихивался в карман без торчащих проводов.

А смартфон достаточно мощный какой-то есть, который уже раскололи в плане загрузчика, драйверов и разрешили в него лить что попало?

 

hlamotron
()

Как оформлять алгоритмы

Форум — Development

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

p/s вопрос не про оформление кода, только про ту часть где разрабатывается сам алгоритм. лично мне привычно делать все в тетрадке ручкой. но я же не приложу фотки тетрадки к проекту.

 , ,

ferz
()

Курс по компиляторам

Форум — Development

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

Вот, выкладываю ссылку (может будет полезно кому-нибудь) https://lagunita.stanford.edu/courses/Engineering/Compilers/Fall2014/

Если есть ещё слоупоки кроме меня, то давайте вместе проходить!

 , ,

dsxl
()

Книги серии «Fabricate» опубликованы в свободный доступ

Новости — Документация
Группа Документация

Издание «UCL Press», публикующее книги и журналы на условиях Open Access, заявило о том что на их сайте стали доступны сразу три книги серии «Fabricate», посвящённые архитектуре, дизайну, конструированию, конструкционным материалам и инженерным рассчётам, компьютерному проектированию и производству:

FABRICATE is an international peer reviewed conference that takes place every three years with a supporting publication on the theme of Digital Fabrication. Discussing the progressive integration of digital design with manufacturing processes, and its impact on design and making in the 21st century, FABRICATE brings together pioneers in design and making within architecture, construction, engineering, manufacturing, materials technology and computation. Discussion on key themes includes: how digital fabrication technologies are enabling new creative and construction opportunities from component to building scales, the difficult gap that exists between digital modelling and its realisation, material performance and manipulation, off-site and on-site construction, interdisciplinary education, economic and sustainable contexts. FABRICATE features cutting-edge built work from both academia and practice, making it a unique event that attracts delegates from all over the world. FABRICATE 2011, 2014 and 2017 are now all available to download free from UCL Press.

«Fabricate 2011: Making Digital Architecture» (PDF, ~ 54 Mb)

«Fabricate 2014: Negotiating Design and Making» (PDF, ~ 85 Mb)



>>> «Fabricate» (PDF, ~ 47 Mb)

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

 , , , ,

atsym
()

Инженер-программист, г. Санкт-Петербург

Форум — Job

В петербургскую компанию требуется программист для участия в разработках изделий преимущественно морского назначения для операционных систем Linux, QNX.

Требования скромные:

- опыт разработки на языках C/C++ от 1 года;
- желателен опыт разработки на Python;
- желателен опыт разработки с использованием Qt;
- знание или отсутствие боязни Bash;
- навыки администрирования Linux, QNX;
- умение или отсутствие боязни разбираться в чужом коде;
- готовность к самостоятельной работе;
- готовность к командировкам.

Зарплата от 60000р. Оформление по ТК РФ. Предоставление и оплата отпусков и больничных в соответствии с законодательством. Пятидневная рабочая неделя, 8-ми часовой рабочий день.

Резюме слать на адрес: aleksey.karelin@rif-spb.ru

 , ,

HongZa
()

Rust 1.17

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

Команда Rust рада представить выпуск Rust 1.17.0. Rust — это системный язык программирования, нацеленный на безопасность, скорость и параллельное выполнение кода.

Если у вас установлена предыдущая версия Rust, то для обновления достаточно выполнить:

$ rustup update stable

Если у вас ещё не установлен Rust, то вы можете установить rustup c соответствующей страницы нашего веб-сайта и ознакомиться с подробным примечанием к выпуску 1.17.0 на GitHub.

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

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

 ,

mersinvald
()

Хочется странного (автоматизация мышковозни)

Форум — Development

А как бы лучше реализовать такую интересную задачу:

1. Запускать десктопную гуёвую программу в фоне, чтобы она не отображаласть на десктопе, но к ней можно было вернуть доступ. Что-то типа screen но для гуя.

2. Управлять ей пока она висит в фоне и ее не видно (например с помощью xdootools).

Есть идеи с помощью чего такое чудовище организовать?

 , , , ,

Siado
()

Система охлаждения YOBA.

Форум — Talks

Прошлая нить www.linux.org.ru/forum/club/12467316

Призываю предположительно заинтересованных лиц xtraeft CaveRat dk reprimand CaveRat JB

Сегодня почти доделал теплосъёмник, осталось вкладыш. Купил медные тройники и скоро сделаю «радиаторную гирлянду».

Блог здесь http://yoba-cool.blogspot.ru/

 , , ,

rezedent12
()

Первый установочный образ Stali (static linux) от сообщества Suckless

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

Сообщество Suckless, широко известное своей философией разработки ПО, а также набором программ, среди которых dwm, dmenu, surf, tabbed, st и другие, представило первый установочный образ дистрибутива Stali (static linux).

Проект интересен, прежде всего, множеством нестандартных архитектурных решений, отсутствующих в других дистрибутивах и воплощающих философию suckless на уровне ОС.

Основные отличия:

  • статическая линковка всех программ;
  • игнорирование FHS, предлагается иная иерархия директорий;
  • установка и обновление при помощи git;
  • замена coreutils и util-linux на sbase и ubase собственной разработки;
  • использование musl в качества системной libc;
  • отсутствие systemd, используется sinit (suckless init).

Разработчики отмечают более высокое быстродействие системы и низкое потребление памяти.

В дополнение к образу доступна пошаговая инструкция по установке.

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

 ,

d
()

LOR, it's BuguRTOS, I need help!

Форум — Development

Привет, LOR!

У меня небольшой творческий крысис, суть такова:

  1. в течение нескольких месяцев планирую зарелизить BuguRTOS-1.0.0 и окончательно перейти на семантическое версионирование;
  2. сделано это будет на основе текущей ветки (0.9.х);
  3. в будущем BuguRTOS будет представлять собой что-то вроде xenomai, только для микроконтроллеров;
  4. то есть будет относительно маленькое портируемое ядрышко, к которому можно будет прикручивать разные RTOS API;
  5. дальше хочу но основе BuguRTOS сделать микроядро b4 (набор костылей и велосипедов в духе L4);

Почему?

Интересно же!

Так вот на пути к b4 есть определенные проблемы:

  1. есть системные вызовы BGRT_SYSCALL_SYNC_OWN и BGRT_SYSCALL_SYNC_TOUCH, которые повышают приоритет задачи до высшего и делаются перед вызовом BGRT_SYSCALL_SYNC_SLEEP;
  2. есть итерационные системные вызовы BGRT_SYSCALL_SYNC_SLEEP, BGRT_SYSCALL_SYNC_WAKE, BGRT_SYSCALL_SYNC_WAIT, их надо вызывать в цикле, пока завершаются со статусом BGRT_ST_ROLL;
  3. пока все это работает в закрытой системе (монолитная прошивка микроконтроллера) и использыется API ядра, проблем нет;
  4. но это не годится для проекта микроядра, т.к. «неправильное использование» этих системных вызовов может приветси к DoS;

Решение этой проблемы я вижу в том, чтобы:

  1. не использовать BGRT_SYSCALL_SYNC_TOUCH в микроядре;
  2. переписать BGRT_SYSCALL_SYNC_OWN так, чтобы в случае неудачи происходил вызов BGRT_SYSCALL_SYNC_SLEEP и задача блокировалась;
  3. скрыть от пользователя итерационную природу BGRT_SYSCALL_SYNC_SLEEP, BGRT_SYSCALL_SYNC_WAKE, BGRT_SYSCALL_SYNC_WAIT, то есть пользователь должен делать один вызов, а цикл должен делать диспетчер системных вызовов без участи пользователя;

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

  1. подмены адреса возврата в стеке прерванной задачи (грязненько!!!);
  2. в ядре с вытеснением в одной точке (замедлит обработку некоторых прерываний);
  3. сделать ядро полностью вытесняемым с исполнением в отдельном потоке(надо писать слой виртуализации прерываний, замедлит обработку нектороых прерываний, надо память под стек потока ядра);

Что из этого выбрать???

Можете считать голосовалкой...

 , ,

shkolnick-kun
()

Neural Doodle превращает рисунки из Paint в художественные шедевры с помощью нейросетей

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

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

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

 , ,

karton1
()

Рефакторинг не ООП программ

Форум — Development

Привет, кодач!

Тут в растотреде возникла дискуссия о рефакторинге, ооп и прочем подобном...

Хочется найти литературу по рефакторингу НЕ ООП кода, это реально?

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

 , ,

shkolnick-kun
()

Rust 1.6

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

Команда разработчиков Rust рада представить первый в этом году релиз Rust — 1.6. Rust — это системный язык программирования, при разработке которого внимание сосредоточено на безопасности, скорости и параллелизме. Как обычно, вы можете установить Rust 1.6 с соответствующей страницы на официальном сайте, а также посмотреть примечания к выпуску на GitHub. Выпуск включает в себя около 1100 патчей и содержит ряд небольших улучшений, одно важное изменение, а также изменение на Crates.io.

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

>>> Официальный анонс

 ,

Kilte
()

Rust 1.7

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

Команда Rust рада объявить о выпуске новой стабильной версии Rust 1.7. Rust является системным языком программирования, сосредоточенным на безопасности, быстроте и многопоточности.

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

В версии 1.7 были стабилизированы около 40 библиотечных функций и методов. Одним из стабилизированных API является поддержка задаваемых пользователем алгоритмов хеширования в типе HashMap<K, V> стандартной библиотеки. Теперь можно достигнуть значительного быстродействия за счёт возможности смены и использования более быстрого алгоритма хеширования.

Другие изменения:

  • <[T]>::clone_from_slice(), эффективный путь копирования данных из одного среза в другой срез.
  • Методы для удобства работы с Ipv4Addr и Ipv6Addr, такие как is_loopback(), который возвращает true или false, в зависимости от того, является ли адрес петлевым адресом, согласно RFC 6890.
  • Улучшения в CString, используемом в FFI.

Детальный RELEASE NOTES: https://github.com/rust-lang/rust/blob/stable/RELEASES.md#version-170-2016-03...

>>> Анонс в блоге Rust

 

dotcoder
()