LINUX.ORG.RU

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

Leaf 0.2 — высокопроизводительная платформа машинного обучения

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

Анонсирован выход новой версии Leaf 0.2. Leaf написан на языке программирования Rust и является модульной, производительной и переносимой платформой машинного обучения.

По тестам на производительность, Leaf 0.2 опережает другие платформы, являясь, на данный момент, самой быстрой платформой машинного обучения. По словам разработчиков, они смогли добиться этого за счёт выбора языка программирования Rust и библиотеки для высокопроизводительных вычислений Collenchyma (также написанной на Rust). Также, за счёт использования библиотеки Collenchyma можно обучать и запускать модели на CPU, GPU, FPGA, и т.д. с использованием OpenCL или CUDA или другого вычислительного языка, на разных машинах и операционных системах, без лишней адаптации кода. Это делает очень удобным возможность разворачивания моделей на серверах, рабочих станциях, смартфонах, а также современных встраиваемых устройствах.

Чтобы ознакомиться, разработчики предлагают установить Leaf 0.2 и поиграться с примерами, включая популярные Глубокие Нейронные Сети как Alexnet, Overfeat, VGG и другие.

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

 , , ,

dotcoder
()

10 причин почему программист на С++ может выбить много денег

Форум — Development

Список в конце поста написан Лавсаном 2 года назад. (2011-03-23 19:56:00) (источник)
Надеюсь, автор не подаст жалобу в Роспатент за перепечатку :-)
Кстати, sudo cast lovesan.

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

Временное резюме: С++ всё еще актуален по историческим причинам. Еще есть мобилки (sudo cast mono), гиперкластеры для шиндовс 3.11 (sudo cast vromanov) и базы данных. Т.к. он актуален, но не предназначен ни для чего (см. выводы в конце списка) новых специалистов по нему должно быть мало. Маленькая конкуренция на огромной области применения — огромное лавэ $$$. Вот это и есть истинная причина использовать кресты — возможность срубить €€€.

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

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

Вот этот список:

  1. Вырвиглазный синтаксис и контекстно-зависимая грамматика
    • медленная компиляция
    • частые «internal error» в компиляторах
    • код плохо читается и его сложно поддерживать
    • разбор кода различными инструментами, вроде IDE, и его генерация - сильно затруднены
  2. ручное управление памятью
    • неудобства при работе с динамической памятью
    • утечки памяти
    • висячие ссылки
    • сегфолты
    • стандартные средства, как то malloc/new, работают медленно
    • фрагментация кучи
    • велосипедные аллокаторы на каждом шагу
      • которые далеко не факт что эффективнее malloc/new

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

    • отладка затруднена
    • написание GC, по факту, невозможно, отчасти из-за (5), (7) и (8)
  3. Никакого ABI
  4. Нестандартизированный и непредсказумый name mangling
  5. Дублирование функционала Си
    • сами фичи из Си никуда не деваются при этом
      • отчасти из-за того, что по функционалу превосходят аналоги из C++

    • запутывает новичков
    • malloc - new/new[], free - delete/delete[]
    • препроцессор - шаблоны
    • указатели - ссылки
      • ссылка не может быть NULL, что способствует появлению висячих ссылок и сегфолтов

    • структуры - классы
    • stdio - iostream
  6. Стандартная библиотека убога
    • Отсутствует даже такой функционал, как вменяемая работа со строками и многомерные массивы
      • Юникод?

  7. Слабая типизация
    • способствует ошибкам
    • затрудняет отладку
    • const не дает абсолютно никаких гарантий
    • при этом система типов невероятно переусложенена
      • в основном из-за пунктов (2), (5) и (9)
      • медленная компиляция
      • частые внутренние ошибки в компиляторах

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

    • множественное наследование неудобно в использовании
      • проблема ромба по дефолту не разрешается никак

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

    • деструктор можно вызывать до выхода из блока кода, или до delete
      • гарантированная утечка ресурсов/сегфлот
      • это не предотвратить никак, деструктор обязан быть public

    • одиночная диспетчеризация
      • виртуальные методы в конструкторах не работают
      • реализована убого
        • pure virtual function call
        • сложности в случае с множественным наследованием
        • деструкторы обязаны быть виртуальными
          • по дефолту - не виртуальные

        • никаких интерфейсов, только классы

    • порядок инициализации статических членов классов не определен
    • private, public и protected не дают никаких гарантий сокрытия данных
      • к инкапсуляции же не относятся совершенно никак

    • отсутствие «свойств»
      • вынуждает городить getter'ы и setter'ы
        • раздувание кода
        • размывание интерфейса класса

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

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

    • позволяют генерировать некорректный код
  10. исключения
    • отсутствие finally/unwind-protect
      • заставляет городить классы ради одних деструкторов
        • раздувание кода
        • медленная компиляция
        • медленная работа

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

    • работают медленно
    • малофункциональны (ср. CL condition system)

