Pull to refresh
81
0
Алексей@fuCtor

Backend developer

Send message

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

Были вопросы по активации W10 после чистой установки, при условии что это была версия обновленная аж с 8ки. На все вопросы ответили, продиктовали номер тикета, на случай если что пойдет не так и можно было сослаться на этот разговор. Второй случай был когда надо было перенести подписку в Azure, попался тогда индус, с соответствующим английским, по началу не понимал, так он подключал в разговор переводчика, который переводил в обе стороны. Были и проблемы, когда пробирался через их меню, обычно проще заказать звонок.

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

800+ где-то, если поставить оплату за 2 года, то цена увеличивается значительно
Тогда бы уж через alias, все православней )

Злостность манкипатчинга сложный вопрос, ActiveSupport, сплошной манкипатчинг по сути своей. Но народ не сильно жалуется, жалуется когда например какой-нибудь gem начинает неистово потихому расширять ActiveRecord, потом ищи концы из-за чего пошло не так.

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

PS хотя в продакшене видел расширение NilClass, добавление к нему операций индексирования и еще пары часто употребимых. Видать надоело городить проверки, try является частью Rails, но в последних версиях добавили эквивалентную замену в std.
Это та самая запретная маленькая тележка черной магии )
Ruby не надо, слишком он гибок для новичка, нет контроля. На старте нужна статическая типизация. В Ruby слишком много всего, как второй язык да. Или даже третий, после знакомства с империативным программированием, основами функционального.
Да, вы правы, у любого класса есть метод to_s (определен в Object, отправная точка всего), в базовом виде он просто имя класса + id объекта внутренний выведет.
У людей с первых минут трудности с формализацией задачи на естественном языке, с понятием «переменная», с линейностью программы (ну, как так получается, что раньше исполняется то, что выше? почему так?). Госспаде, да они больше тушуются, пытаясь английские буквы на клавиатуре найти, а уж Home, End и Enter при них нажмешь — и ступор. И среда разработки, которая что-то там подсказывает (исходя из исходного кода с опечатками и ошибками), и это ни в какие ворота не лезет.


Веду лабы по программированию уже лет 5, в качестве языка С. Такой же опыт. В 80% перехожить собственно к написанию программы рано, т.к. не могут решить задачу в голове и формализовать ее.

Из последнего: самые первая лаба, нужно просто написать линейную программу, разлочить сумму на наминал + кол-во. Что может быть проще, но студент впадает в ступор. Спрашиваю его самого, сколько и чего надо, отвечает. На вопрос как он это посчитал, ступор.

В принципе стараюсь донести до них не знание конкретного языка, а в целом понимание того как составлять программу, т.к. язык как уже 100500 раз писали учится за пару месяцев. Читать его можно после беглого прочтения документации и усвоения базовых конструкций.
Первая программа на нем была, ну как программа. В «Энциколопедия профессора Фортрана» на одной странице на мониторе был изображен код программы в пару строк, складывающий числа. Запустить его был первый квест )
Ruby — String + String допустимо как конкатенация, String + что-то еще не допустимо

irb(main):001:0> '1' + 1
TypeError: no implicit conversion of Fixnum into String

Неявные преобразования в строку запрещены. А это Ruby, где магии вагон и маленькая тележка.
Думаю на это бы мог нам ответить ru_vds. Но судя вот по этому материалу, эти два режима лишь отличаются в уровне изоляции. И похоже Linux не запустить. Но может в будущем изменится что-нибудь. Когда доведут до 99.9% совместимости Linux подсистему свою, может и реализуют возможность запуска Linux контейнеров.
Это немного разные решения. Про тот что говорилось это прям православный Docker на уровне ядра. А который Docker for Windows, работает поверх Hyper-V.
1) Ratpack пишут ребята из Gradle, и пишут его для JAVA мира, привязаться к Rack можно, написав свои адаптеры и тд. Пару месяцев назад даже делал такую прослойку, чтобы перенести имеющийся прод на Ratpack, но из-за лишних этапов (в самом Rack и потом Sinatra), которые по большей части дублируют функциональность, разница в скорости была не существенная. Когда выпилил их, и всю логику перенес на JAVA (те самые Chain), оставив лишь прямые вызовы бизнес логики, то прирост уже был ощутим.

