LINUX.ORG.RU

Сообщения lovesan

 

Metallica или Slayer?

Че круче? Как думаете?

Я склоняюсь к Metallica \m/

 ,

lovesan ()

SBCL уделывает C++(и шланг, и G++) по производительности

https://programming-language-benchmarks.vercel.app/problem/spectral-norm

Немного лучше него, буквально на десяток миллисекунд, справляется rust.

Назовите теперь хоть одну причину использовать плюсы вообще?

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

 , , ,

lovesan ()

Кто-нибудь играет в Starbase?

Сабж.

Супер крутая игруха, только что вышла в Early Access в стиме. Багов, конечно, море, но потенциал огромен. Круче Space Engineers и подобного всего вместе взятого. Редактор космических кораблей - натурально не уступает CAD для авиации.

В фичах - программируемость всего и вся, на специальном басикоподобном языке YOLOL. Чуваки на нем запилили даже GPS-систему навигации. https://isan.to/isan.pdf

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

Да, также можно грабить корованы.

 ,

lovesan ()

Когда люди перестанут писать на C++?

И зачем они это делают до сих пор, не считая поддержки легаси?

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

 

lovesan ()

Навелосипедил квадратные скобки в лиспе

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

Тащемто теперь есть. Вот так можно вызывать методы:

(use-namespace 'System)

[:Console WriteLine "Hello, World!"]

Вот так можно получить текущее время в стринге: (ни одной круглой скобки! может это tcl/tk?)

[[:DateTime %Now] ToString]

А вот так получить значение максимального int32, из специального статического поля соответствующего класса:

[:int $MaxValue]

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

(let ((dict (new '(Dictionary :string :string))))
  (setf #[dict "Hello"] "World!")
  dict)

И создавать Enum-ы не обременяя себя расставлением запятых:

(use-namespace 'System.Reflection)

#e(BindingFlags Public Static)

На закуску, для любителей ковыряться в байтах, добавил и такую возможность, прямо как в C# только лучше:

(use-namespace 'System.Text)

(let ((dotnet-array [[:Encoding %UTF8] GetBytes "Hello, World!"]))
  (with-fixed (raw-pointer dotnet-array)
   (cffi:mem-ref raw-pointer :uint8)))
;; ==> 72

Не хватает батареек? Тогда мы идем к вам!

 , , ,

lovesan ()

Посмотрел я этот ваш Rust

Вобщем, дошли руки потыкать палочкой.

Я вот что не пойму - зачем и кому он нужен, ну правда?

Это же новый C++. То есть, чрезмерно переусложненный язык, в котором, как говорил Луговский, разобраться может разве что хорошая зубрилка, а не хороший программист, но при этом не дающий никаких бонусов к продуктивности, и никакими киллер-фичами не обладающий.

Close to metal? Нет, извините, мне когда надо будет close to metal - я пойду сишку возьму. Которая реально, и Close To Metal, и со стабильным ABI, так важным для низкоуровневого программирования, и так далее. А если просто производительности не будет хватать, в том числе там из-за GC, так ведь - что в Java, что в Common Lisp, есть огромное количество возможностей затюнить производительность до нужного уровня, при этом не стреляя себе в ногу.

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

Наконец, ну безопасность чтоли, хваленая? Ну, опять нет. Взять тот же unsafe. Если вам нужна прямо таки безопасность-безопасность - берите что-нибудь вроде хаскеля(или какого-нибудь Coq, или что-нибудь подобное, с зависимыми типами, если совсем упоролись), ну или на худой конец, что-нибудь вроде Java, где все безопасно прямо как в дурдоме с мягкими стенами.

Вобщем, не вижу зачем этот язык нужен, нам и C++ хватает, если надо не ехать, а шашечки(т.е. тупо позадротствовать, да).

 ,

lovesan ()

АВИМ

Удалены:

а) Комментарии по 5.2 с неслабым снятием скора, хотя никакого 5.2 там нет от слова совсем.

Например вот это: https://www.linux.org.ru/forum/development/15559382?cid=15559383

б) тема с замечаниями: https://www.linux.org.ru/forum/linux-org-ru/15559460?lastmod=1583105320669

Модераторы модераторов спят или как вообще?

Заблокируйте ему модераторские права пока тут полфорума не снесло.

 , ,

lovesan ()

Удаленный комментарий про Ryzen 3950

Удален по причине 4.2 - это как? Модератору @leave задели за больное место? (за процессор видимо)

При том что комментарий содержит ссылки-подтверждения мнения.

https://www.linux.org.ru/forum/talks/15553247?cid=15553536

 ,

lovesan ()

Работа на Python в американском стартапе из кремниевой долины

Внимание внимание, есть работа!

Тащемто нужно писать на Python, на Django. На фронте Vue.js, надо будет туда тоже уметь жать(если что научим, в принципе). В качестве базы посгрес, ну и всякое вроде ELK стека и подобного, для разных вещей. Также используем AWS и heroku.

Компания занимается автоматизацией сферы ипотечного кредитования в США.

Мы маленький, но уверенный стартап, который финансируется топовыми венчурными инвесторами из США. Только-только вышли из фазы MVP и уверенно движемся вперед.

Вилка 3000-4000 USD, но обговаривается отдельно. Если вы прямо супер-пупер, можно и больше, наверное.

Сотрудник ищется в Петербург, либо же с релокацией в Петербург(поможем). Но в крайнем случае можно и совсем удаленно, опять же если вы прямо супер пупер. Работаем в основном как удаленщики, но надо иногда появляться в офисе. Вобщем flexibility во все поля.

Официального представительства компании в РФ нет, поэтому нужно будет открывать ИП.

Подробное описание здесь: https://jobs.lever.co/pollyex/adf4467a-09e7-40ac-a098-529e6530eda3

Ищется синьор-помидор, т.е. у вас должен быть как минимум 5-летний опыт. На Питоне, либо Руби, либо даже же на Java или .NET

 , , , ,

lovesan ()

Вступление в FSF

Наслушавшись Столлмана в Питере, задумался.

Вощемто, что оно дает, нужно ли, итд. Как думаете?

$120 в год за членство - не так уж много.

Заставят ли весь код выкладывать под GPL?

Дискач.

 , ,

lovesan ()

Велосипед на Asp.Net Core MVC

(барабанная дробь)

Теперь у моего велосипеда есть пример встраивания лиспа в пайплайн Asp.Net Core MVC.

В лисповом процессе поднимается Kestrel, поднимается сам фреймворк и его расширения (и скачиваются по ходу дела, если вдруг отсутствуют), и в этот пайплайн вклиниваются коллбеки на лиспе, которыми же мы производим даже всю конфигурацию.

Все на лиспе, и сервер, и модель, и вью, и контроллер, и даже небо и даже Аллах.

https://github.com/Lovesan/bike/blob/master/examples/aspnet-mvc.lisp

Вот конкретно код хендлера:

(defun process-request (request response route-data)
  (declare (type dotnet-object request response route-data)
           (ignore request))
  "Processes a single HTTP request.
 REQUEST parameter represents an instance of HttpRequest.
 RESPONSE parameter is an instance of HttpResponse, which we would modify.
 ROUTE-DATA represent a collection of route data parameters(a RouteData instance)."
  (handler-case
      ;; First, retrieve the 'name' route parameter, which we have configured
      ;;  in our CONFIGURE-ROUTES handler
      ;; In case of it represents a string which equals to 'None',
      ;;  we instead utilize current user name.
      (let* ((route-arg (ref (property route-data 'Values) "name"))
             (who (if (string-equal route-arg "None")
                    (property 'Environment 'UserName)
                    route-arg)))
        ;; Set response content type
        (setf (property response 'ContentType) "text/plain; encoding=utf-8")
        ;; Write a string to response stream. Note that the extension method
        ;;   which we are making use of, returns a Task instance
        (invoke 'HttpResponseWritingExtensions 'WriteAsync response
                (format nil "Hello from AspNet.Mvc, ~a!~%Now is ~a~%"
                        who
                        (invoke (property 'DateTime 'Now) 'ToString))
                (property 'CancellationToken 'None)))
    (error (e)
      ;; Handle error in case of one occurs and return completed task
      (format *error-output* "~a~%" e)
      (property 'Task 'CompletedTask))))

 , , , ,

lovesan ()

Велосипед починили. Теперь линуксоиды тоже могут в .Net Core через SBCL

Значит так, сегодня починили баг который не давал SBCL работать с подгруженным в него .Net Core на Линуксе.

(напоминаю, что я делаю библиотеку которая позволяет дергать дотнет-кор из лиспа, и наоборот https://github.com/Lovesan/bike)

Но кроме того, я уже некоторое время собираю докер имаджи, которые содержат в себе реализацию лиспа и .Net Core SDK:

https://cloud.docker.com/u/love5an/repository/docker/love5an/dotnet-core-sdk-...

Пока поддерживаются реализации SBCL и Clozure CL(не путать с Clojure).

В основном для линукса, но также есть SBCL в контейнере Windows nanoserver.

Собираю сам, под AMD64, но исходники докерфайлов открыты, можете брать и модифицировать если надо:

https://github.com/Lovesan/dotnet-core-sdk-common-lisp-docker

Даешь лисп! Херак херак и в продакшн!

 , , , ,

lovesan ()

$1000 за починку SBCL

Вобщем такое дело - SBCL криво работает с Unix сигналами когда в процесс подгружается к-либо еще рантайм. Крешится, в итоге. На линуксе. Надо починить. Вот я на боунтисорс отдал 1000 баксов на починку.

https://www.bountysource.com/issues/75904410-sbcl-crashes-while-net-is-here

 , ,

lovesan ()

Написал велосипед

https://github.com/Lovesan/bike

Велосипед представляет из себя интерфейс Common Lisp к .Net Core.

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

Абсолютно кроссплатформенно.

Вобщем, ящитаю, проблема с библиотеками у Common Lisp решена.

(use-package :bike)

(import-assembly 'System.Runtime.InteropServices.RuntimeInformation)

(use-namespace 'System.Runtime.InteropServices)

(defun hello ()
  (let* ((os (property 'RuntimeInformation 'OSDescription))
         (delegate (new '(System.Action :string)
                        (lambda (who)
                          (format t "Hello ~a!~%You are running .Net Core~% inside ~a ~a~% on ~a"
                                  who
                                  (lisp-implementation-type)
                                  (lisp-implementation-version)                                  
                                  os))))
         (user (property 'System.Environment 'UserName)))
    (invoke delegate 'invoke user)))

(hello)

;; ==>

;; Hello lovesan!
;; You are running .Net Core
;;  inside SBCL 1.5.3
;;  on Linux 4.15.0-1041-aws #43-Ubuntu SMP Thu Jun 6 13:39:11 UTC 2019

 , ,

lovesan ()

Чо за проблемы с AVX-512?

Привет! Мне тут короче понадобилось двумерную карту флоатов в картинку, по заданной палитре, преобразовать. Если че, это видеостриминг в реалтайме.

Ну я недолго думая привинтил SSE, потом еще подумал, и прикрутил FMA3 инструкции, для более лучшей интерполяции, и для перевода сразу в YUV(линейное преобразование, умножение матрицы на вектор, то сё).

Потом еще подумал, а что это я только по 4 точки прохожу? Вобщем можно и по 8 если AVX. А то и по 16 если AVX-512.

Но тут почитал, что AVX, и особенно AVX-512 делают какую-то черную магию с процессорами, при излишнем использовании. Типа ядра замедляют или чето такое. Поясните че как? Стоит туда жать?

 , , , ,

lovesan ()

FFmpeg 4.1.3 Win64 LGPL3, билд от lovesan

Сделал новый LGPL билд FFmpeg под винду(x64). По ссылке внизу, в архиве. Библиотеки FFmpeg скомпилированы как DLL, все зависимости вкомпилены в них статически, таким образом, можно считать никаких сторонних дополнительных зависимостей нет. В архив включены собственно исполняемые бинарники, DLL-ки, библиотеки импорта, необходимые для линковки с ними, хидеры, и документация.

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

Лицензия LGPL-v3 означает, что сборку можно использовать для коммерческих и приватных целей, а также распространять бинарники без необходимости открывать код и так далее. Естественно, по причине лицензии, некоторые кодеки и сторонние зависимости были удалены, например это libx264 и libx265. Но, им есть замена - libopenh264, kvazaar, и так далее. Кроме того, включены DXVA, D3D11VA, поддержка аппаратного ускорения Nvidia, Intel, и другие плюшки.

В архиве, в README.txt, все подробно описано.

https://static.lovesan.me/ffmpeg/ffmpeg-4.1.3-win64-lgpl.zip

 , ,

lovesan ()

11-е правило Гринспуна, о котором он предпочел умолчать

Любая достаточно сложная программа на Javascript содержит заново написанную, неспецифицированную, глючную и медленную реализацию половины языка Common Lisp.

Нет, ну вы видели современную экосистему JS?

NPM, Webpack, Babel - метациклические компиляторы и интерпретаторы JS, на основе конфигов.

Vue/React/Angular - фреймворки с доменноспецифичными метаязыками и декларативными макросами поверх API браузеров.

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

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

Народ, у меня на работе фронт собирается медленнее, чем на прошлой работе собирался С++ код, представляющий собой огромную обвязку над FFmpeg.

Мы на работе стабильно раз в неделю тратим пару часов на починку очередной хероты из NodeJS инфраструктуры - ломается тупо каждую неделю, и это даже без апгрейдов, тупо на билд-серваке или локальной машине делается npm install - и привет (и слава б-гу, саму ноду не используем, ей только фронтенд компилируется).

И главное, все это говно на порядок сложнее в изучении и понимании, чем SICP, спецификация Common Lisp, Dragon Book и Ахо/Ульман - вместе взятые.

Про дебаг я вообще не говорю, в прошлый раз дебажа JS код, я чуть не ушел в запой.

Фронтендщики, хватит! Остановитесь!

 , ,

lovesan ()

Матюки

Доколе можно так ненавидеть родной язык? Мат - часть русского языка.

Хватит строить из себя советскую интеллигенцию во втором поколении(i.e. не материшься == культурный).

Матом временами не то что ругались, а разговаривали - Пушкин, Лермонтов, Толстой, Достоевский, Есенин, Мандельштам, Пастернак, про Высоцкого вообще не говорю, и так далее. Современная культура же без мата вообще не возможна.

У нас достаточно правил чтобы по тем или иным причинам удалять посты не касаясь выбора лексического аппарата(например есть правила про оскорбления).

Хватит харрасить русский язык!

Свободу матюкам!

 ,

lovesan ()

tailgunner убивает старый дух старой школы

С++ 2018

Собственно в чем проблема? А проблема в том, что конкретному модератору не нравится когда оскорбляют его священную корову - плюсы.

Ага, провокация флейма, значит. А господин ТГ вообще в курсе что и весь ЛОР, и Development, в частности, только и живет тем - что тут и там разводит флеймы? И потому туда заходят.

Development - не quora, у нас тут всегда было место для общения.

Но видимо, некоторым сильно кое где жмет, когда их задевают за живое(т.е. за С++).

 ,

lovesan ()

С++ 2018

Не буду особо подводить итоги года, подведу лучше итоги C++ за 20 лет.

С тех пор как вышел стандарт C++98, утекло довольно много воды, поменялись мейнстримовые операционные системы, браузеры, базы данных, принципы и методы разработки ПО, и вообще, кто бы мог подумать что Microsoft станет одним из главных контрибьюторов в Open Source.

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

В связи с этим вопрос - когда уже закопают труп?

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

 , ,

lovesan ()

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