По причинам 3, 4, 5, 9 и 10 C++ совершенно неприменим для системного и низкоуровневого программирования. А по причинами 1, 2, 5, 6, 7, 8, и, опять же, 9 и 10 - и для прикладного.

У C++ нет области применения.

stevejobs
()

Как пустить весь исходящий трафик через определенный интерфейс?

Форум — Admin

Есть интерфейсы ppp0,ppp1,ppp2. Нужно, каждые 5 минут пускать весь траф сервера через следующий интерфейс. Это можно сделать, добавив строку в крон, но какую строку - не знаю.

Пустить трафик через определенный ip я могу с помощью команды:
ip route add tab 2 default via 192.168.1.1 src 192.168.10.2
и iptables -t nat -A POSTROUTING -s ip моего сервера -o ppp0 -j SNAT --to-source 192.168.10.2

Но как пустить именно через интерфейс? мой ifconfig:

ppp3      Link encap:Point-to-Point Protocol
          inet addr:192.168.10.2  P-t-P:192.168.127.1  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1446  Metric:1
          RX packets:12 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:742 (742.0 B)  TX bytes:92 (92.0 B)

ppp1      Link encap:Point-to-Point Protocol
          inet addr:192.168.10.2  P-t-P:192.168.127.1  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1446  Metric:1
          RX packets:12 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:742 (742.0 B)  TX bytes:92 (92.0 B)

ppp2      Link encap:Point-to-Point Protocol
          inet addr:192.168.10.2  P-t-P:192.168.127.1  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1446  Metric:1
          RX packets:8 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:98 (98.0 B)  TX bytes:92 (92.0 B)

 , , ,

bossuvarkin
()

Помогите решить.

Форум — Development

Если лень читать - надо быстро посчитать:

 ( 3877^n)- 1) / ( 3877 - 1 ) mod 139968, где n - числа порядка 10^9.