Если и делать такую обертку, то над чистым Netty, чтобы задачу роутинга, формирования ответа и тд переложить на Rack и выше.

2) В JAVA нельзя расширять существующие классы, в Ruby можно конечно, да и интерфейс авторы сделали более менее привычный, совместим с тем, что есть в RxJava и других пободных бибилотеках и решениях. Многие как раз ругают Rails, за то что расширяет классы безспроса, что потом уже путают что есть в Ruby, что из Rails пришло.

3) Написать DSL поверх этого не проблема, но не вижу смысла, как говорится ИМХО. В данном случае, я за то чтобы делать минимум лишних действий между JAVA кодом и Ruby. А скорость адаптации все же не от DSL зависит, а от качества когда.

Это достаточно специфичное решение. Если нужно что-то каноническое, то это Puma, но на ней не сделаешь сотню паралелельных HTTP запросов, не заблокировав потоки. Можно конечно поколдовать над Ruby::Concurrency или Celluloid, но архитектура у Puma такая, что прям навязывают линейное выполнение кода. Не зря же делают альтернативные решения для выноса ActionCable из основного приложения (anycable).

В проде оно очень даже хорошо себя показывает, высокий concurrency, низкие задержки, узкие места перенесены на JAVA. В итоге время ответа (сложная логика) составляет 2-3мс. И весь I/O полностью асинхронный.

В конечном итоге я не предлагаю коробочное решения, а лишь показываю что если не устраивает то что есть в Ruby экосистеме, но есть на JVM, можно использовать это достаточно легко и просто. Да это будет не ruby way, да это будет идти местами в разрез с идеологией, но все это лишь инструмент и рекомендации, а не догма.
Извините конечно, но по последней ссылке сходить не пробовали? Ratpack не имеет никакого отношения к Ruby, это быблиотека для JAVA. Собственно в самом анчале про это и указываю.
1) Зачем мне Rack если я не использую rack совместимый сервер + для реаьлной задачи где он используется это лишняя прослойка. UrlExpander это просто пример чуть сложнее HelloWorld, чтобы добавить использование Promise из Ratpack.

2) async/await везде делается на уровне языка, так что этого нет ни в JAVA, ни в Ruby, то и в JRuby ему появится неоткуда. В данном случае, предлагается модель Promise на основе акторов от Netty (JAVA библиотека, не имеет отношения к Ruby), без GIL, как в MRI реализации.

3) Зачем DSL? Еще раз, статья о том как использовать высокопроизводительный сервер из мира JAVA с Ruby.

Подобное работает, в продакшене, быстрое, юзабельное и приносит реальные деньги.

Как эксперимент пойдет, как продакшен решение — не катит и требует изменений API

И еще раз повторю, статья о том, как использовать хорошие, быстрые, производительные решения на JAVA и не отказываться от имеющейся кодовой базы полностью. Отсюда и выглядит это все немного не Ruby like, а как JAVA.
Что считать real-time наверно, для исторического анализа каждую секунду на больших объемах, это мне кажется real-time. Т.к. даже сами разработчики рекомендуют делать редкие, но большие запросы, а не единичные и частые.
C 1ого ноября уже и другие могут, недавно получил письмо от Альфы.
Есть узкие места, где не позволяет рельеф. На горных перегонах порой идет сцепка из нескольких электровозов спереди и сзади, и скорость такая что на машине этот же участок проходится в раза два быстрей. При этом увеличить скорость там физически нет возможности, тогда быстрее пройдя другие участки, здесь придется ждать своей очереди.
http://matthewvalimaki.com/docker/how-to-executing-commands-in-containers-using-docker-remote-api-v1-20/ в сети вот такое есть, можно попробовать на базе этого сделать.
Думаю, что-то типа такого, https://docs.docker.com/engine/reference/api/docker_remote_api_v1.19/#/attach-to-a-container-websocket если почитать документацию есть эквивалент для docker exec, консольная утилита по сути своей лишь клиент к REST API.

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity

Specialization

Бэкенд разработчик
Ведущий
Scala
Git
Docker
Redis
Высоконагруженные системы
Проектирование архитектуры приложений
PostgreSQL