Предыстория. Тут недавно в новостях в новости про раст разговор зашел про бенчмарки, а конкретно про fasta(http://benchmarksgame.alioth.debian.org/u64q/fasta-description.html#fasta), но это не важно.

Решил я значит тут запилить масштабируемый lc-генератор. Я искал в интернетах что-то подобное - нашел только: https://github.com/johannesgerer/jburkardt-c/blob/afff376e712b07088c09e729e89... но оно не работает и полезного я нашёл там только:

SEED(N) = a^N * SEED + ( a^N - 1) / ( a - 1 ) * b

Но до этого я смог дойти сам. В конечном итоге я всё запилил - всё работает, но при распараллеливании возникла проблема.

Надо инициализировать каждый воркер значением: a^N mod m и ( a^N - 1) / ( a - 1 ) mod m.

Посчитать быстро a^N mod m - труда не составляет, ибо a^(N/ 2) ^ 2 = a^N. Но вот как посчитать ( a^125000000 - 1) / ( a - 1 ) mod m - я так и не осилил.

Сейчас использую кастыль(но он работает дольше чем генерация 250кк чисел на одном ведре):

double mod_139968(double n) {
  return n + (floor(n * 1. / 139968) * -139968);
}


double calc_sumpown(uint64_t n) {
  double sum = 1, apown = 1;
  while(--n) {
    sum += (apown = mod_139968(apown * 3877));
  }
  sum = mod_139968(sum);
  return sum;
}

Я уже сижу над этим дня 3-4 и перегуглил всё что мог - не помогло. Я даже не могу придумать/найти ключевые слова чтобы что-то на эту тему нагуглить.

По ссылке выше есть https://github.com/johannesgerer/jburkardt-c/blob/afff376e712b07088c09e729e89..., но она не работает, а что конкретно она там решает - я не понимаю.

 , ,

registrant27492
()

Заблокировать АНБшный зонд в пару строчек

Форум — Talks

Нашел интересную заметку:
https://webcache.googleusercontent.com/search?q=cache:MgNguLTcMtkJ:www.matvee...

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

а может быть уже есть какой-нибудь RBL со всеми хостами этого Акамая?

в iptable можно парой строчек заблокировать по RBL?

Перемещено leave из security

 , , ,

sanyock
()

Как собрать apk для android из сорцов с github?

Форум — Development

Есть простой способ для людей, не умеющих в програминг?
Вот скачал я с github zip-архив, распаковал, внутри обнаружились файлики Android.mk, CleanSpec.mk и кучка директорий с непонятными файлами внутри.
Какие пакеты установить в систему и что запустить, чтобы на выходе получился apk для девайса с процессором MediaTek MT6795?

 ,

Lavos
()

Как с помощью dd менять одни байты(значения) идущие подряд другими? Как использовать метасимволы, маски при этом? Приведите примеры, если можно.

Форум — General

 , , , ,

Mindincrash
()

Куда разместить бота telegram на python?

Форум — General

Пробовал heroku - клиент не идет на мой пк, openshift - хз как там запустить простой скрипт, cloud9 - на нем остановился, но там часто падает бот, из-за ограничений. Подойдет только бесплатный. Бот использует polling.

 , , ,

vovawed
()

Помогите выбрать ноутбук для девушки с прицелом на Linux до 300 у.е.

Форум — Linux-hardware

Нужно девушке моей выбрать ноутбук. Бюджет сильно ограничен, так что ориентируюсь на Б/У. Винда ей не нужна, нормально работала раньше на линуксе.

Я смотрю в сторону Thinkpad, т.к. если Б/У то, как по мне лучше их. Но дел с ними раньше не имел и конкретную модель выбрать не могу.

Экран нужен 14-15". Сам ноут, желательно, полегче.

Основные задачи - браузер, LaTeX, PDFки, IntelliJ IDEA (учится), кинчики.

 

aquadon
()

Посоветуйте что почитать, посмотреть, по ассемблеру в Linux, и хороший debugger.

Форум — General

Желательно или по NASM или GNU Assembler. Второй более принят в Linux-сообществе?

 , ,

Mindincrash
()

Задолбали скриншоты с лором или минутка самопиара

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

Сильно кастомный Notion WM
Vimperator
Dzen2
mpd + ncmpcpp

Собственный бложик с кастомным css на jekyll.

 , ,

e7z0x1
()

D, Go и Rust, взлетит ли что-нибудь?

Форум — Development

Привет, LOR. На данный момент в окружающее пространство уже некоторое время накатывает следующая мысль: «Разработчикам прикладного ПО, использующим в своей практике Си и C++, крайне необходимо облегчить жизнь, избавив от ошибок с памятью и предоставив удобные механизмы для параллельного программирования». Одни адепты, этакие Базаровы от программирования, предлагают воплощать задумку с помощью новых языков: D, Go и Rust. Другие же, коих пока явно больше, всячески не желают выходить из своей зоны комфорта, предлагая включать необходимое в новые стандарты уже используемых инструментов.

Как думаешь, садиться ли уже сейчас за изучение одного из убийц Си/C++, чтобы через 5 лет не оказаться на обочине индустрии, или же все продолжит идти в старом русле с незначительными вливаниями новшеств?

 , , , ,

Nashorn
()

Python в научных вычислениях

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

Доктор физико-математических наук Андрей Грозин прочитал цикл лекций об использовании Python в целях ликвидации безграмотности среди студентов, аспирантов и прочих. Презентации были приготовлены для представления в среде Jupyter. Видеоматериалы лекций с разрешения лектора доступны под свободной лицензией CC-BY-SA. Исходные видеофайлы будут выложены в торрентах позже.

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

>>> YouTube

 ,

Evgueni
()

Залогиниться под рутом в скрипте

Форум — General

Есть удаленный компьютер под Debian Wheezy, на котором:

  • нет ssh,
  • не настроен sudo,
  • у su нет опции -S,
  • остутствует expect и pexpect,
  • при загрузке обновляется репозиторий git и из него выполняется определенный скрипт на Python 3.

Возможно ли с такими ограничениями выполнить определенные действия от рута питоном или создав bash-сценарий и запустив его?
В частности нужно создать правило udev.

 , ,

metrokto
()

Изучение ассемблера: суть и с чего начать?

Форум — Development

Доброго времени суток всем ЛОРовцам!

Начну немного с предистории. Живу под «гордым» названием веб-разработчик. Для клиентов маг и бездарь одновременно (хотя, второе чаще). Для понимающих просто очередной фронтендщик, который пишет велосипеды на ванильке. Помимо JS знаю, наверное, ниже среднего PHP, BASH и Lua. Когда-то учил Basic, Pascal, C и Python. И тут понятно, что не могу я назвать себя программистом - левел не тот. Вот по этой причине и для души хочу начать изучать ассемблер.

А теперь к сути. Почитал немного информации, понял, что есть команды процессора, используя которые мы создаем программу. Эти команды у разных процессоров/архитектур разные. Но как с этим всем работать пока не понял. Исходя из этого у меня есть ряд вопросов:

  1. Я так понимаю, что текст программы на ассемблере необходимо компилировать, да? Есть какой-нить предустановленный компилятор в GNU/Linux?
  2. Есть какие-то общие правила написания программ? Что-то вроде var arr; function(){};. Как-то же необходимо связывать меж собой команды процессора. Что это за WASM или TASM?
  3. Сборка программы на ассемблере возможна не на устройстве, для которого пишется программа? Если сравнивать с компиляцией ядра Linux.
  4. Я так понимаю, что для «переменных» необходимо жестко указывать ячейку памяти процессора и ОЗУ, да? Что на счет этого стоит учить? Необходимо для старта читать кучу материала о страницах памяти и т.д.?

Планирую начать с чего-то простого, например, Z80 или MC6800. Думаю, завтра у меня еще вопросы будут :) .

В общем, кто что посоветует, с чего начать, где эти основы брать? А то я как по среди моря не вижу куда плыть.

P.S. За ранее всем спасибо!

 ,

EmgrtE
()

Защита WiFi

Форум — Admin

А не подскажете ли как защитить клиентов, подключенных к моей точке от подобных прог:
http://4pda.ru/forum/index.php?showtopic=275319
http://4pda.ru/forum/index.php?showtopic=615058

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

 , , ,

NK
()

Убойный твиттер devops отрасли

Форум — Talks

Открылся в твиттер попахивающий желтизной канал devops отрасли, над некоторыми постами ржал до упаду - https://twitter.com/yellow_madops

Примеры:
«Цыгане обучили украденного ребенка Ruby и теперь он попрошайничает у инвесторов»
«Иисус терпел и нам велел» - протодьякон Никодим о внедрении OpenStack в датацентрах РПЦ
В докер-контейнере Amazon ECS ночевал бомж, укравший SSO токен у неосторожного стартапера. Скандальные фото!!!

 ,

Gamer
()

Мой Firefox

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

С момента моего прошлого скриншота в галерее конфигурация лисы почти не изменилась, однако там я лишь вскользь упомянул о сделанных мной настройках и установленных дополнениях, иначе пост был бы слишком огромным. Однако, многие заинтересовались, а отвечать каждому было лень, поэтому было решено написать этот пост, где я всё разложу по полочкам. Итак, поехали.
Установленные дополнения (некоторые не столь важные я упоминать не буду):

  • Classic Theme Restorer (Customize UI) - Довольно известное дополнение. Позволяет очень тонко настроить внешний вид браузера
  • Disconnect - Убирает «жучки» с сайтов
  • Download Panel Tweaker - некоторые улучшения для встроенной панели загрузок
  • Greasemonkey - менеджер пользовательских скриптов
  • NoScipt - отключает JavaScript на сайтах
  • Pure URL - убирает всякий мусор из адресной строки
  • Stylish - менеджер пользовательских стилей
  • Tabs Mix Plus - Позволяет очень тонко настроить вкладки и всё, с ними связанное
  • Менеджер сессий - Позволяет сохранять текущие вкладки (сессии)
  • Ublock - Легковесный аналог AdBlock
  • VkOpt - дополниельный набор настроек и функций для вк

Установленные юзерстили:

Установленные юзерскрипты:

  • Anti AdBlock Killer - болкирует блокировщики блокировщика рекламы
  • LOR Code Tools - знаменитый юзерскрипт от Eddy_Em
  • VK Download Media - потому что кнопка «скачать» у vkopt выглядит ужасно

Стартовая страница
Тема: Operafx, также хорошо смотрится с темой Mx4.
Иконки noscript перекрашены для лучшего соответствия общей теме оформления. Как это сделать, можн прочитать тут.
Ш: Arial 16
cast smilessss и shayger как интересующихся

>>> Просмотр в png

 

sudopacman
()

эволюция классового общества

Форум — Development

Проблема такова (SBCL)

(defclass c1 () ((i :initform 1)))
(defparameter *i1* (make-instance 'c1))
(defclass c1 () ((i :initform 1)(j :initform (print "Ura"))))
(trace update-instance-for-redefined-class)
(defclass c1 () ((i :initform 1)))
(slot-value *i1* 'i)
  0: (UPDATE-INSTANCE-FOR-REDEFINED-CLASS #<C1 {253D0051}> NIL NIL NIL)
  0: UPDATE-INSTANCE-FOR-REDEFINED-CLASS returned #<C1 {253D0051}>

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

Поэтому приведённый вот здесь

http://www.lispworks.com/documentation/HyperSpec/Body/f_upda_1.htm#update-ins...

пример про превращение прямоугольных координат в полярные - на самом деле будет работать только с оговорками.

Если мы потом захотим преобразовать полярные координаты ещё в какие-то, а потом ещё и ещё, то нам нужно будет написать не N ветвей на каждый этап эволюции, а N*(N-1), на скачок от любой версии к любой другой. Плюс может оказаться нетривиальной задачей понять, откуда и куда мы мигрируем. Впрочем, это не так уж и тяжело - (наверное) достаточно завести слот «номер версии», который будем заменять другим на каждом шаге. Типа такого:

(unintern 'c1)
(unintern '*i1*)
(defclass c1 () ((i :initform 1) (version1 :initform nil)))
(defparameter *i1* (make-instance 'c1))
(defclass c1 () 
  ((i :initform 1)
   (j :initform (print "Ura"))
   (version2 :initform nil)))
(trace update-instance-for-redefined-class)
(defclass c1 () 
  ((i :initform 1)
   (version3 :initform nil)
   ))
(slot-value *i1* 'i)

  0: (UPDATE-INSTANCE-FOR-REDEFINED-CLASS #<C1 {24134041}> (VERSION3) (VERSION1) (VERSION1 NIL))
  0: UPDATE-INSTANCE-FOR-REDEFINED-CLASS returned #<C1 {24134041}>

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

А теперь - почему у меня с этим проблемы. Я захотел довольно простую (казалось бы) вещь - поменять тип поля с числа на строку с сохранением данных. Данные должны преобразоваться в строку с помощью prin1-to-string.

Тут вопроса, собственно, нет. Это просто пока что мысли вслух :)

 ,

den73
()

ЛИСПИТОН

Форум — Development

Обратили внимание, что ЛИСПИТОН «Pixie» (Pixie lang) становится всё популярнее среди энтузиастов программирования из многих стран.

Скажем прямо: Pixie это легковесный Lisp, одинаково пригодный как для общего применения, так и для shell scripting.

Написан на языке RPython (на котором написан PyPy), стандартная библиотека в значительной степени вдохновлена Clojure и другими функциональными ЯП; предоставляет быстрый GC и молниеносный JIT.

Далее информация не для средних умов:

  • Immutable datastructures
  • Protocols first implementation
  • Transducers at-the-bottom
  • Coroutines for transducer inversion of control (transducer to lazy-seq conversion)

TODO:

  • Easy FFI
  • Pattern matching

Ознакомиться и начать широко применять в повседневной работе: https://github.com/pixie-lang/pixie

 , , , ,

vim
()