Это копия, сохраненная 22 февраля 2020 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Предыдущий тред: https://arhivach.ng/thread/489585/
ИЗУЧЕНИЕ ЯЗЫКА
Q: C чего мне начать, чтобы стать рубистом?
A: Отличным началом будет Programming Ruby (The Pragmatic Programmers Guide), читать Eloquent Ruby и The Well Grounded Rubyist после прочтения первой толку особо не даст, одни и те же вещи, дальше читаем Ruby Way, затем познаем метапрограммирование с Metaprogramming Ruby.
А дальше открываем Ruby cookbook 2015 года, Пишем свой код во время чтения.
Q: Следующий уровень, продвинутые книги по руби:
A: Confident Ruby by Avdi Grimm | Practical Object-Oriented Design in Ruby
Refactoring Ruby Edition | Ruby Under a Microscope
Q: Онлайн курсы чтобы попробовать/вкатиться:
A: https://ruby.github.io/TryRuby/ | https://rubymonk.com/
https://www.codewars.com/?language=ruby | http://rubykoans.com
Q: Какой gem посмотреть, чтобы понять, как писать код?
A: Лучше всего посмотреть небольшие gem'ы вроде cancancan, pundit, camping.
Еще можешь полистать на гитхабе гемы с нарастающей популярностью (там еще нет тысяч строк, и тебе будет легче понять): https://github.com/trending?l=ruby
Q: Хорошие практики по руби и рельсам?
A: Обязательно стайлгайды (как оформлять код):
https://github.com/rubocop-hq/ruby-style-guide
https://github.com/JuanitoFatas/fast-ruby
https://github.com/rubocop-hq/rails-style-guide
Руководства "для чайников":
https://www.railstutorial.org/book [en]
https://www.theodinproject.com/tracks/1 [en] | http://codenamecrud.ru/ [ru]
Еженедельная рассылка с новостями из руби мирка:
https://rubyweekly.com
Прочая годнота:
https://github.com/markets/awesome-ruby
Q: Документация по стандартным библиотекам руби и рельс:
A: https://ruby-doc.org/ | https://api.rubyonrails.org
https://guides.rubyonrails.org
Q: Можно ли на руби писать нативные GUI, мобильные приложения, игры?
A: Да, но не стоит.
Q: Что ещё изучить?
A: Английский, git, linux. Паттерны. Один из часто используемых - Service Object.
СРЕДА РАЗРАБОТКИ
Q: Как установить разные версии рубей?
A: https://rvm.io | https://github.com/rbenv/rbenv | https://github.com/asdf-vm/asdf
https://www.youtube.com/watch?v=IhTXDklRLME
> The Future of Ruby
Всегда, когда вижу на сайте какой-нибудь библиотеки или другой технологии новость с заголовком "the future of технология_нейм", это означает, что разработка прекращается, и будущего у неё нет.
Всегда когда вижу комментарий о том, что какая-то технология себя изжила, это означает мамкиного эксперта.
Нет там сахара, скобки кругом и проповедуют обязательность семиколонов.
Заебало настраивать эти бесконечные modelDatasourceDependenciesManagerFactory и ждать, пока проект, писавшийся 6 лет, наконец запустится через 10 минут после нажатия кнопки.
Почитал Agile Web Development on Rails - понравилось, так как в полной мере понимаю, о чём идёт речь.
Завсисит. Ruby и рельсы хороши тем, что они до сих пор является некоторым маркером "правильных" людей. Если для тебя это важно и вокруг тебя есть работа на RoR, то имеет смысл попробовать.
http://www.paulgraham.com/pypar.html
Какие интересные таски попались?
Там даже над шуткой, где мол каждый год говорят, что руби умер, не посмеялись.
Настолько люди верят в кончину рубина.
https://youtu.be/IhTXDklRLME?t=94
Там с таймкодом.
А, ты в общем про доклад.
Не, я до конца не смотрел. Да и думаю создатель ЯПа до последнего будет пытаться реанимировать свой язык, вряд ли он скажет RIP
язык-зомби
>является некоторым маркером "правильных" людей
В смысле осиляторов непростого и продуманного фреймворка, или о чём ты?
У меня нет задачи ощущать себя "правильным" человеком.
Для меня этот аспект неважен, значение имеет вопрос - реальна ли возможность смены стека (хотя фактически поменяется 20%) и поиск работы в Москве, если раньше именно на Ruby не было коммерческой разработки
Без руби-опыта может быть тяжеловато, хотя в целом в ДС проблем быть не должно. Готовься в первый год по зарплате просесть.
> У меня нет задачи ощущать себя "правильным" человеком.
А какая у тебя задача? Ты залётный что-ли в ойти?
> реальна ли возможность смены стека
Да, очевидно реальна. Ради чего?
> поиск работы в Москве
Рынок RoR в Москве после крысиса так и не оправился (источник: я работал в самой большой Ruby команде в городе). Найти можно, но, например, я бы на твоё резюме даже и не посмотрел. Нужен опыт.
> Рынок RoR в Москве после крысиса так и не оправился (источник: я работал в самой большой Ruby команде в городе). Найти можно, но, например, я бы на твоё резюме даже и не посмотрел. Нужен опыт.
Ну и на хуй вас тогда, элитариев
велком ту питон
Налетай, эликсирщик.
ты тредом ошибся
>Там даже над шуткой, где мол каждый год говорят, что руби умер, не посмеялись.
А хули над ней смеяться, когда уже который год каждый раз ее шутят? Ну блять. Тебе будет смешно, если я расскажу тебе один и тот же анекдот раз пять?
Еще как надоел, только у них как бы есть большая разница. ПХП технология уровнем ниже и там больше клиентуры, меньше требований, купил книгу по пхп и пошел зарабатывать деньги, одна хуйня никто не понимает как писать правильно, так зачем замарачиваться, если тебе это не нужно, а большинству это не нужно. Есть люди которым вообще группы в быдлятне хватает, чтобы толкать свой товар, там еще больше чем клиентуры пхп, но это не значит что создание групп в ВК лучше языка программирования ПХП.
Питон форсят как лучший язык для новичка, естественно пропаганда делает свое ЛОЛ. Ты же не удивляешься почему Пыня президент в РФ, ну вот по этому и питон популярен. Без пропаганды он бы загнулся еще лет 10 назад, потому как какой человек будет писать на этом дерьме осознанно.
>ПХП технология уровнем ниже
Пиздец я сказанул. Заняла место на рынке уровнем ниже конечно, сам технология та же, обычный текстовый редактор.
>ПХП технология уровнем ниже
это почему,говно скрипт и на руби написать можно
плюс магия иногда боком встает
питон только в начале десятых начал популярность набирать
Спрос не на руби падает, а на уеб CRUD поделки на коленке (и это хорошо). Есть несколько факторов почему так:
- Сегодня никому в голову уже не приходит писать свой собственный магазин, сайт визитку и прочие CRM. Не только на рельсах, а вообще.
- Фокус переключился на SPA. А на бекенде? Да похуй! Раз уж мы тут ебёмся в присядку с JS и реактом, давайте на сервере тоже JS захуярим.
- Рельсы перестали быть такими модными и молодёжными. К тому же DHH и кампания не понятно чем последние 5 лет занимаются. Ничего нового крутого и революционного за всё это время добавлено не было.
а то,что рельсы и есть визитная карточка руби,которые в основном для круда и предназначены
>Фокус переключился на SPA
Что кстати довольно забавно и говорит о большинстве программистов как о животных. Реально СПА нужно в 10% из 100 где ее применяют. Появилась новая технологиянейм и все тупо рванули ее хуячить и похуй зачем ее придумали, главное смари как умеет делать ЫЫЫЫЫЫ. Так же было и с Рельсами, лепили всюду и потом дико рыдали что не робит. Знакомый парень в Яндексе на реакте кодил, такого рассказал и показал что я в ахуе. Я раньше считал Яндекс дегенератами, но вот так откровенно их код никогда не видел и признаться честно, такого говна, я даже представить себе не мог, что можно кодить буквально как в мусорное ведро без какой либо структуры в принципе, 1500 строк в роутере на сервисе уровня сайта-визитки - говно вопрос. Прямо как та обезьяна из басни Крылова. Зачем Реакт в сайт визитку, это я уже молчу, Яндекс то лучше меня небось знает.
>Раз уж мы тут ебёмся в присядку с JS и реактом, давайте на сервере тоже JS захуярим.
Гениальная мысль, узнается подчерк Шарикова в подобной логике КЕК Похуй бизнес, похуй деньги, давайте хуйню вытворим, ну прикольно же ребят.
Для мелкосайтов рельсоподобных фреймворков достаточно уже и на других языках.
А для крупных сайтов нужна асинхронность.
ты про феникс?
Зачем использовать делегирование связанных атрибутов, например пик1
>delegate :name, :domain, to: :company, prefix: true
Если вызов
>@user.company.name
быстрее на бенчмарке? пик2
или я что-то неправильно понимаю?
Я не гонюсь за скоростью.
Но делегирование распространенная практика.
Хотя мне больше удобнее через дот-синтаксис писать.
>user.company.name
Наткнулся в одном проекте снова на методику делегирования, решил проверить скорость. Шина не произошло.
Заинтересовался, в чем тогда смысл? Просто в удобстве?
>>509823
Потому что это банальная абстракция. Делая parent.child.attribute ты течёшь деталями имплементации и выкручиваешь самому себе из будущего яйца.
Почитай про Interface Segregation Principle.
Гораздо проще тестирировать и поддерживать код где отдельные куки проекта не зависят от всех остальных кусков.
Я понимаю что можно наскафолдить свое поделие, но оно не будет таким годным как https://ghost.org/
Конечно же загуглил, но ничего годного не нашел. Почему до сих пор никто не сделал что-то подобное госту?
После такого начинаешь верить что он и правда умирает.
Мы используем термин duck typing вместо полиморфизма.
> ad-hoc полиморфизм
Runtime polymorphism скорее. Сложно назвать то что у нас есть ad-hoc в класcическом смысле.
> Почему на рубях нет какой-нибудь крутой cms для блоггинга?
Как насчёт https://github.com/opoloo/lines-engine или той же Spina CMS?
> не будет таким годным как https://ghost.org/
И что конкретно годное там?
> Почему до сих пор никто не сделал что-то подобное госту?
Потому что Medium очевидно. И jekyll и Gatsby.
Видел спину и lines перед тем как написать сюда.
У спины уебищная админ панель. Посмотрел скрины lines - чуть не блеванул.
>И что конкретно годное там?
Она охуенно выглядит. Скрин сверху. Это первое что бросается в глаза.
Много позитивных постов, что народу нравится.
Medium превращается в говно. Они вроде начинают вводить подписку или что-то в этом духе.
Так-то jekyll это не cms. Будет не совсем удобно.
Вот есть же discourse, написаный на рубях. Всем он заходит.
хуя хром добавляет пустое место
>Почему на рубях нет какой-нибудь крутой cms для блоггинга?
потому что это тот самый CRUD и ActionText, который rails умеет из коробки?
зачем плодить то, что делается за вечер даже без подключения сторонних компонентов.
Не все хотят с этим разбираться или тратить время на создание с нуля.
Вот например, решил я создать блог и писать на определенную тему.
Видя что есть решения которые достаточно развернуть на впску, я отдам предпочтение им, даже если знаю ror
А так, я начну создавать велосипед и в итоге у меня пропадет желание заниматься блоггингом
Наверное потому что похапе - говно для вчерашних расклейщиков объявлений, а руби - стильный и выразительный язык для интеллектуалов.
Я про то, что в руби не нужен do при определении метода, а он спросил про do как раз по этой причине, хуле не понятно
почему ты так думаешь?
Или говно затея и надо писать отдельный AJAX для одной линки, а у другой оставлять 'remote: true'?
слоу фикс
Всё, нашел. Достаточно в page всегда передавать единичку, каждый раз умножая то, что передаешь в per на номер страницы
Tourism and Hospitality
• AIRBNB
• COUCHSURFING
Marketing
• CRAZY EGG
• BBDO
• ACCENTURE
Social Media
• ASK.FM
• WE HEART IT
• GOODREADS
Software Development
• GITHUB
• ZENDESK
• MICROSOFT
Human Resources
• FIVERR
• HELPING
• YELLOWPAGES.COM
E-commerce / Retail
• SHOPIFY
• GROUPON
• NEDAP
Finance
• BLOOMBERG
• KICKSTARTER
• FUNDERA
Entertainment
• NETFLIX
• HULU
• TWITCH
Real Estate
• SPACELIST
• PROLOGIS
https://medium.com/@rubyroidlabs/9-industries-where-flagship-companies-choose-ruby-on-rails-839b7e21812b
Tourism and Hospitality
• AIRBNB
• COUCHSURFING
Marketing
• CRAZY EGG
• BBDO
• ACCENTURE
Social Media
• ASK.FM
• WE HEART IT
• GOODREADS
Software Development
• GITHUB
• ZENDESK
• MICROSOFT
Human Resources
• FIVERR
• HELPING
• YELLOWPAGES.COM
E-commerce / Retail
• SHOPIFY
• GROUPON
• NEDAP
Finance
• BLOOMBERG
• KICKSTARTER
• FUNDERA
Entertainment
• NETFLIX
• HULU
• TWITCH
Real Estate
• SPACELIST
• PROLOGIS
https://medium.com/@rubyroidlabs/9-industries-where-flagship-companies-choose-ruby-on-rails-839b7e21812b
работает, но теперь в петушином закуте. опустили мы его.
Написал за этот год два новых проекта на рельсах, теперь сижу сеошу один и наполняю контентом другой. Все хорошо.
Про руби в целом ничего сказать не могу. В том числе плохого.
Пикрелейтед с руби-ивентов evrone. Неплохая самоирония.
Мил человек, подскажите как сеошить рельсовые проекты?
Наклепал только альты для пикч, метатеги и манифест. Что для сео еще нужно?
>Наклепал только альты для пикч, метатеги и манифест. Что для сео еще нужно?
Шаги правильные но этого очень мало.
Для интернет-магазина (если это он):
sitemap_genarator, скармливаем выхлоп поисковикам. По моему опыту карта сайта таки дает выхлоп,что бы не говорили на этот счет.
robots.txt с удалением вообще всего, связанного с внутренним поиском и любыми параметрами урла (эти ваши фильтры, страницы кроме первой и т.п.). Ибо дубли и мусор - это чистить обязательно.
Микоразметка а-ля schema.org для снипеетов поисковиков - в обязательном порядке.
Дескрипшены разделов - в обязательном порядке. Можно разгрузить ручную работу взяв перечень ключевиков из товаров категории и накидать пару десятков вариантов текстового сопровождения для воды и избежания переспама и тошностности. Раздробить на логические части, рандомизировать выборку/порядок для каждого раздела.
Дробление каталога на СЧ/НЧ запросы с автогенерацией посадочных под них. У меня, например, товары разбиты по категориям, внутри них по группам и производителям. Посадочные у меня являют собой связки 1 группа и 1 производитель, при условии что товары, подпадающие под эти условия есть и нет категории, которую эта связка продублирует (т.е. категории с одной группой и одним производителем). Плюс посадочные по СЧ запросам по каждому производителю и группе товаров отдельно, опять же, следим за дублями существующих разделов каталога.
Генерация около 2к таких посадочных у меня заняла 3 нескучных вечера.
<noindex> для яндекса где надо, чтобы не индексировал всякие "Добавить в корзину", и т.п. Для гугла не помню как это делается, у меня с него трафика мало, пока смысла не вижу, да и снипеты у него сразу подхватились от meta-descrition, ничего лишнего не вылазит.
Про бэклинки, если проект молодой, забудь на время. Про покупку ссылок вообще навсегда, в 2к19 они даже вредны. Трафик с соцсетей переоценен, причем сильно.
Всякие Яндекс.справочники, карты и прочее - вполне полезны, кто бы что ни говорил, но это в моем случае, тут оффлайн-сеть из 14 магазинов в одном миллионнике.
Внутренний поиск по сайту лично я делал с использованием триграмм через pg_search, мб в чьем-то случае больше подойдет full-text. Вообще по каталогу в любом случае нужно очень много ручной работы - прописывать словари синонимов и т.п. Без этого никуда.
Перелинковка-перелинковка-перелинковка. Не забываем разгрузить главную от кучи ссылок - никаких выпадающих каталогов на всю левую часть страницы. Ссылок 10-15 на самые популярные разделы и посадочные хватит, остальное в поиск и отдельную страницу каталога.
Это только первичные работы, все остальное, в основном, идет от ПФ, поэтому колдуй над юзабилити и поиском. Следи за поведением пользователей на сайте. Можно кучу всего прописать для самостоятельного анализа ПФ, например, сохранять пустые результаты пользовательского поиска внутри сайта для корректировки релевантности синонимаов товаров и т.п.
За первые 2 месяца переработки с нуля на рельсах полудохлого ИМ на опенкарте с кучей грубых ошибок траф взлетел со 150 уников в день до 450. Ряд ключевых СЧ позиций сразу прыгнули в топ-3, причем у гугла тоже. Не исключено что роль сыграл еще возраст домена (он не менялся), но я не профессиональный сеошник, чтобы сильно вникать. В целом, вся информация в сети есть.
Собственно, рельсы мне дали возможность большую часть этого оавтоматизировать + контролировать все и вся, ибо самопис.
Для блогов/шмогов ничего не подскажу - никогда не занимался. Полагаю, все то же самое, в целом, кроме манипуляций с выдачей.
>Наклепал только альты для пикч, метатеги и манифест. Что для сео еще нужно?
Шаги правильные но этого очень мало.
Для интернет-магазина (если это он):
sitemap_genarator, скармливаем выхлоп поисковикам. По моему опыту карта сайта таки дает выхлоп,что бы не говорили на этот счет.
robots.txt с удалением вообще всего, связанного с внутренним поиском и любыми параметрами урла (эти ваши фильтры, страницы кроме первой и т.п.). Ибо дубли и мусор - это чистить обязательно.
Микоразметка а-ля schema.org для снипеетов поисковиков - в обязательном порядке.
Дескрипшены разделов - в обязательном порядке. Можно разгрузить ручную работу взяв перечень ключевиков из товаров категории и накидать пару десятков вариантов текстового сопровождения для воды и избежания переспама и тошностности. Раздробить на логические части, рандомизировать выборку/порядок для каждого раздела.
Дробление каталога на СЧ/НЧ запросы с автогенерацией посадочных под них. У меня, например, товары разбиты по категориям, внутри них по группам и производителям. Посадочные у меня являют собой связки 1 группа и 1 производитель, при условии что товары, подпадающие под эти условия есть и нет категории, которую эта связка продублирует (т.е. категории с одной группой и одним производителем). Плюс посадочные по СЧ запросам по каждому производителю и группе товаров отдельно, опять же, следим за дублями существующих разделов каталога.
Генерация около 2к таких посадочных у меня заняла 3 нескучных вечера.
<noindex> для яндекса где надо, чтобы не индексировал всякие "Добавить в корзину", и т.п. Для гугла не помню как это делается, у меня с него трафика мало, пока смысла не вижу, да и снипеты у него сразу подхватились от meta-descrition, ничего лишнего не вылазит.
Про бэклинки, если проект молодой, забудь на время. Про покупку ссылок вообще навсегда, в 2к19 они даже вредны. Трафик с соцсетей переоценен, причем сильно.
Всякие Яндекс.справочники, карты и прочее - вполне полезны, кто бы что ни говорил, но это в моем случае, тут оффлайн-сеть из 14 магазинов в одном миллионнике.
Внутренний поиск по сайту лично я делал с использованием триграмм через pg_search, мб в чьем-то случае больше подойдет full-text. Вообще по каталогу в любом случае нужно очень много ручной работы - прописывать словари синонимов и т.п. Без этого никуда.
Перелинковка-перелинковка-перелинковка. Не забываем разгрузить главную от кучи ссылок - никаких выпадающих каталогов на всю левую часть страницы. Ссылок 10-15 на самые популярные разделы и посадочные хватит, остальное в поиск и отдельную страницу каталога.
Это только первичные работы, все остальное, в основном, идет от ПФ, поэтому колдуй над юзабилити и поиском. Следи за поведением пользователей на сайте. Можно кучу всего прописать для самостоятельного анализа ПФ, например, сохранять пустые результаты пользовательского поиска внутри сайта для корректировки релевантности синонимаов товаров и т.п.
За первые 2 месяца переработки с нуля на рельсах полудохлого ИМ на опенкарте с кучей грубых ошибок траф взлетел со 150 уников в день до 450. Ряд ключевых СЧ позиций сразу прыгнули в топ-3, причем у гугла тоже. Не исключено что роль сыграл еще возраст домена (он не менялся), но я не профессиональный сеошник, чтобы сильно вникать. В целом, вся информация в сети есть.
Собственно, рельсы мне дали возможность большую часть этого оавтоматизировать + контролировать все и вся, ибо самопис.
Для блогов/шмогов ничего не подскажу - никогда не занимался. Полагаю, все то же самое, в целом, кроме манипуляций с выдачей.
А, да, ЧПУ для урлов забыл. Готовые решения не используй, это легко пишется самостоятельно.
Например:
routes.rb
get ':category_seo_name/:product_seo_name', to: 'products#show', as: :product
products_controller.rb
def show
if params[:product_seo_name] && params[:category_seo_name]
@product = Product.find_by(seo_name: params[:product_seo_name])
@category = @product.category
end
end
А руби действительно не умирает что ли?
Зачем он нжуен вообще. По размеру экосистемы сильно уступает питону, по производительности интепритатора просто сосёт у жс (V8). На реальных задачах, где важно ещё IO - тоже днище, ни грин тредов, ни крутой асинхронщины. По мощности и монструозности фреймворков какой-нибудь Spring куда обширнее и сбольшим количеством интеграций. Сириуслуи нахуя нужен руби?
тоже самое можно сказать и про пистон (но вообще субъективщина, кому-то и ML-языки кажутся удобными)
а зачем тебе IO?
Пистон не является языком одного фреймворка
мимо ябусь с ебенячей асинхронщиной и дата процессингом
Да, много блокировок io, т.к. работа со сторонними апи, запросами в бд, тот же фауст и прочая залупа
Асинхрощины во мне дохуя, рубист стоит передо мной и рельсы свои дрочит, я говорю: "Старина, съеби нахуй". Даю ему корутины и все: "Забирай и проваливай"
Паша Питонист
Мимопроходил, когда увидел нитку о том, что джанга хуже рельс и потом прочитал ее выше
Ну да, надо как в питоне, ага. Как раз и версия 2,7 совпадет.
Все товары находятся на одной странице, но отображается лишь часть и остальные подгружаются по нажатию кнопки.
Мой вопрос заключается только в том, как загрузить страницу сразу со всеми товарами?
Разобрался сам. На самом деле там есть страницы и они грузятся отдельно. Надо просто перебирать их до первого редиректа.
А, ну тогда зря я по SEO расписывал - тут только бэклинки, имейл-маркетинг, оффлайн-продвижение, в зависимости от того, что за товар/услуга.
нет.только чистый пых
За бугор смогу срулить с руби? Как по заказам и аутсорсу на руби? В рф ясно что почти нету руби.
В основном конечно США, но в у нас руби тоже весьма популярен, думаю по популярности стоит после США/Японии.
Кто и почему думает, что на руби рельсах существуют только легаси прожекты?
Это утверждение тех, кто не работал руби-разработчиком, я так понимаю?
мимо-рельсо-макака
>На ру сегмент работаешь или на забугорных господ?
На забугор из России. Рельсы у них ценятся лучше, чем у нас. И заказов для ру-девелопера больше, по понятным ценовым причинам.
>Стоит вообще вкатываться туда?
Если тебе подходит по душе стек, то вкатывайся, на руби приятно писать код. Зарплаты нормальные есть. ну смотря куда попадешь
В ней надо достать текст с radiobutton'ов. Делаю так:
html.xpath("//fieldset/div/ul/li").each do |item|
puts item.xpath("//label/span").first.content
end
Но мне трижды возвращает текст первой кнопки (30 Comprimidos). ЧЯДНТ?
jQuery не подойдет тебе?
Что-то вроде этого
>Array.from($('.radio_label').map( (item) => $('.radio_label')[item].textContent ))
Вернет массив с текстами радио.
Нет, в задаче требуется использовать только XPath для поиска.
file.xpath('//fieldset/div/ul/li/label').each do |item|
puts item.content
end
выводится весь контент (название и цена) корректно, без повторов.
Но тогда остается вопрос, как достать не весь контент, а c каждого span'a по отдельности.
Сап, антуаны!
Помогите понять, пожалуйста. Задача не очень кодерская, но слишком завязана на руби и его особенности.
Поставил Редмайн, хочу учтановить на него плагин, выполняю команду, как описано в мане (https://framagit.org/infopiiaf/redhopper)
root@server:/opt/redmine-4.0.5-0/apps/redmine/htdocs# RAILS_ENV=production ./bin/bundle exec rake redmine:plugins:migrate NAME=redhopper
Получаю ошибку:
Could not find gem 'acts_as_list (~> 0.9.17)' in any of the gem sources listed in your Gemfile.
Run `bundle install` to install missing gems.
Вроде, по человечески написано, делаю (оно не рекомендует делаться от рута, но иначе ругается на дефицит прав):
root@server:/opt/redmine-4.0.5-0/apps/redmine/htdocs# ./bin/bundle install
многотекста, затем
Installing nokogiri 1.10.4 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
ещё многотекста
To see why this extension failed to compile, please check the mkmf.log which can be found here:
/var/lib/gems/2.5.0/extensions/x86_64-linux/2.5.0/nokogiri-1.10.4/mkmf.log
extconf failed, exit code 1
В этом "логе" какая-то ересь:
"gcc -o conftest -I/usr/include/x86_64-linux-gnu/ruby-2.5.0 -I/usr/include/ruby-2.5.0/ruby/backward -I/usr/include/ruby-2.5.0 -I. -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -fdebug-prefix-map=/build/ruby2.5-TeLQY5/ruby2.5-2.5.5=. -fstack-protector-strong -Wformat -Werror=format-security -fPIC conftest.c -L. -L/usr/lib/x86_64-linux-gnu -L. -Wl,-z,relro -Wl,-z,now -fstack-protector -rdynamic -Wl,-export-dynamic -lruby-2.5 -lpthread -lgmp -ldl -lcrypt -lm -lc "
checked program was:
/ begin /
1: #include "ruby.h"
2:
3: int main(int argc, char argv)
4: {
5: return 0;
6: }
/ end /
Всё, на этом месте я сломался. Спасите, пожалуйста.
Сап, антуаны!
Помогите понять, пожалуйста. Задача не очень кодерская, но слишком завязана на руби и его особенности.
Поставил Редмайн, хочу учтановить на него плагин, выполняю команду, как описано в мане (https://framagit.org/infopiiaf/redhopper)
root@server:/opt/redmine-4.0.5-0/apps/redmine/htdocs# RAILS_ENV=production ./bin/bundle exec rake redmine:plugins:migrate NAME=redhopper
Получаю ошибку:
Could not find gem 'acts_as_list (~> 0.9.17)' in any of the gem sources listed in your Gemfile.
Run `bundle install` to install missing gems.
Вроде, по человечески написано, делаю (оно не рекомендует делаться от рута, но иначе ругается на дефицит прав):
root@server:/opt/redmine-4.0.5-0/apps/redmine/htdocs# ./bin/bundle install
многотекста, затем
Installing nokogiri 1.10.4 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
ещё многотекста
To see why this extension failed to compile, please check the mkmf.log which can be found here:
/var/lib/gems/2.5.0/extensions/x86_64-linux/2.5.0/nokogiri-1.10.4/mkmf.log
extconf failed, exit code 1
В этом "логе" какая-то ересь:
"gcc -o conftest -I/usr/include/x86_64-linux-gnu/ruby-2.5.0 -I/usr/include/ruby-2.5.0/ruby/backward -I/usr/include/ruby-2.5.0 -I. -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -fdebug-prefix-map=/build/ruby2.5-TeLQY5/ruby2.5-2.5.5=. -fstack-protector-strong -Wformat -Werror=format-security -fPIC conftest.c -L. -L/usr/lib/x86_64-linux-gnu -L. -Wl,-z,relro -Wl,-z,now -fstack-protector -rdynamic -Wl,-export-dynamic -lruby-2.5 -lpthread -lgmp -ldl -lcrypt -lm -lc "
checked program was:
/ begin /
1: #include "ruby.h"
2:
3: int main(int argc, char argv)
4: {
5: return 0;
6: }
/ end /
Всё, на этом месте я сломался. Спасите, пожалуйста.
ну тут очевидно нокогири просит установить либу которая на сишке написана, а она сбилдиться не может вероятно из-за того что какие-то пакеты не устанволены
попробуй
sudo apt-get install libpng-dev
sudo apt-get install --reinstall zlibc zlib1g zlib1g-dev
>sudo apt-get install libpng-dev
>sudo apt-get install --reinstall zlibc zlib1g zlib1g-dev
Не помогло.
>>521090
>Гугли как поставить acts_as_list в руби
Нашёл это:
/opt/redmine-4.0.5-0/ruby/bin/gem install acts_as_list --source 'https://rubygems.org/'
Но на сервере ограничения на работу с сетью вернее от не доверяет сертификату на проксе, но с этим я, наверное, возиться буду ещё дольше. Пытаюсь понять, как сделать это локально и что и откуда для этого надо скачать.
Как раз этим занимался.
Кажется, не работает. Я ХЗ:
root@server:/opt/redmine-4.0.5-0/apps/redmine/htdocs# gem install ~/acts_as_list-1.0.0.gem
Successfully installed acts_as_list-1.0.0
Parsing documentation for acts_as_list-1.0.0
Done installing documentation for acts_as_list after 0 seconds
1 gem installed
root@server:/opt/redmine-4.0.5-0/apps/redmine/htdocs# RAILS_ENV=production ./bin/bundle exec rake redmine:plugins:migrate NAME=redhopper
Could not find gem 'acts_as_list (~> 0.9.17)' in any of the gem sources listed in your Gemfile.
Run `bundle install` to install missing gems.
root@server:/opt/redmine-4.0.5-0/apps/redmine/htdocs# gem install ~/acts_as_list-1.0.0.gem Successfully installed acts_as_list-1.0.0
Parsing documentation for acts_as_list-1.0.0
Done installing documentation for acts_as_list after 0 seconds
1 gem installed
root@server:/opt/redmine-4.0.5-0/apps/redmine/htdocs# RAILS_ENV=production ./bin/bundle exec rake redmine:plugins:migrate NAME=redhopper
Could not find gem 'acts_as_list (~> 0.9.17)' in any of the gem sources listed in your Gemfile.
Run `bundle install` to install missing gems.
Если делать bundle install, то он опять спотыкается о нокогири:
Fetching nokogiri 1.10.4
Installing nokogiri 1.10.4 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
...
An error occurred while installing nokogiri (1.10.4), and Bundler cannot continue.
Make sure that `gem install nokogiri -v '1.10.4' --source 'https://rubygems.org/'` succeeds before bundling.
Ну и дальше по кругу.
Как раз этим занимался.
Кажется, не работает. Я ХЗ:
root@server:/opt/redmine-4.0.5-0/apps/redmine/htdocs# gem install ~/acts_as_list-1.0.0.gem
Successfully installed acts_as_list-1.0.0
Parsing documentation for acts_as_list-1.0.0
Done installing documentation for acts_as_list after 0 seconds
1 gem installed
root@server:/opt/redmine-4.0.5-0/apps/redmine/htdocs# RAILS_ENV=production ./bin/bundle exec rake redmine:plugins:migrate NAME=redhopper
Could not find gem 'acts_as_list (~> 0.9.17)' in any of the gem sources listed in your Gemfile.
Run `bundle install` to install missing gems.
root@server:/opt/redmine-4.0.5-0/apps/redmine/htdocs# gem install ~/acts_as_list-1.0.0.gem Successfully installed acts_as_list-1.0.0
Parsing documentation for acts_as_list-1.0.0
Done installing documentation for acts_as_list after 0 seconds
1 gem installed
root@server:/opt/redmine-4.0.5-0/apps/redmine/htdocs# RAILS_ENV=production ./bin/bundle exec rake redmine:plugins:migrate NAME=redhopper
Could not find gem 'acts_as_list (~> 0.9.17)' in any of the gem sources listed in your Gemfile.
Run `bundle install` to install missing gems.
Если делать bundle install, то он опять спотыкается о нокогири:
Fetching nokogiri 1.10.4
Installing nokogiri 1.10.4 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
...
An error occurred while installing nokogiri (1.10.4), and Bundler cannot continue.
Make sure that `gem install nokogiri -v '1.10.4' --source 'https://rubygems.org/'` succeeds before bundling.
Ну и дальше по кругу.
Я тут заметил...
# grep "acts_as" /opt/redmine-4.0.5-0/apps/redmine/htdocs/Gemfile
ничего не говорит, а
# grep "acts_as" /opt/redmine-4.0.5-0/apps/redmine/htdocs/plugins/redhopper/Gemfile
говорит
gem 'acts_as_list', '~> 0.9.17'
Ещё по первому пути есть дополнительно файл "Gemfile.lock", а по второму - нет.
Может это быть критично?
acts_as_list тут не причем. У тебя nokogiri не собирается, он тебе об этом и пишет. Попробуй sudo apt-get install ruby-dev, судя по логу тебе именно его не хватает.
Да этот прав, я чот пост до конца не дочитал)
>apt-get install ruby-dev
Находил этот совет в интернетах и уже пробовал, ничего не изменилось.
Видимо, у редмайна в сборке зашиты свои руби... Впрочем, даже если использовать bundle из системы, где стоит в том числе ruby-dev, то падает точно так же.
смотри чо с этой nokogiri не так, гугли как ее поставить
как то так
def _store_accessors_module
if @_store_accessors_module == nil
mod = Module.new
include mod
mod
else
@_store_accessors_module
end
end
на html что-то хуячить - это так себе идея
лучше руби-врапперы для этого юзать и не ебать себе мозги
//рубист с 4летним опытом
у руби своя ниша - быстро писать аппликухи под не очень высокую нагрузку. кроме рор там ничего нет (и не надо, лол)
джава со спрингом быстрее, но смысл с ними трахаться и тратать время, если ты даже не знаешь, взлетит ли твоя идея.
мне кажется что в целом все идет к тому, что есть чистый фронт (на каком-нибудь реакте или вьюжс) и бекенд на rest-e (похуй что)
// мимо жава-макака
Чем не нравится? Ханами как минимум не меняет апи с каждым релизом.
я имел скудность системы в целом
Ruby meetup #11 пройдет в Москве 28 ноября
Приглашаем вас на уже традиционную встречу рубистов и к ним стремящихся, которая пройдет в Rambler 28 ноября 2019 года. Обсудим, что происходит в Ruby в текущий момент, угостим всех пиццей
Митап бесплатный, предварительная регистрация обязательна: https://railsclub.timepad.ru/event/1109233/
Начало: 19.00.
Организаторы: Evrone
Локация: Rambler Group - Варшавское шоссе, д.9, стр 1, Даниловская мануфактура, ряды солдатенкова, подъезд 5.
Как для rails app определить, сколько нужно кластеров application puma сервера, тредов, воркеров? Сколько connectiohns к БД? Как это мапиться физически (сколько нужно) на железно, ядра и треды процессора?
Ясен хрен! А теперь проверь FPS здесь на условном 2.3 и 2.7
https://github.com/mame/optcarrot
https://www.downloadroms.io/roms/nintendo/
https://github.com/colby-swandale/waterfoul
https://www.downloadroms.io/roms/gameboy/
так это для самого руби,там да,прирост по отношению к 2.6 есть
БАМП
Хз, все зависит от резюме.
Кажись у тебя норм ЗПшка.
У нас стажеры получают 0-20, джуны 20 - 50, мидлы - 50 - 90, синьоры 90-120.
Гавноконтрорам нет смысла в крутых разрабах и повышении квалификации - им достаточно иметь пачку джунов, еще столько же мидлов и 1-2 синьора без амбиций, ибо размеры проектов диктуют.
а если эти 20к начнут что то слать на обработку,рельсы наебнуться?
можно,но не советую
Воркеры вроде по количеству ядер сервера (мне друг сказал). Остальное не знаю
Нужно ваше разъяснение.
На пикче программа аля рулетка, и я только начал изучать хэши. И никак не могу понять, как так получается, что в первом случае, при if, hh[a] берётся ключ, к примеру 111, а во втором случае hh[a] уже берётся значение 10?
Ну не знаю, у тебя вообще почти всегда будет nil в hh[a]. rand(111..555) супер редко будет попадать на твои ключи хеша
Да это то я знаю.
Вот, попытался на пикче объяснить.
Почему первый hh[a] принимает значение key (111), а второй hh[a] принимает значение value (10), а не два раза принимает 111, к примеру?
Всё работает правильно, но я не понимаю почему это работает именно так.
ну, где if, там вообще проверяется, что при ифе не nil и не false.
Книжку пробовал открывать вообще? hh[a] твое в любом случае интерпретируется именно как значение. А запись if hh[a] говорит о том, что значение выражения под ифом конвертируется в булеан и проверяется на истинность.
Все скриптовые ускоряются по немногу,а рубен как старый дед кряхтит
>Все скриптовые ускоряются по немногу,а рубен как старый дед кряхтит
У тебя проблемы развести заказчика на более дорогой тариф из облака?
Он дохлый уже, а один из разработчиков взял и запилил Elixir, который тоже медленный как числодробилка, но охуеть какой быстрый как язык для хайлоад конкаррент / дистрибьютед систем.
дано: рейлс, сайдкик, редис, еще одна программа на руби
цель: отправить программе задачу из рейлс, выполнить действие программы, передать в рейлс результаты (задача может выполняться часами, рельса должна отображать состояние задачи)
какое я вижу решение: рейлс и программа висят на одном канале в редис, рейлс публикует задачу, программа отчитывается о состоянии в процессе и публикует результат по окончанию работы. Однако, мне не понятно, как подписать рейлс на события? Возможно ли такое сделать средствами сайдкик, стартовать джоб с пришедшими данными?
Как вообще решаются подобные задачи?
Есть два стула. Либо сделать программу частью рельсового приложения (вынести в какой-то сервис, я хз, че там у тебя вообще за программа). Либо сделать это рубишное приложение чем-то типо rack приложения, в которое ты стучишься из рельсы и получаешь ответ.
>Однако, мне не понятно, как подписать рейлс на события?
Просто посылай HTTP запрос в рельсы из своей программы с названием канала в параметрах. Вообще, если инстансов программы одновременно будет запускаться немного, то можно ее в отдельном треде в рельсовом приложение запустить.
программа работает с железом, которое висит на ком-портах, я хочу запускать инстанс на каждую железку, в том числе иметь возможность подключить удаленно, например, поднять инстанс на ноутбуке, чтобы он регистрировался в рейлс-приложении.
на сервере думаю сделать отдельный воркер, который будет стартовать рейк таск с эвент машиной и слушать каналы, раскидывая джобы в сайдкик по событиям.
по-сути нужен просто надежный меседж брокер, который обслужит шину передачи данных, непонятно пока, подходит ли редис для этого.
Короче я загуглил. Если кому интересно, вот что я выяснил.
Говоря про пуму (puma) и однопоточный сишный руби (MRI), то количество воркеров = количество тредов процессора с учетом гипертрединга (hyper threading). Это связано с тем, что однопоточный руби внезапно однопоточен, полностю thread-safe.
Каждый кластер или каждый воркер будет выступать в качестве форка (подпроцесса) системного виртуального ядра и будет работать в рамках этого ядра.
То бишь 8 ядерный 16 поточный ксенон = 16 воркеров ака кластеризированная пума (puma workers, web concurency, clusters).
Эта конфигурация даст кластер из 16 однопоточных приложений.
Каждый воркер независимо от других принимает реквесты от веба, в нашем примере 16 одновременных соединений.
Не очень много, но тут на помощь приходят треды пумы (puma threads). У одного пума воркера может быть много тредов, по дефолту 1 воркер = 16 тредов.
Каждый воркер внутри себя распределяет полученные реквесты по этим самым тредам, при этом в рамках своей однопоточной работы может переключать процесс выполнения пума тредов для оптимизации, например если какой-то пума тред ждет ответа на чтение/запись в бд, то пума передаст управление другому, который ждет просчета на ресурсах процессора прямо сейчас.
Все это безобразия, судя по всему, хорошо работает в случаях с задержками I/O и не очень в случае с ЦП зависимыми приложениями - там не получиться просто передавать управление от медленных I/O
Помимо этого есть еще пулл соединений к базе данных (pool connections).
Так как все воркеры пумы, или ее кластеры, независимы, то и пул соединений у каждой из них свой, независимый.
Конфигурация выставляется как "пул соединений с БД на один воркер" = "количество тредов в воркере".
В нашем случае - 16.
Итого получается 16 воркеров по 16 тредов = 256 кластеризированных тредов и соответственно 256 соединений к БД.
То есть мы готовы одновременно принимать 256 реквестов с веба.
Но это в теории. С одной стороны часть этих реквестов уйдет с помощью nginx на статику и даже не затронет rails, с другой есть еще бэкграунд джобы и прочие операции, которые также кушают ресурсы.
Соединения к БД можно утилизировать с помощью дополнительной прослойки к базе данных - балансировщик, например pg-bouncer.
Тогда весь пул будет держать именно он, а воркеры будут обращаться к нему за соединениями для своих тредов. Это уменьшит количество простаивающих в холостую соединений и сэкономит память.
Из минусов - приложение лишиться ряда плюшек СУБД, например в pg-bouncer потеряются параметризированные подготовленные выражения aka prepared staements (.where('user.name = :name', name: my_name_var)), рекомендательный блокировки aka advirsory lock и что-то там еще.
Короче я загуглил. Если кому интересно, вот что я выяснил.
Говоря про пуму (puma) и однопоточный сишный руби (MRI), то количество воркеров = количество тредов процессора с учетом гипертрединга (hyper threading). Это связано с тем, что однопоточный руби внезапно однопоточен, полностю thread-safe.
Каждый кластер или каждый воркер будет выступать в качестве форка (подпроцесса) системного виртуального ядра и будет работать в рамках этого ядра.
То бишь 8 ядерный 16 поточный ксенон = 16 воркеров ака кластеризированная пума (puma workers, web concurency, clusters).
Эта конфигурация даст кластер из 16 однопоточных приложений.
Каждый воркер независимо от других принимает реквесты от веба, в нашем примере 16 одновременных соединений.
Не очень много, но тут на помощь приходят треды пумы (puma threads). У одного пума воркера может быть много тредов, по дефолту 1 воркер = 16 тредов.
Каждый воркер внутри себя распределяет полученные реквесты по этим самым тредам, при этом в рамках своей однопоточной работы может переключать процесс выполнения пума тредов для оптимизации, например если какой-то пума тред ждет ответа на чтение/запись в бд, то пума передаст управление другому, который ждет просчета на ресурсах процессора прямо сейчас.
Все это безобразия, судя по всему, хорошо работает в случаях с задержками I/O и не очень в случае с ЦП зависимыми приложениями - там не получиться просто передавать управление от медленных I/O
Помимо этого есть еще пулл соединений к базе данных (pool connections).
Так как все воркеры пумы, или ее кластеры, независимы, то и пул соединений у каждой из них свой, независимый.
Конфигурация выставляется как "пул соединений с БД на один воркер" = "количество тредов в воркере".
В нашем случае - 16.
Итого получается 16 воркеров по 16 тредов = 256 кластеризированных тредов и соответственно 256 соединений к БД.
То есть мы готовы одновременно принимать 256 реквестов с веба.
Но это в теории. С одной стороны часть этих реквестов уйдет с помощью nginx на статику и даже не затронет rails, с другой есть еще бэкграунд джобы и прочие операции, которые также кушают ресурсы.
Соединения к БД можно утилизировать с помощью дополнительной прослойки к базе данных - балансировщик, например pg-bouncer.
Тогда весь пул будет держать именно он, а воркеры будут обращаться к нему за соединениями для своих тредов. Это уменьшит количество простаивающих в холостую соединений и сэкономит память.
Из минусов - приложение лишиться ряда плюшек СУБД, например в pg-bouncer потеряются параметризированные подготовленные выражения aka prepared staements (.where('user.name = :name', name: my_name_var)), рекомендательный блокировки aka advirsory lock и что-то там еще.
>потеряются параметризированные подготовленные выражения aka prepared staements (.where('user.name = :name', name: my_name_var))
Prepared statements это другое (https://www.postgresql.org/docs/current/sql-prepare.html), where который ты написал работает и с pgbouncer.
А для, книга нужна для чайника и ньюфага как в руби, так и в программировании в целом
>>537799
Ну вот для тебя специально на русском туториал:
https://ruby.github.io/TryRuby/
пройди его для начала. Когда пройдёшь может и найдём тебе книгу по руби/рельсам НА РУССКОМ лол бля серьёзно в 2k20 просто ебануться
О, спасибо, вот это мне сейчас будет очень кстати
Я понял о чем речь, спасибо большое.
https://postgrespro.ru/docs/postgrespro/9.5/sql-prepare
>Подготовленные операторы могут принимать параметры — значения, которые подставляются в оператор, когда он собственно выполняется. При создании подготовленного оператора к этим параметрам можно обращаться по порядковому номеру, используя запись $1, $2 и т. д. Дополнительно можно указать список соответствующих типов данных параметров. Если тип данных параметра не указан или объявлен как unknown (неизвестный), тип выводится из контекста, в котором этот параметр используется впервые (если это возможно). При выполнении оператора фактические значения параметров передаются команде EXECUTE. За подробностями обратитесь к EXECUTE.
Первым языком в руби для самостоятельного изучения? Ну такое. Если стажером на галеру на стабильную маленькую зарплату и гарантированный рост - еще можно, а так... лучше ух пыху подергать, там хоть работы побольше
>>509033 >>518477 >>519290 >>520101 >>520117 >>520138
>>520175 >>520181 >>520198 >>520237 >>520654 >>531043
>>531094 >>536097 >>536136 >>536174 >>536340 >>538737
ПОЛОЖНЯК ПО РУБИ И РЕЛЬСАМ НА КОНЕЦ 2019
1. В Москве руби-вакансий БОЛЬШЕ, ЧЕМ КОГДА БЫ ТО НИ БЫЛО
2. Платят БОЛЬШЕ, ЧЕМ КОГДА БЫ ТО НИ БЫЛО
3. В LinkedIn на РЕМОУТ предложений летит БОЛЬШЕ, ЧЕМ КОГДА БЫ ТО НИ БЫЛО (компании из США/Европы/Азии и даже есть Бангладеш и Африка) платят обычно $4-6,5k в месяц, похуй какая часть мира
4. В LinkedIn на РЕЛОКЕЙТ (в основном Германия/Польша/Скандинавия) предложений летит БОЛЬШЕ, ЧЕМ КОГДА БЫ ТО НИ БЫЛО
5. Рублёвые зарплаты в Москве не меньше чем на Java вообще в целом, что из Java в руби перекатываются, что из руби в Java
6. Никакой ПОДДЕРЖКИ ЛЕГАСИ ПРОЕКТОВ НА ПЛАВУ, в основном СТАРТАПЫ и НОВЫЕ ФИЧИ ПАЧКАМИ БЫСТРЕЕ БЫСТРЕЕ В ПРОД
7. Московская конференция Ruby Russia собирает народу БОЛЬШЕ, ЧЕМ КОГДА БЫ ТО НИ БЫЛО и в Питере тож оживилась Питерская конфа.
>Рынок RoR в Москве после крысиса так и не оправился
Что это за ПИЗДЁЖ?
>(источник: я работал в самой большой Ruby команде в городе)
Это в какой? АТ-консалтинг? ПрогрессСофт? Лига Цифровой Экономики? Evrone? Rambler? в разное время разные Ruby-команды были самыми большими
источник: мой опыт и опыт знакомых
мимо долларовый удалёнщик $5,5k в месяц после налогов, ≈5 лет опыта работы на руби
Нет, все верно расписал. Я бы только добавил, что 16 тредов на воркер это по-моему опыту дохуя, если у тебя не одни запросы к базе делаются, обычно 5-8 тредов достаточно.
Только зачем нужны ссаные рельсы, если есть охуенный эликсир с не менее охуенными экто и пениксом? Лучшего экспириенса с языком у меня за весь опыт работы еще не было, а уж от его модульности, производительности и ненагруженности концепциями любая рельсошлюха будет течь как водопад уже через неделю работы. Думаю через полгодика мой основной рельсопроект будет полностью на нем и в освободившееся время можно будет пойти нести свет еще не прозревшим рельсоблядям.
>Лучшего экспириенса с языком
Сразу видно человека, не познавшего кложу.
А чо по эликсиру? Я знаю руби, но рельс не знаю, но знаю джанго. Рекомендуешь сразу вкатываться в эликсир?
Кложа у меня следующая в очереди на изучение, я знаю, что она тоже охуенная, но руки пока не доходят.
>Рекомендуешь сразу вкатываться в эликсир?
Если тебе нужна работа джуна чтобы вот прям выучил и пошел на галеру, то не рекомендую, лучше любой мейнстрим язык/фреймворк. Но если уже есть несколько лет программистского бэкграунда и можешь себе позволить месяц-другой поизучать новый стек, то разумеется.
а что,тебя из загона выгнали?
или даже лучше- в квантовой неопределенности
Вообще все так. Матц и компания слишком консервативны (хули еще ждать от японцев), но иногда на Матца видимо накатывает и он начинает мерджить рандомные фичи в язык.
А зачем вообще пытаться сделать из говна конфетку запилить функциональщину в руби, если уже есть эликсир? Я в упор не понимаю этой логики, в итоге вместо нормального старого руби и нормального нового эликсира будет эликсир и его франкейнштейновского вида подобие. Нахуя?
> начинает мерджить рандомные фичи в язык
это примерно как острую боль запить аналгином,а не понять причину
blah.rb:
def blah; end
куда крепятся определения?
я высмеивал жабу за все то дерьмо в которое нужно завернуть print "hello". но с руби тоже самое.
blah.rb:
def blah; end
1.blah
=> nil
т.е. простые скриптики не очень то писать, нужно оборачивать в какой-то метод/модуль.
дело в том, что метод blah добавится к Object от которого наследуют все остальные. вот это не очень. к примеру, если где-то:
if obj.respond_to?(:blah)
.. do_smth
end
До этого делал для себя проекты и немного макакил на фрилансе в течении нескольких лет.
Потом вкатился в депрессию и ничего не делал год+-, потом меня потянуло на эликсир и я делал задания из книги с большим интересом.
Сейчас опять год ничего не делал. Начал повторять ruby/rails и как-только начинаю во что-то вникать, то какое-то сильное ощущение грусти и тяжести в груди.
Хотел устроиться на галеру, но теперь у меня еще и неуверенность. И вообще кажется что нужно деградировать до qa
Или это депрессия и все же придется пить колеса?
А может мне запостить это в тред депрессии? :(
Больше физры попробуй, чуть больше общения с людьми, даже если ты по натуре "интервент".
Работает. Шлоебенится в своем балахоне
Ну так переставай макакить, открой для себя TDD и становись нормальным программистом понемногу.
можете скринить
если есть за плечами пару языков с опытом
Давно уже крутится на хироку, все было хорошо.
Но тут прилeтает фидбэк от пользователя, что при попытке загрузки на сайт трека проект с музыкой связан ему выбило на экран 'An unhandled lowlevel error occurred.'
В логах посмотреть не могу, потому что на хироку лимит 1500 строк, а увидел сообщение не сразу. Вручную воспроизвести проблему не удалось.
Куда смотреть? Что делать? Не хочется, чтобы ошибка повторилась.
в гугле говорят, что это может быть из-за неправильной установки secret keys, но до этого все работало и сейчас никто не менял ключи
Это не точно, но возможно ошибка появилась во время дэйли рестарта дино. Может ли быть из-за этого?
че за пиздеж? я в САМОЙ БОЛЬШОЙ РУБИ КОМАНДЕ сижу в офисе и поддерживаю легаси за три МРОТа в месяц.
Руби мертвый язык, жалею что не учил джангу.
А, да, точно надо было жаву со спрингом учить.
я в САМОЙ БОЛЬШОЙ ДЖАНГО КОМАНДЕ сижу на Бали и запиливаю новые фичи за три тарелки риса в месяц.
Джанго мертвый язык, жалею что не учил кобол
Эрикисиру.
Хаскель
пхп
Дарт
интересная вещь,но полумертвая
класс в руби это объект, модуль тоже объект
Нет, чтобы вкатится надо сначала стать мидлом/сеньёром на другом стеке (PHP/Python/C/C++/JS + алгоритмы/паттерны и 3 года опыта), потом уже руби/рейлс.
Джунов на руби не существует в реальных условиях.
Все истории успеха это исключение из правила.
Можете в фак добавить.
Спасибо за внимание.
Сейчас да, но 5 лет назад например я вкатился через Руби. И тогда много стартапов было еще на нем, как раз джуно-мидлов и набирали.
Просто на Руби намного выше порог входа чем во многой другой вебни, вот и всё. Нужно подаваться в конторые разрабатывающие на Руби.
У нас в Таллинне не хватает рубистов и эликсирщиков, только хрен где их найдешь.
Поэтому все в руках вкатывальщиков. Но бесспорно, в 10 раз проще это JS и фронт.
фронт это насколько огромный стек технологий и языков, который еще и раздувают из года в год, что это только со стороны кажется учи жс и усё будет, там помимо жс поплывешь в этом море говна да и очень подвержен моде, все "устаревает" за пару лет, если крестовик он и 10 лет назад крестовик, то на фронте как сраные макаки из крайности в крайность.
врот энд это ад, не лезь дебил, оно тебя сожрет.
Мобильный вротенд(особенно ios) не гадость.
Это полный пиздежь. Есть куча галер, куда берут СТАЖЕРОВ и обучают до джунов. Все что ты сказал применительно к Еликсиру, но не к рубям
ФРонт енд это боль, но там самый минимальный порог входа - по крайне мере по моему опыту - я говорю о совсем нубах уровня закончил универ/решил сменить профессию сварщика. Для бэкенда нужен больший, именно для вкатывания, бэкграунд. При этом у миддлов/сеньеров конечно свои сложности не меньшие, чем у аналогичных позиций в бекенде.
>У нас в Таллинне не хватает рубистов и эликсирщиков
Хм, если бы я не занимался мобилой, не сомненно бы на рубях сидел.
А так, даже впадлу делать свои идеи на рельсах, ибо просто хочется делать pip install и не беспокоится обо всем.
Это только кажется что стек огромный, на деле если понимаешь о чем речь все инструменты нужны, важны и не так уж и сложны.
На фронте легчайший порог входа, начать можно с банального хтмл стилей и уже что-то да будет.
Если тебе 15 и кормит мамка, то да.
Правда где-то по середине
тяжело найти стажировку на РоР в замкадье
но если ты в ДС/ДС2/ДС3 то можешь за еду и опыт погрести
в регионах почти полная монополия макак на пхп/1с, лично я стажировался джавистом, считаю очень повезло
мимо фриланс-бомж на плавающем стеке
Метод _store_accessors_module - аксессор какой-то штуки. Штука эта - модуль. Если этот модуль не инициализирован до первого вызова аксессора, аксессор его инициализирует. Элементарно же, сука.
вангую будут версии 2.8 2.9 и потом может 3.0
но к тому времени поезд окончательно уйдет
он и так ушел,теперь только догонять
Так обещали же анонс 3.0 в декабре (еще в августе, лол)? Или там рил могут так наебать и выпустить 2.0?
Да будет версия 3.0, только скорее всего там не будет масштабных изменений и чего-то что вернет Руби популярность.
>>550651
Скорее второй, но нужно понимать что сейчас в Руби действительно сложнее вкатиться джуном, чем допустим 5 лет назад. Все зависит от тебя и куда ты идти работать хочешь. В ДС/ДС2 проблем быть не должно в принципе с любым языком и стеком.
Откуда уверенность что не будет обещанного? Или в руби такой наеб это норм?? Я просто не пойму никак.
>>551734
Основная цель Ruby 3x3 это увеличение производительности в 3 раза по сравнению с 1.9/2/2.1.
Большое изменение которое в итоге ожидается это полноценный JIT, и родная асинхронность.
И по всем направлениям работа идёт.
Это всё не значит, что руби станет популярнее, но ускорение интерпретатора поможет ему сохранить популярность (экосистема гемов тут тоже играет свою роль).
>>552338
За руби нет таких третьих рейхов как гугл, только сейлсфорс и немного другой мелочи. А так по совмести при смене версий руби всегда приятно удивлял, в некоторых аспектах лучше питона 2->3.
>х лучше питона 2->3
а следует все перепилить,а то тащит старое говно.которое тяжело улучшить
Новое говно, даже с запахом ромашек, будет никому не нужно.
Имхо всегда лучше пилить новый язык.
А зачем дергать аксессор до инициализации? Ну, в каких кейсах такое происходит? правда понять пытаюсь, другой анон
>Ну, в каких кейсах такое происходит?
Например, у тебя есть класс, который отражает состояние какой-то директории на диске, процедура чтения с диска занимает время, директорий может быть много, читать диск при каждой инициализации класса - повесить программу на неопределенное время, и не факт, что эта информация вообще понадобится, по этому инициализируем состояние каталога по вызову метода, кладем результат в переменную класса, по дальнейшему вызову уже не дрочим диск а просто отдаем результат переменной.
Скучно. Typescript и фронтэнд это путь в будущее, а не Руби. Хоть он и мой любимый и первый по сути язык программирования, но надо признать что кина не будет...
>фронтэнд это путь в будущее
Весь твой фронтенд уже сейчас сводится к подключению бутстрап-либы и конфигу с биндингами к апи, в будущем всю эту визуальную мишуру еще больше автоматизируют и формошлепов-фронтендеров заменит простенький деплой скрипт, серъезная же бизнес-логика на клиент-сайд не уйдет никогда, опять же, такие задачи как доменная модель, архитекрура приложения, интеграция приложения в какие-то существующие экосистемы и бизнес процессы на фронте впринципе не должны решаться.
Слышал эту хуйню лет 10 назад.
тебе виднее
Как раз наоборот, апишка должна строится от UI компонентов, и вся разработка быть фронтенд-дривен.
Бекенд, кстати, на 90% занимается дублированием фронта и чаще всего нахуй не нужен, достаточно базы в клауде и сервиса авторизации.
В принципе, переход на GraphQL - это шаг в эту сторону.
если у тебя есть возможность строить модель предметной области от гуя, то я даже хз, что это за задачи такие - буклетик, бложик?
Да хотя бы нормальный интерактивный интерпретатор, пакетную систему, отличный синтаксис.
Нет, healthcare приложение, разрабатываемое уже 3+ лет с 3 фронтендерами и 3 бекендщиками. Как почти и любое другое приложение.
Вот как бекендщик строит апишку? Правильно, открывает макеты и смотрит формочки. Ну и база так же моделируется: например, если в ревью можно выбрать что-то одно и обязательно - новая колонка, если опционально -может быть новая таблица и 1к1, а если там пачка всего - то 1 ко многим, а если сразу на разные сущности с одно скрина - то много ко многим. Ну и в целом набор колонок определяется, хоть и не полностью, набором инпутов в формах, их типом и тем, к чему они относятся.
RSpec-style DSLs.
Расскажи про таллиннский рынок. Очень интересно, я бы может перекатился.
Спасибо!
>healthcare приложение, разрабатываемое уже 3+ лет с 3 фронтендерами
вся суть разработки от фронтенда
"почему руби такой непопулярный"
"есть ли будущее у руби"
"почему они смеются над символом скобок, когда сами пишут целые слова"
"как приготовить смузи на рубях"
"нужна ли нормальная кроссплатформенность"
2 и 3 я вообще не вкурил,сложная конструкция
Таки сделал эту хуйню.
Пришлось подключать RabbitMQ и гем Hutch, Хач сам умеет подгружать рейлс приложение, достаточно создать консьюмер и стартануть воркер, в консьюмере описывается канал, который будет слушать хач и отдавать выполнение консьюмеру по приходу сообщения в этот канал.
На клиенте тоже самое. Сервер публикует задачи в канал киентов, клиенты публикуют результат в канал сервера, в итоге имеем event-driven microservice rails application, очень интересная фича, как мне кажется.
Ты интуитивно понял то можно заменять do..end фигурными скобками? Ты, блять, долбаный гений! Это, блять, блоки. Об этом идет речь на первых же страницах любого учебника.
[1, 2, 3] - массив
[1, 2, 3].each - перебираем элементы массива
[1, 2, 3].each do - соответствующий цикл
[1, 2, 3].each do |n| - цикл, в котором перебираем элементы массива [1, 2, 3], где |n| - каждый элемент массива для соответствующего прохода цикла.
т.о. в первой итерации .each n принимает значение первого элемента массива [1, 2, 3][0], т.е. 1. во второй - 2 и т.д.
тебе точно нужно в кодинг? это самые тупые азы, которые еще в школе на вижуал бейсик/турбо паскале/что там сейчас дают.
Metaprogramming Ruby - отличная книга, следущая ступень, раскрывает сильные стороны языка, после которой точно не станешь писать глупости типа >>555638
>для таких как ты
Я другой анон. А вот из-за этих вот
>С картинками и квизами
И не могу читать эти говнокниги. Как будто для детей или инфантилов пишут, которые не могут как нормальные люди информацию воспринимать.
чето против инфантилов имеешь? раз на раз го выйдем, говно блять комнатное
https://poignant.guide/book/chapter-1.html - лучшая книга по руби
Руби можно выучить и по старой книге матца.
Только это не заменит целый ворох других знаний необходимых программисту.
Программирование это сложно и лёгким оно быть не может (иначе в прошлом году заменили бы неиронками большую часть погромистов).
>Программирование это сложно и лёгким оно быть не может (иначе в прошлом году заменили бы неиронками большую часть погромистов).
Это говорит лишь о том, что нейронки на данном этапе своего развития все ещё говно.
Мейнстримовое программирование - обычный интеллектуальный труд с пониженной творческой составляющей, вроде перекладывания бумажек в офисе. Обучить ему можно любого вчерашнего таксиста/курьера за несколько месяцев.
а на руби нейронку можно сделать?
>>509245 >>509258 >>518477 >>519290 >>519299 >>519326
>>526384 >>530761 >>535621 >>535683 >>535686 >>536136
>>538892 >>554580 >>539696 >>554861 >>555638
Вот тут @dhh пояснил про весь этот дроч на супербыстрые байтоёбские языки с асинхронностью/многопоточностью/гринтредами/залупатредами и экономию на дата-центрах (в двух словах хуй чего вы сэкономите на таких масштабах как Basecamp на своих новых стильных технологиях):
>We spend about $3 million every year to run all the versions of Basecamp and our legacy applications. That spend is spread across several on-premise data centers and cloud operations. It does not include the budget for our 7-person strong operations team, this is just the cost of connectivity, machines, power, and such.
>There’s a lot of spend in that bucket. The biggest line item is the million dollars per year we spend storing 4.5 petabyte worth of files. We used to store these files ourselves, across three physical data centers for redundancy and availability, but the final math and operational hassle didn’t pan out. So now we’re just on S3 with a multi-region redundancy setup.
>After that, it’s really a big mixed bag. We spend a lot of money on databases, which all run on MySQL. There’s ElasticSearch clusters that power our search. A swarm of Redis servers providing caching. There’s a Kafka pipeline and a Big Query backend for analytics. We have our own direct network connections between the data centers and the cloud.
>Everything I’ve talked about so far is infrastructure we’d run and pay for regardless of our programming language or web framework. Whether we run on Python, PHP, Rust, Go, C++, or whatever, we’d still need databases, we’d still need search, we’d still need to store files.
>So let’s talk about what we spend on our programming language and web framework. It’s about 15%. That’s the price for all our app and job servers. The machines that actually run Ruby on Rails. So against a $3 million budget, it’s about $450,000. That’s it.
>Let’s imagine that there was some amazing technology that would let us do everything we’re doing with Ruby on Rails, but it was TWICE AS FAST! That would save us about ~$225,000 per year. We spend more money than that on the Xmas gift we give employees at Basecamp every year. And that’s if you could truly go twice as fast, and thus require half the machines, which is not an easy thing to do, despite what microbenchmarks might delude you into thinking.
>Now imagine we found a true silver bullet. One where the compute spend could be reduced by an order of magnitude. So we’d save about $400,000/year, reducing everything we spend running our app and job servers to an unrealistically low $45,000/year. That reduction wouldn’t even pay for two developers at our average all-in cost at Basecamp!
>Now let’s consider the cost of those savings. We spend more money on the 15-strong developer team at Basecamp than our entire operations budget! If we make that team just 15% less productive, it’ll cost us more than everything we spend to run Ruby and Rails at Basecamp!
>Working with Ruby and Rails is a luxury, yes. Not every company pay their developers as well as we do at Basecamp, so maybe the rates would look a little different there. Maybe some companies are far more compute intensive to run their apps. But for most SaaS companies, they’re in exactly the same ballpark as we are. The slice of the total operations budget spent running the programming language and web framework that powers the app is a small minority of the overall cost.
>For a company like Basecamp, you’d be mad to make your choice of programming language and web framework on anything but a determination of what’ll make your programmers the most motivated, happy, and productive. Whatever the cost, it’s worth it. It’s worth it on a pure cost/benefit, but, more importantly, it’s worth it in terms of human happiness and potential.
>This is why we run Ruby. This is why we run Rails. It’s a complete bargain.
https://m.signalvnoise.com/only-15-of-the-basecamp-operations-budget-is-spent-on-ruby/
>>509245 >>509258 >>518477 >>519290 >>519299 >>519326
>>526384 >>530761 >>535621 >>535683 >>535686 >>536136
>>538892 >>554580 >>539696 >>554861 >>555638
Вот тут @dhh пояснил про весь этот дроч на супербыстрые байтоёбские языки с асинхронностью/многопоточностью/гринтредами/залупатредами и экономию на дата-центрах (в двух словах хуй чего вы сэкономите на таких масштабах как Basecamp на своих новых стильных технологиях):
>We spend about $3 million every year to run all the versions of Basecamp and our legacy applications. That spend is spread across several on-premise data centers and cloud operations. It does not include the budget for our 7-person strong operations team, this is just the cost of connectivity, machines, power, and such.
>There’s a lot of spend in that bucket. The biggest line item is the million dollars per year we spend storing 4.5 petabyte worth of files. We used to store these files ourselves, across three physical data centers for redundancy and availability, but the final math and operational hassle didn’t pan out. So now we’re just on S3 with a multi-region redundancy setup.
>After that, it’s really a big mixed bag. We spend a lot of money on databases, which all run on MySQL. There’s ElasticSearch clusters that power our search. A swarm of Redis servers providing caching. There’s a Kafka pipeline and a Big Query backend for analytics. We have our own direct network connections between the data centers and the cloud.
>Everything I’ve talked about so far is infrastructure we’d run and pay for regardless of our programming language or web framework. Whether we run on Python, PHP, Rust, Go, C++, or whatever, we’d still need databases, we’d still need search, we’d still need to store files.
>So let’s talk about what we spend on our programming language and web framework. It’s about 15%. That’s the price for all our app and job servers. The machines that actually run Ruby on Rails. So against a $3 million budget, it’s about $450,000. That’s it.
>Let’s imagine that there was some amazing technology that would let us do everything we’re doing with Ruby on Rails, but it was TWICE AS FAST! That would save us about ~$225,000 per year. We spend more money than that on the Xmas gift we give employees at Basecamp every year. And that’s if you could truly go twice as fast, and thus require half the machines, which is not an easy thing to do, despite what microbenchmarks might delude you into thinking.
>Now imagine we found a true silver bullet. One where the compute spend could be reduced by an order of magnitude. So we’d save about $400,000/year, reducing everything we spend running our app and job servers to an unrealistically low $45,000/year. That reduction wouldn’t even pay for two developers at our average all-in cost at Basecamp!
>Now let’s consider the cost of those savings. We spend more money on the 15-strong developer team at Basecamp than our entire operations budget! If we make that team just 15% less productive, it’ll cost us more than everything we spend to run Ruby and Rails at Basecamp!
>Working with Ruby and Rails is a luxury, yes. Not every company pay their developers as well as we do at Basecamp, so maybe the rates would look a little different there. Maybe some companies are far more compute intensive to run their apps. But for most SaaS companies, they’re in exactly the same ballpark as we are. The slice of the total operations budget spent running the programming language and web framework that powers the app is a small minority of the overall cost.
>For a company like Basecamp, you’d be mad to make your choice of programming language and web framework on anything but a determination of what’ll make your programmers the most motivated, happy, and productive. Whatever the cost, it’s worth it. It’s worth it on a pure cost/benefit, but, more importantly, it’s worth it in terms of human happiness and potential.
>This is why we run Ruby. This is why we run Rails. It’s a complete bargain.
https://m.signalvnoise.com/only-15-of-the-basecamp-operations-budget-is-spent-on-ruby/
а твиттер и не знал
Да. Жалко что на руби слишком мало специфичных АПИ, opposite в питоне придостаточных.
А писать кастомные парсеры, даже не с АПИ а скрабинг хтлма, так влом.
Но рельсы я поддерживаю. Душой.
Пришлось писать на фласке свои хотелки.
>на руби слишком мало специфичных АПИ, opposite в питоне придостаточных
Это каких же? Хоть один пример? Даже для всяких tensorflow есть гемчик
зато игру не написать
да взять тот же https://github.com/search?q=merriam+webster+python
Руби & рельсы это только веб, к сожалению.
Белые люди на питоне пишут. Но если бы я работал на беке, я бы взял рельсы офк.
рельсы говно,ханами лучше
>Обучить ему можно любого вчерашнего таксиста/курьера за несколько месяцев.
Кстати, забавно, но нет, нельзя обучить любого.
У некоторых абстрактное мышление очень слабое.
Простые конструкцие процедурного программирования любой освоит, но дальше будет распиздос за гранью добра и зла.
А потом надстройки над процедурными конструкциями с помощью тех же процедурных конструкций.
Что сложного в том же ООП: все есть объект или комбинация объектов. Достаточно следовать SOLID, знать какие-то распространёнными паттерны, прочитать пару книг Clean Code/Perfect Code/Refactoring/TDD и дальше просто наращивать опыт. Полиморфизм на сабтайпинге можно даже ребёнку обьяснить на простых примерах.
Прочитать недостаточно, нужно ещё понять.
А до этого написать кучку своих проектов/скриптов.
Понять какие проблемы решает та или иная конструкция языка/паттерн.
И сами эти книжки бесполезны без проектов средней величины.
>прочитать пару книг Clean Code/Perfect Code/Refactoring/TDD и дальше просто наращивать опыт.
Так можно сказать про очень много специальностей и профессий.
>Кстати, забавно, но нет, нельзя обучить любого.
>У некоторых абстрактное мышление очень слабое.
Полная хуйня, любой человек со здоровым мозгом(без врожденных болезней/травм) может при желании научиться чему угодно, вообще без каких-либо исключений. "Слабое абстрактное мышление" это долбоебизм на уровне "математический склад ума".
Ну значит травмированных много, чо.
Любой может теорию относительности на коленке вывести.
И прочие розовые сопли.
"Математический склад ума" это лишь попытка нормисов описать способности человека.
Это реальность, а не сопли, дурачок. Не было ни одного научного исследования, которое бы подтверждало, что с рождения у одних людей есть предрасположенность к условной математике, а у других к условной истории, это так не работает. Абсолютно любой "гуманитарий" может научиться физике, программированию, математике. Как и любой программист может научиться рисованию, музыке, истории и прочему. Вопрос только в желании и времени. Нет хуже мрази, чем напыщенная хуета с религиозным мышлением типа тебя, говорящая ньюфагам, что они не смогут вкатиться, потому что боженька так порешал и родил их второсортными людьми.
>Абсолютно любой "гуманитарий" может научиться физике, программированию, математике.
Нет. Есть такая штука как интеллект (измеряется в IQ). Наследуется от родителей от 60 до 80%. Развить этот самый интеллект невозможно. Можно только приостановить "увядание", которое начнется ближе к 30 годам. Можешь поискать на ютубе - Jordan Peterson IQ.
В армию США вообще не берут людей с IQ меньше 83.
Именно из-за этого некоторые работают программистами 300кк в наносекунду в гуглах, а некоторые крутят гайки на заводах или водят трамвай всю жизнь.
>Есть такая штука как интеллект (измеряется в IQ)
Нет ни одного способа измерить так называемое айкью, который давал бы одинаковые результаты в течение жизни человека, в 5 лет, в 15, в 25, в 40(тот есть тот самый врожденный интеллект). А следовательно все последующие твои фантазии - антинаучная хуета.
>Можно только приостановить "увядание", которое начнется ближе к 30 годам
Еще более антинаучная хуета, мозг "увядать" начинает только в совсем поздних годах, и то обычно из-за болезней. Многие профессора прекрасно преподают и публично выступают до 80 лет, сохраняя ясный рассудок и имея кучу опыта за плечами.
Честно скажи, ты дурачок? Я не отрицаю, что по улицам ходят умные и глупые люди, я просто пытаюсь донести простой факт, что потенциальная способность овладеть каким-либо скиллом у всех одинаковая, и что уровень владения данным скиллом зависит на 99% от усилий и времени, потраченных на его изучение, а не от каких-то рандомных врожденных факторов, которые никто так и не смог измерить нормально, но почему-то адепты складов ума в них верят, как когда-то верили в евгенику.
>Я не отрицаю, что по улицам ходят умные и глупые люди
Откуда они тогда вообще взялись эти глупые люди? Если, по-твоему, все стартую с идентичными характеристиками, что тогда помешало им овладеть на равне с умными?
Пиздец тупой вопрос. Потому что они ходили в разные школы, выросли в разных семьях, имели разный уровень достатка, разное количество времени на учебу, вращались в разных социальных кругах и прочее прочее.
...а так же разный уровень гормонов, разную активность отделов мозга, чувствительность к веществам, при высоком дофамине человек не усидит 12 часов за пекой, при низком серотонине не сфоркусирует внимание и уснет и так далее и тому подобное.
>при высоком дофамине человек не усидит 12 часов
>при низком серотонине не сфоркусирует внимание и уснет
Полная хуйня, если нет врожденного заболевания, которое сильно влияет на гормональные уровни, то колебания гормонов в пределах нормы не имеют значения, в день два разных человека смогут учиться новой информации примерно одинаковое время, плюс-минус час ни на что не повлияет.
/label/span
Нет, влияет. Тебе нужно опять сужать рамки и говорить что людям должно быть это интересно как минимум.
Что ты на этом форуме собираешься доказывать, когда 90% шизойдов здесь сидят? Особенно в "мы вам перезвоним"
В итоге, ты прав и неправ. И тот анон тоже прав и неправ.
От себя подчеркну что от среды больше всего зависит.
ушел.
Дурачок и сопляк здесь ты.
Отсутствие исследование не означает, что с рождения нет разницы. Плюс исследования такого рода в открытом виде не появятся наверное ещё в ближайшие 200-300 лет (т.к. идёт борцуньба с гитлером).
Ты путаешь талант и получение базового навыка.
Ты даёшь людям ложную надежду.
Условия не равны, генетика не равна, жизненные условия не равны, время отведённое всем не равно, не у всех даже интернет есть.
Тут люди стек не могут сменить, потому что это сложно, а ты говоришь про рандомного ваньку который хочет 300к/сек.
>>559060
Белые люди пишут на е-мейле.
>>558878
Умное название для сравнения групп переменных с образцом.
>евгенику
Ващето как раз евгеника, в отличии от хуеты про склады ума, лженаукой как раз не является, и запрещена исключительно из-за моральных противоречий. А ее потенциальная "работа" доказывается как минимум существованием кучи искуственных видов, превосходящих своих оригинальных диких соплеменников в том, в чем человеку нужно. Например искуственный лосось, который в несколько раз превосходит в размерах горбушу на ферме твоей тетки на чукотке, или синантропные крысы (которых человек вывел вообще случайно), интеллект которых в несколько раз превосходит интеллект их диких уже вымерших собратьев.
Ит из гуд.
Угу, жопы нет, а слово есть.
Вообще ты рассуждаешь как ванильная пизда которая любит говорить "девочки не какают и не пукают".
Мыслишь какими-то ура-лозунгами про равенство и жвачку.
Не боись, сопляк, мы просто говорим правду, а не пытаемся выпилить половину мира.
Понимать и осознавать правду тоже важно, а как оно должно быть в идеале мы и без тебя лучше знаем.
>>559162
Мы обсуждаем порог вхождения в ЯП.
Очень много вопросов имеют под собой глубокие философские .
>>559254
Это тоже самое, что и круд, но только с ещё большем количеством сахара.
>Отсутствие исследование не означает, что с рождения нет разницы.
С таким подходом легче сразу верить в бога, распределяющего ум и талант, что ты какими-то мелочами загоняешься.
>Плюс исследования такого рода в открытом виде не появятся
Жидорептилоиды в жопу говна заливают и не дают исследовать/публиковать, я понял, шиз.
>Ты даёшь людям ложную надежду.
Нет, дурачок, я говорю людям, что при желании и старании у них есть все возможности добиться чего-то в жизни. Это обычный принцип, на котором построены все без исключения успешные сообщества в сегодняшнем мире, и работает он охуенно, в отличие от твоего "боженька порешал при рождении".
>>559219
>ее потенциальная "работа" доказывается как минимум существованием кучи искуственных видов
Ты в курсе, что евгеника - это селекция человека, а не каких-то диких видов пчел?
И чем же селекция человека отличается от каких-то диких видов пчел? Тезис в том, что евгеника, которую обозвали лженаукой, развития (или признания) не имеет и никогда не получит не из-за того, что это якобы лженаука, а исключительно из-за моральных ограничений. Просто потому что проводить селекцию человека неправильно, а не потому что она невозможна.
>И чем же селекция человека отличается от каких-то диких видов пчел?
Тем, что человек - это не пчела и не животное, что бы ни кукарекали макины школонигилисты. Человек - невероятно сложное уникальное существо, имеющее самосознание.
>Просто потому что проводить селекцию человека неправильно, а не потому что она невозможна.
Мораль и "правильность" можно не трогать вообще, селекцию человека проводить просто-напросто непрофитно. Никому, кроме поехавших, нахуй не нужен вид людей, дающих больше молока/тягающих большие веса/имеющих определенный внешний вид. Главное качество и ценность человека - это его интеллектуальные способности, которые определяются в первую очередь средой и опытом. И евгеника лженаука как раз поэтому - никто никогда не смог доказать, что ум это врожденное качество.
> С таким подходом легче сразу верить в бога, распределяющего ум и талант, что ты какими-то мелочами загоняешься.
Я не верю во всякие христианства и персонифицированных хуеботин с магией, но во что-то типа устройства вселенной от спинозы да. (Альберт Эйнштейн кстати тоже тяготел к спинозе)
Атэизм это признак высокоуровневого функционального скудоумия (это значит ты умеешь жить в обществе и с виду не дурак, но интеллекта у тебя нет)
> Жидорептилоиды в жопу говна заливают и не дают исследовать/публиковать, я понял, шиз.
Ты ебанулся? Рассовые исследования/вопросы запрещены практически везде.
> Нет, дурачок, я говорю людям, что при желании и старании у них есть все возможности добиться чего-то в жизни.
Это глупость, стоит принять во внимание хотя бы стартовые условия.
Не все могут быть руководителями корпораций или президентами.
Желания и старания недостаточно в этом мире.
> Это обычный принцип, на котором построены все без исключения успешные сообщества в сегодняшнем мире
Успешные сообщества построены на рабовладении.
>и работает он охуенно, в отличие от твоего "боженька порешал при рождении".
И работают успешные сообщества сегодня на скрытом рабстве (например финансовом).
Ты не понимаешь реальных принципов стоящих за функционированием современной цивилизации.
>>559348
В шведяшке или нигерландах кстати и проводили селекцию после второй мировой, поэтому они там более одинаковые и здоровые чем в остальной европке.
>>559353
>Человек - невероятно сложное уникальное существо, имеющее самосознание.
Бля какой же ты слюнтяй госпади, говорящие цитатки из ВК.
> И евгеника лженаука как раз поэтому - никто никогда не смог доказать, что ум это врожденное качество.
Опять же эти исследования незаконны сегодня.
Второе цель евгеники это не ум.
> Главное качество и ценность человека
Адекватность. Ты кстати не обладаешь этим качеством.
Ты так хочешь казаться хорошим мальчиком, аж до приторности.
> С таким подходом легче сразу верить в бога, распределяющего ум и талант, что ты какими-то мелочами загоняешься.
Я не верю во всякие христианства и персонифицированных хуеботин с магией, но во что-то типа устройства вселенной от спинозы да. (Альберт Эйнштейн кстати тоже тяготел к спинозе)
Атэизм это признак высокоуровневого функционального скудоумия (это значит ты умеешь жить в обществе и с виду не дурак, но интеллекта у тебя нет)
> Жидорептилоиды в жопу говна заливают и не дают исследовать/публиковать, я понял, шиз.
Ты ебанулся? Рассовые исследования/вопросы запрещены практически везде.
> Нет, дурачок, я говорю людям, что при желании и старании у них есть все возможности добиться чего-то в жизни.
Это глупость, стоит принять во внимание хотя бы стартовые условия.
Не все могут быть руководителями корпораций или президентами.
Желания и старания недостаточно в этом мире.
> Это обычный принцип, на котором построены все без исключения успешные сообщества в сегодняшнем мире
Успешные сообщества построены на рабовладении.
>и работает он охуенно, в отличие от твоего "боженька порешал при рождении".
И работают успешные сообщества сегодня на скрытом рабстве (например финансовом).
Ты не понимаешь реальных принципов стоящих за функционированием современной цивилизации.
>>559348
В шведяшке или нигерландах кстати и проводили селекцию после второй мировой, поэтому они там более одинаковые и здоровые чем в остальной европке.
>>559353
>Человек - невероятно сложное уникальное существо, имеющее самосознание.
Бля какой же ты слюнтяй госпади, говорящие цитатки из ВК.
> И евгеника лженаука как раз поэтому - никто никогда не смог доказать, что ум это врожденное качество.
Опять же эти исследования незаконны сегодня.
Второе цель евгеники это не ум.
> Главное качество и ценность человека
Адекватность. Ты кстати не обладаешь этим качеством.
Ты так хочешь казаться хорошим мальчиком, аж до приторности.
>Атэизм это признак высокоуровневого функционального скудоумия (это значит ты умеешь жить в обществе и с виду не дурак, но интеллекта у тебя нет)
Тупее хуйни не слышал, но мне даже интересно, как ты будешь оправдываться за ученых-атеистов. У них тоже интеллекта нет, просто притворяются?
>Рассовые исследования/вопросы запрещены практически везде.
При чем тут раса, ебанутый, исследования о врожденном IQ и его наследовании никто никогда не запрещал, можешь приносить и показывать.
>Это глупость, стоит принять во внимание хотя бы стартовые условия.
Куда ты жопой виляешь, речь о врожденных способностях/талантах.
>Успешные сообщества построены на рабовладении.
Назови хоть одно. На кукарек "США" я тебя сразу же обоссу и укажу на то, что США стали сверхдержавой как раз после отмены рабства, так что постарайся лучше.
>И работают успешные сообщества сегодня на скрытом рабстве (например финансовом).
Опять скрытые жиды в жопу говна заливают и не держат тебя в рабстве, я понял. Таблетки-то выпил?
> Тупее хуйни не слышал, но мне даже интересно, как ты будешь оправдываться за ученых-атеистов. У них тоже интеллекта нет, просто притворяются?
Я не говорю про учёных-атеистов (потому что ты не учёный в частности), а про обычных хуёплётов-атеистов из ВК как ты.
Учёные-атеисты должны быть атеистами, чтобы противостоять засилию церкви в умах быдла. Тут у меня нет претензий, пусть они даже от всего сердца верят в атэизм (который тоже является верой, хоть и скрытой).
> При чем тут раса, ебанутый, исследования о врожденном IQ и его наследовании никто никогда не запрещал, можешь приносить и показывать.
Это подпадает в канву о расовых исследованиях, никому не хочется лишаться поста за такие исследования.
> Куда ты жопой виляешь, речь о врожденных способностях/талантах.
Речь о том чтобы вкатиться в программирование и том что это не для всех доступно, по множеству причин.
В том числе и потому, что интеллектуальные способности и предрасположенности у всех разные. Как и личные предпочтения.
> Назови хоть одно. На кукарек "США" я тебя сразу же обоссу и укажу на то, что США стали сверхдержавой как раз после отмены рабства, так что постарайся лучше.
Угу, сразу после отмены))) Легко становиться сверх-державой на костях рабов.
> Опять скрытые жиды в жопу говна заливают и не держат тебя в рабстве, я понял.
"Если я чего-то не вижу, то этого нет. Если чего-то не понимаю, то и понимать нечего."
Ты слюнтяй.
>Если я чего-то не вижу, то этого нет.
Если какую-то вещь видит только определенные люди, и при этом не могут предоставить никаких доказательств к ее существованию, кроме анекдотических, то в практическом смысле этой вещи не существует. Ну как бог, призраки, магия, определение способностей к программированию при рождении и прочее. Но ты уже окончательно скатился в шизу про невидимых жидов-капиталистов и про кости рабов под сша, так что можно заканчивать.
Какие доказательства тебе нужны валенок блядь?
Ты видишь горы программистов вокруг?
Я имею в виду талантливых программистов.
Ты видишь надёжные и безопасные ОС без единого бага?
Идеально работающее ПО?
С чего ты вообще решил что все рождаются идеально одинаковыми-то?
Мозг это такой же орган и он у кого-то слабее, а у кого-то сильнее, просто потому что необходимые для работы мозга, например, нейромедиаторы вырбатываются у всех по-разному.
Какие тебе доказательства выблядок надо?
Чтобы на пабмеде была написана статья конкретно для >>559361 на дваче, который мнит себя учёным?
Каждый день на улицах доказательства ходят, мама мия, ему доказательства нужны.
А ну и опять же, ты даже не понимаешь разницы между приписыванием слов кому-то тех или иных качеств (как ты приписываешь мне сказки про жидов) и объяснением логики мышления (когда я говорю что ты хочешь себе и другим казаться лучше чем ты есть).
Евгеника не может быть ЛЖЕНАУКОЙ по определению. Это вообще, не наука, а прикладная дисциплина от генетики, подобно тому, как дата-саенс - прикладная дисциплина математики. А как невозможность доказательства врожденных умственных способностей отрицает евгенику - вдвойне непонятно. Ты - шизло. Не сри в тред своей бакалаврской мудростью, сидишь круды ковыряешь - ковыряй.
Просто не знаю на каком основании ты отрицаешь умственную врожденную предрасположенность к определенному виду деятельности. Какие есть данные, чтобы утверждать это или отрицать? Например для спорта высших достижений предрасположенность просто наглядно демонстрируется. Там отбор делается с детства, когда казалось бы все должны быть на равных. Хоть ты обтренируйся ты не сможешь бегать на длинные дисанции 20 км/час - у тебя биохимия крови не позволит в нужном количестве кислород к тканям подгонять или в приседании 240 кг поднять
В спорте высших достижений отбор проходят миллионы кандидатов, а на выходе из них получается один Роналду и еще пара десятков человек с ним ним на уровне. И без того очевидно, что в их рекордах есть какая-то доля, обусловленная врожденными особенностями организма (строение ног, биохимия крови, форма залупы, длина пальцев, ты понял), но и огромный срез спортсменов, так же обладающий похожими врожденными качествами за всю так и не достигает даже близких к ним результатов (или эквивалентных в нишах, релевантным своим "врожденным особенностям"), откуда мы и можем придти к заключению, что методология, дидактика, упражнения, хардворкинг и прочая нудная параша имеет свой вес (лично я подозреваю что намного бОльший, чем врожденные особенности) в достижении успеха.
Это обсуждение, бля, ну это ваще полная хуйня. Научный метод после выведения гипотезы из эмпирического опыта подразумевает ее проверку, а нам ее кроме как на других полученных путем эмпирики данных не проверить.
Все, возвращаемся круды шлепать на рельсе и ждем шестую.
>Просто не знаю на каком основании ты отрицаешь умственную врожденную предрасположенность к определенному виду деятельности.
Потому что ее никто никогда не смог доказать, хотя попыток было дохуя? Это пиздец какая старая идея, что способности человека предопределены с рождения, и она постоянно не проходит испытание практикой. Дети из низших слоев общества спокойно могут учиться наравне с элитой, если им дать такую возможность, негры могут учиться наравне с белыми, гуманитарии могут научиться программированию и математике и т.д. Скорее вопрос, на каком основании ты вообще решил, что с рождения кто-то лучше жмет по кнопкам, а кто-то лучше сочиняет стихи. Хочешь плодить лишнюю сущность просто так - доказывать нужность и правильность этой сущности придется тебе, а не кому-то еще.
>Например для спорта
Мощно ты конечно сравнил тягание килограммов с высшей нервной деятельностью.
Опять всё в одну кучу свалил, чтобы увести обсуждение в сторону.
В данном обсуждении я не утверждал что негры хуже белых.
Биохимия мозга, количество нейронов, инсулиновый баланс.
Ты-то почему не можешь смириться с тем что просто тупо мозги у людей разные?
Множество людей с трудом могут контролировать свой вес и вообще жить рационально, контролируя свои желания. Что опять же также зависит от многих факторов развития мозга.
Если кому-то, специально, дать возможность, провести за руууучку, потратить на них время и деньги, одним словом вуман ху код.
А кто-то сам берёт и делает и ему это в 1000 раз легче.
Олсо, никто не говорил что способности определяются с точностью до специальности (как ты снова узколобо пытаешься манипулировать говоря о клавишах и стихах, и ты ведь даже не понимаешь как тупо это со стороны выглядит), но развитие тех или иных отделов мозга, даёт человеку возможность преуспеть в той отрасли которая отпечатается в его сознании в ходе взаимодействия со средой.
>никто не говорил что способности определяются с точностью до специальности
Разумеется, определяются они не так, но как - никто не знает, просто тебе так кажется, примерно почувствовал. Еще раз - сущность плодишь ты, ты и доказывай, что она имеет какое-то практическое влияние на реальный мир, которое можно измерить. Либо доказываешь, что одни рождаются со способностями к программированию и легко выучат его за месяц, а другие не рождаются и им нет смысла даже пытаться, либо идешь нахуй со своими антинаучными маняфантазиями.
Каждое твоё слово в этом посте это какой-то штамп, все вот эти "плодишь сущности", эти гротески про "выучить за месяц".
Речь изначально вообще шла про то, чтобы прокормить себя программируя на руби, в россии.
Если ты родился маленьким жирным карликом, то балериной тебе не стать, сорян.
Десять лет назад никто не знал о механизмах старения организма, а сегодня разрабатывают передовые техники для сохранения теломер и предупреждения других факторов.
Некоторые люди рождаются с лучшими генетическими характеристиками тех или иных систем организма. Если это не научились измерять, это не значит что этого нет.
И пять же есть реальность, которую мы все наблюдаем и феномены, которые не имеют научного объяснения в силу ряда причин.
Смысл попытаться есть конечно, но у тебя только 60-70 лет жизни.
Возможно стоит попытаться делать, то что тебе лучше даётся, а программирование оставить в качестве хобби.
Нет, дружочек, хуйню пока придумываешь только ты. Сначала затирал про спортсменов, потом про вес, потом про старение. Ты понимаешь, насколько глупо эту звучит, когда у тебя нет доказательств и ты пытаешься их придумать через смешные аналогии уровня "процент жира в организме у всех разный, а значит способность к обучению определенным навыкам тоже"? Ладно ты был бы просто плодящий сущности верун, но ты еще и лезешь к бедным вкатывальщикам со своей шизой "не получается написать хеллоу ворлд с первого раза? ну наверное программирование это не твое, способностей врожденных нет, я конечно их измерить не могу, но примерно почувствовал и за тебя решил, что тебе не стоит программированием заниматься". Чем ты отличаешься от средневекового попа, который затирает крестьянскому ребенку про то, что тому не стоит учиться читать, потому что бог так решил и крестьяне должны поля пахать?
Да, все люди в мире могут одновременно быть президентами или главами своих транснациональных корпораций. (раз уж ты так любишь преувеличения)
Занимайся чем хочешь слюнтяй, я тебя не отговариваю.
я много психологии читаю, и ютуб начал мне подсовывать ролики известного на западе психолога джордана питерсона
там в одном видео он утверждает что есть контора которая интеллекту сопоставляет профессию так вот по утверждению этой конторы ПОЛОВИНА населения непригодна к какой либо работы
для них из за их тупизны просто нет профессии
и 10 процентов негодны даже в американскую армии
интересно было бы посмотреть как это контора все считает
но если эти данные правда то мир выглядит совсем по другому
Звучит как пиздежь.
Или там работы уровня ракетостроения.
Уборщиком в макдак, кассиром в мелкий магаз, курьером и ещё дохуя каких работ, которые может осилить любой васян без образования.
>по утверждению этой конторы ПОЛОВИНА населения непригодна к какой либо работы
15%, а не 50% - https://youtu.be/fjs2gPa5sD0?t=302. И не половина населения, а 15% населения которая имеет IQ <= 85.
Незаконно нанимать человека в армию США с IQ меньше 83 - https://youtu.be/fjs2gPa5sD0?t=354 . 10% населения (США видимо) имеет IQ <= 83.
Официально в США нельзя проводить IQ тесты и на основе результатов этих тестов нанимать или не нанимать человека на работу. Компании, которые разрабатывают подобные тесты хитрят и называют эти тесты не IQ-тесты, а General Cognitive Ability Test. Суть одна и та же, а названия разные.
фифти фифтин
понял
надо было субтитры включить
так из 15 процентов может получится уборщик в макдак или нет?
Ну и вот тебе рассказ о клиенте Питерсона, у которого был очень низкий IQ - https://youtu.be/AlwDuaWuMcY?t=146 .Человек испытывал проблемы со складыванием писем в конверты.
> Абсолютно любой "гуманитарий" может научиться физике, программированию, математике.
ну тогда это утверждение очевидно не верно
Таймкод проебался - https://www.youtube.com/watch?v=fjs2gPa5sD0&feature=youtu.be&t=302
Разве что уборщиком работать и то наверное будут проблемы. Вот тут история про человека с IQ примерно равным 80 - >>559789
Нет никакой "предрасположенности" к техническим или гуманитарным дисциплинам. Если у тебя достаточный показатель IQ, то ты с легкостью затащишь технические специальности и будешь хорошо шарить в математике и физике.
Есть книга - https://www.amazon.com/Mind-Numbers-Science-Flunked-Algebra/dp/039916524X . Где человек рассказывает как будучи "гуманитарием" уже в довольно взрослом возрасте затащила PhD по матеше.
Блядь тупая ты пидорасина, никто не говорит про предрасположенность к гуманитарности или математичности тупая ты хуесосина блядь!
Тут всем и так это давно очевидно.
Тупая ты шаблонная ослина, тут все это понимают.
Речь об интеллектуальных способностях в принципе.
Бляд ещё с древних времён есть расхожее "талантливый человек талантлив во всём".
Ты опять картинок в ВК про полушария мозга персмотрел где на одной стороне красивая природа, а на другой квадратные небоскрёбы?
Сука как бесят и злят такие ушлёпки госпади.
Да-да, ты-то у нас зато защитил докторскую по картинкам ВК.
>Ты видишь надёжные и безопасные ОС без единого бага?
>Идеально работающее ПО?
долбоеб? долбоеб
Угу, ещё злобные кремлеботы у всех ВОЗМОЖНОСТИ отбирают, чтобы выучить программирование на руби и вкатиться без опыта на должность архитектора.
Их шпионы, а наши разведчики.
У них теории заговоров, у нас объективная оценка.
Угу-угу.
Го. Без поддува большой корпорации эликсир никуда не взлетит.
Юзай элик для души или если ты рубист уже в команде завязанной на эликсир.
Ваши аргументы не аргументы, ррррряя, можно ссылку на lgbt.org где сказано что люди не равны! ррррряяяяя
Слюнтяй, педрила, бака, скебе, коноярро!
Поскольку руби японский язык, традиционные ценности в этом треде почётнее, чем твои мурзиклки про идеальный мир
https://www.youtube.com/watch?v=qObzgUfCl28
Руби как раз взлетел чисто на коммьюнити, без ссаных гугломайкрософтов. Я бы даже сказал, это была одна из причин его взлета. А у эликсира кроме руби корней еще есть охуенный эрланг за спиной, в котором все фичи из го использовались в продакшене еще когда сам го у бати в яйцах сидел. Ну и будущее уже прочно за динамикоязыками, вялое возобновление дроча на статическую типизацию в последние годы вряд ли куда-то выльется, просто история смолток-джава-руби повторяется в виде фарса. Я бы не списывал эликсир со счетов так легко
У самих рельс главная проблема не в прожорливости если тебе важна прожорливость крудов, то ты вряд ли вообще туда зашел, а в том, что DHH не смог вовремя остановиться с магией и продолжил ею заливать рельсы как малафьей, в итоге из удобного экспрессивного фреймворка, который можно интуитивно освоить за несколько дней и начать клепать круды, получился ебаный монстр, пытающийся угодить вообще всем. А в чистом руби по сравнению с какими нибудь пхп-питонома в производительности разницы особо нет, это не цель таких языков.
да
DHH бывает говорит умные вещи, но потом как просрется про мертвое ТДД или про фак ю в ответ на просьбы перестать самодурствовать и срать в рельсы своими охуительными идеями, против которых выступают 99% пользователей этих самых рельс. Ну и понятное дело, что он будет до последнего агитировать за свой фреймворк любыми способами, это его бизнес.
Проблема рельсов не в стоимости серваков, это он лукавил. Проблема рельсов в скорости разработки и поддержки высоконагруженных сложных систем - это дольше и сложнее прогать. Впрочем, это не означает, что следует бросаться переписывать все и вся, дропая команду разработки
Интересная цель.
>поддержки высоконагруженных сложных систем - это дольше и сложнее прогать
это вопрос квалификации инженера, как уже выше писали и как показывает практика - руби и рельса вполне позволяют строить масштабируемые высоконаргуженные программы.
>по сравнению с питоном
Наркоман, сравнивать руби с самым популярным языком общего назначения, который еще и используется в вузах при этом?
Сравнивать можно.
>Что должен знать джун-рельсовик в 2020?
Всё то же самое, что и мидл, но с поправкой на отсутсвие опыта.
С поправкой на то, что не знать (учить у себя дома попутно смотря аниме), а работая на реальной работе в офисе.
Ruby on Rails interview questions в Гугле. Меня некоторые вещи оттуда спрашивали, помимо вопросов про прошлый опыт и паттерны программирования
> Ruby on Rails interview questions в Гугле. Меня некоторые вещи оттуда спрашивали, помимо вопросов про прошлый опыт и паттерны программирования
А какие вообще паттерны обычно используются именно в реальных рельсо-проектах? Можешь рассказать что-нибудь про свой опыт?
Плюс-плюс. Тоже интересно. Что-то и сам знаю, но не владею пониманием общей картины, так сказать.
Если это не праздный вопрос, а серьезный, то я просто про декоратор рассказал и про фабрику. Но я на Джуна шел с почти нулем опыта.
К слову, эти общие вопросы не были чем-то важным, их так, для галки походу спросили. Уже более прикладные рельсовые долго спрашивал тех.специалист
В руби/рельсе
А почему ушёл из фронта? Просто интересно
Я в подобной ситуации хуй забил на тех, кто предлагали НЕМНОЖЕЧКО ПОДОЖДАТЬ и прийти через 40 лет повторно, и хуй его зная, будет ли в тот момент вакансия эта. Только у меня наоборот было, там на сишарп не приняли, в итоге я в руби попал.
В смысле как обычно используются?
В обычных проектах не очень много паттернов ты лично видишь, особенно если ты пиздюк, но они есть.
Например Singleton - используется всюду, например во всех твоих моделях ака ActiveRecord::MyModel.find(id) вызывается инстанс метод find синглтон обекта MyModel.
Или MVC - model view controller.
Или сам ActiveRecord - это название паттерна обращения с источником данных и по дефолту используется именно он. Более того я не видел нигде, кроме тупых статеек на медиуме, использование других паттернов. Везде пихают ActiveRecord и норм.
Или фабрики. Ну тут просто. Когда тебе хочется получить экземпляр объекта, но этот объект достаточно сложен для создания и тебе впадлу всю эту сложность здесь и сейчас применять. Тогда ты делегируешь созданием объекта фабрике и от нее получаешь готовый объект. Или абстрактной фабрике - и тогда ты от абстрактной фабрики получаешь нужную тебе фабрику, чтобы получить нужный тебе объект.
Да пошли их нахуй. Будут все время держать тебя в чувстве вины, платить мало, ебать много
Кстати последнее время на том же медиуме натыкаюсь на статьи и идеи как раз о том, что тдд мертв. Это откуда вообще?
Вот это история с ерлангом, otp, ets и прочим и привлекает в эликсире, помимо пайпов в def, конечно...
@dhh педалирует это
Бля, ну ебам, я что-то вообще не удивлен
болезнь
Что коллеги рубисты думают о Crystal?
Понимаю, что ему будет сложнее взлететь, как какому-нибудь Go, и вообще ситуация сложная в плане конкурентов, но классный же язык.
Годнота всяко лучше эликсиро-говна, но шансы на взлет почти нулевые, если каким-то чудом не найдется именитого спонсора.
> шансы на взлет почти нулевые
Вот это очень обидно, да.
А чем плох Эликсир?
Ведь в нём от Руби только синтаксис и имена для модулей стдлиба. По факту это Эрланг - абсолютно другой язык. Кристал всё-таки ближе к Руби.
залетный
Не застал уже руби, когда вкатился полностью, но во времена бума стартапов, на нём все писали прототипы каких-либо проектов. Затем получали деньги (обычно находили спонсоров) и доделывали проект до полного продакшна.
Плюсы: быстро, легко, недорого, модно (на тот момент)
А сейчас то ли стартапов стали меньше выкатывать, то ли мода сместилась на ноду, хз даже, но руби как-то угасает потихоньку для многих. Хотя вакансий всё ещё довольно много, платят хорошо даже совсем начинающим.
Сам язык очень приятен в освоении (имхо, он даже приятнее питона многими моментами). Хотя тут всё субъективно.
Лучше относись к любому языку, как просто к инструменту решения задачи.
Если бизнесу нужно быстро выкатить прототип чего угодно, то разумно выбрать язык, который очень быстро позволит это сделать, а ещё было бы замечательно, чтобы можно было сэкономить денег на этом языке из-за перегретого рынка и большого кол-ва макак соответственно.
Почему же? Наоборот, конкуренты - такие же как ты вкатывальщики в новый ЯП мидлы/синьоры - джуны не изучают еликсир, им это ни к чему.
Отлично, по двачу можно выбрать язык в который вкатываться. Меньше быдла, больше денег.
ASM наше все
Если у тебя знаний ноль, то не важно какой язык ты выберешь.
>>531807
Видео с Московского Ruby Meetup #11
https://youtu.be/YTOFFt8SPBE
https://youtu.be/gFHwZ7ipSSU
https://youtu.be/WywsoH0kRCU
Что на работе выдали, тем и пользуюсь. В нашем мухосранском филиале у всех линукс. В Москве кто на что горазд, примерно поровну линукса, макоси и (!)винды
хотеть
но дорого
и сука ссыкотно отдать 200+ за ноут с высоким риском заебаться с ремонтом
#мухостранскиестрадания
Пока работал в офисе, работал на том, что дают.
Два раза из трёх выдавали макбук
Но как ушёл на долларовую удалёнку, пришлось купить.
Минусы обладания собственным:
- устаревание (скорее внешнее, моральное, чем техническое) кому не жалко денег, меняют раз в два-три года, а ты сидишь на позапрошлом, пока часть друзей купили новых
- ремонт/обслуживание
Вот-вот, ремонт.
Мало того, что я отдам за него мнохаденех, так за эти деньхи он еще весьма вероятно будет ломучим говно. Так в моем мухосранске еще и нет официального сервиса.
А что народ в этой вашей Москве юзает, РубиМайн?
>так за эти деньхи он еще весьма вероятно будет ломучим говно
Это вряд ли, пользуюсь макбуками с 2011 года, ни один из них не был ломучим говном.
Но я к тому что, пока что-то современное и приличное выдают на работе (если не стационар), нет смысла брать свой макбук, чтобы он лежал в ящике и устаревал.
>А что народ в этой вашей Москве юзает, РубиМайн?
Ну как обычно: RubyMine, vim, Visual Studio Code
Я вот тоже думал, что взять, в итоге взял ноут dell, накатил debian с тайловым десктопом, удобно, недорого, железо мощное, макбуком пользовался у товарища, и что-то он меня не впечатлил, слишком много ненужной хуйни в нем.
Почему вообще макбуки так популярны среди разработчиков? Просто "я сеньор 300к могу себе позволить"?
homebrew + долго держит зарядку + удобно с собой носить (как ультрабук от других производителей, но нет проблем уровня линукс не так встанет — аккумулятор будет садиться в два раза быстрее, fn-кнопки не подцепятся, яркость не получится регулировать или ещё какая линукс-проблема)
Использую с RSpec.
Например, в тесте код:
expect(page).to have_content "something"
Если на странице нет "something", то капибара будет ждать этот контент очень долго.
Как сократить время?
Ты троллишь тупостью, ебантяй? Пиздуй руби учить, а не хуйню спрашивать
+++
Хороший вопрос кстати.
И пары-тройки хватит. Не понимаю, что там сложного.
Дык это компании, которые на хайпе вкатились в эликсиростек пару лет назад, понаписали на нем кучу всего и теперь не знают, что делать, потому что хайп прошел, спецов на элике нет, приходится брать кого угодно с улицы.
Жду элексирошизика, который тотально разьебет руби с рельсами и обоснует почему элексир по всем фронтам лучше, чем любой динамически типизированный язык
Не, я про руби, а не эликсир.
Потому что в нём потрясающе реализовано concurrency. Даёт пососать чему угодно.
У меня есть две модели, User и News. Сделал join-табличку для many-to-many через миграцию, в обоих моделях прописал has_and_belongs_to_many, как в этой статье: https://www.sitepoint.com/master-many-to-many-associations-with-activerecord/
Теперь я хочу при создании новости добавлять к ней тех пользователей, которые к этой новости относятся, то есть в той же форме как-то делать записи в мтм-табличку. Я уже научился это делать через консоль, но хочется чтобы форма тоже с этим справлялась. Как мне быть?
Можно прямо в контроллере news_controller в экшне create, но это не Rails-way. Лучше в модели News с помощью коллбэка after_create. А еще лучше - в модели определяешь соответствующий метод с нужной логикой и вызываешь его в контроллере в create, чтобы было нагляднее.
видел такую фичу в rails_admin, там в форме два списка, в перовм ассоциированные пользователи, во втором все доступные, и из доступных можно перекидывать в ассоциированные, далее форма просто постит id пользователей из первого списка, а в контроллере уже что-то вроде User.where(id: params['user_id']).each {|u| u.news << selected_news }
>User.where(id: params['user_id']).each {|u| u.news << selected_news }
Ууу, бля, за такое на любой нормальной работке убивают нахуй.
Вот да.
>Отдельный INSERT в базу для каждого юзера вместо insert_all
>each вместо find_each
>Бизнеса логика в контроллере
>в чем проблема-то?
Мы вам перезвоним.
>Отдельный INSERT в базу для каждого юзера вместо insert_all
Ты же в курсе, что insert_all не вызывает коллбеков и не проводит валидаций?
>each вместо find_each
И сколько там batch_size по дефолту? 1000? Я сомневаюсь, что у него больше 1000 пользователей в базе за раз будут получать ассоциацию с новостью, а иначе это не принесет никаких профитов.
>>Бизнеса логика в контроллере
Что ты тогда вообще предлагаешь делать в контроллере? Дергать модель на каждый чих? Как по мне, так это именно в моделях код превращается в кашу и требует какой-то организации, а не в контроллерах.
>Ты же в курсе, что insert_all не вызывает коллбеков и не проводит валидаций?
Да. Использование коллбеков в любом случае зашквар. Если прямо нужны валидации можно использовать activerecord-import, но обычно у записей в join table у many to many их нету.
>И сколько там batch_size по дефолту? 1000?
В данном случае ты прав, но лучше взять за правило всегда его использовать, как по мне.
>Что ты тогда вообще предлагаешь делать в контроллере? Дергать модель на каждый чих?
Service object, бизнес логики не должно быть ни в контроллерах, ни в моделях.
>Да. Использование коллбеков в любом случае зашквар
ну да, вместо обычного коллбэка для нотификации пользователя о новой новости будем всё гонять через еще одну абстракцию, при том, что рельса дает полноценно использовать ООП через STI, мне вообще непонятно, чего такого можно поместить в Service Object, чего нельзя было бы просто реализовать наследованием и миксинами.
>бизнес логики не должно быть ни в контроллерах, ни в моделях.
Можешь подробнее про это? Сам пишу бекенд только на ноде, но думаю архитектура схожая. Есть папка с контроллерами, есть с моделями. В моделях все очень чисто, в контроллерах куча логики. Ты имеешь в виду что надо всю логику оборачивать в функции, держать их отдельно, а в контроллерах отрабатывать request (получать параметры запроса) -> передавать параметры в функцию, в которой лежит бизнес-логика и вызывать её, ну и в конце отправлять response? Просто не понятно, как ответ формировать, в логике ведь много вариантов ответа в зависимости от условий, это тогда надо объект res тоже передавать в функциию с БЛ, это же ещё более стрёмно получается.
>в логике ведь много вариантов ответа в зависимости от условий, это тогда надо объект res тоже передавать в функциию
а нахера возвращать данные разных типов в зависимости от условий, разве от такого логика и на клиенте не превратится в кашу?
а если тип не разный, то и потребности такой не возникнет
https://surveys.jetbrains.com/s3/a2-developer-ecosystem-survey-2020
я думаю речь о том, что при формировании ответа, например, для таблицы, нужно учитывать такие вещи как пагинацию, сортировку, фильтры, учитывать какие-то атрибуты из профиля пользователя, уровни доступа, проводить агрегацию каких-то данных для вьюхи и прочее прочее, перенося логику из модели/контроллера в сервисный объект мы прячем код в черный ящик, который вынужден принимать все аргументы, вместо того чтобы докомпозировать логику в консерны и включать в необходимые модели.
Рубимайн купить себе не могу.
Без IDE кодить не ОК как-то.
Слушайте, ребята, вот в шапке почти что четыре книги для изучения руби, это извините меня охуеешь какой объем читать, при том, что когда рельсы то учить? По какому плану прокачивались до джунов?
Руби джун это тот кто в других языках уже на уровне мидла.
Руби джун это перекатывальщик на руби-стек.
Язык изучается неделю.
Месяц рельса.
Работа по знакомству.
Руби это блатной язык, работа по знакомству, так можно про любой другой стек сказать, или опять суровая действительность, что джун это мидл за меньшие деньги?
1. Разве может быть несколько юзеров с одним id? find вместо where
2. news - ассоциация? n+1, надо прелоадить (хотя юзер у тебя один, как сказано в пункте 1)
3. Про бизнес логику и find_each уже сказали (хотя последний не актуален опять же тк у тебя один юзер). Контроллер - это заголовки, параметры и дерганье объектов, да. А бизнес логика должна бть и не в моделях, а в сервисных объектах.
>вместо обычного коллбэка
Ты и не заметишь, как эти "обычные колбэки" разрушат поддерживаемость кода и мораль команды
Ты передаешь туда все, а уже внутри осуществляешь разделение. Сервисный объект может вызывать много сервисных объектов, прикинь? А контроллерам оставь вещи попроще аля код ответа
ActionView::Template::Error (undefined method `pathname' for #<#<Class:0x0...>
Возникла, когда пытался поднять версию руби и рельс. Откатывать назад не вариант.
>1. Разве может быть несколько юзеров с одним id? find вместо where
Речь шла про множество пользователей, форма отправит PUT-запрос с полем "user_ids" => [1, 2, 3], where(id: user_ids) выполнит что-то вроде where user.id IN [1, 2, 3] - одним запросом.
>2. news - ассоциация? n+1, надо прелоадить (хотя юзер у тебя один, как сказано в пункте 1)
Не надо ничего прелоадить, новость уже загружена, юзеры дернутся одним запросом, N+1 там на INSERT в ассоциирующую таблицу, далеать быстрый bulk insert или медленный со всем рельсовым обвесом - уже из конкретной задачи нужно смотреть, от количества этих самых инсертов, и как по-мне, так это преждевременная оптимизация чистой воды.
>Ты и не заметишь, как эти "обычные колбэки" разрушат поддерживаемость кода и мораль команды
Могу в это поверить, недавно экспериментировал с коллбэками и инвалидацией кэша в редис, всё это достаточно мудово поддерживать, но медленный инсерт и работа с кэшем в коллбэке компенсируется нулевой задержкой на последующий доступ к данным.
бурное обсуждение.
поток скринов с кодом,обсирание этого кода.
вопросы по теории и пр.
но так как это язык не для вкатывальщиков с нуля(в отличие от пхп и жс),то тут и тухло
В глаза ебешься.
Сейчас на проекте используется s3. Нужно заменить на GCS.
Будут ли использоваться те же пути и префиксы для имэджей?
Если я переведу весь проект и контент хранилища на Google Cloud Storage, останутся ли в рабочем состоянии картинки?
Rails 4.1.8/4.2.8
Побьется всё нахуй
Особенно интересн этот момент с подключенным turbolinks'ом.
Еще вопрос про stimulus.js, кто-нибудь юзал? Хотелось бы нормально оформить весь js, и при этом не подключать монструозный реакт или что-то такое.
>он умер это так
Какой главный признак мертвой технологии?
Она не поддерживается и не дает своим пользователям современных решений.
Руби обновляется? Да, обновляется.
Полезные гемы пилят? Да, пилят.
Мне кажется на этом можно закончить с размышленями мертв/не мертв.
вопрос в популярности применения
Инвейдеры эликсира в рубитреде
Как вообще привлекать народ в эликсир, если даже в руби ориентир обучения и поиска работы сугубо рельсовый?
>Еще вопрос про stimulus.js, кто-нибудь юзал? Хотелось бы нормально оформить весь js, и при этом не подключать монструозный реакт или что-то такое.
Кароче нашел интересную штуку - StimulusReflex, серверный рендеринг через вебсокет с выборочным обновлением stimulus-компонента на странице, хорошо работает с турболинксом, буквально в пару строк на js можно сделать отзывчивый компонент со сложной логикой на бэке, выглядит очень интересно, особенно в контексте очистки проекта от js-говн без просадки по ux.
сделой
Турболинкс, стимулус и рефлекс - компоненты одной системы и интегрируются друг в друга, не требуя какой-то особой конфигурации, работа такого прилодения выглядит следующим образом:
- пользователь заходит на страницу, загружает js бандл и вьюху.
- включается турболинкс, он занимается кэшированием страниц на клиенте, дальнейшие переходы происходят через него, загружается только вьюха, без бандла, без инициализации js.
Если пользователь уже был на странице, тубролинкс открывает её из кэша и делает запрос к серверу, если контент с сервера отличается от кэша - контент и кэш обновляется, если ответ идентичен - ничего не происходит, для пользователя это выглядит как переход на страницу без всяких задержек и перезагрузки страницы.
- стимулус отслеживает появление на странице своих компонентов и проводит их загрузку, состояние компонентов задается через html-атрибуты тега и приходит с вьюхой.
- рефлекс посредсвтом атрибутов тега позволяет вешать на разметку различные сервер-сайд действия, события и позволяет делать partial reload по селектору.
Идеальный сценарий работы связки:
Пользователь нажимает на ссылку, турболинкс открывает готовую страницу из кэша - клиент-сайд, без задержек, пользователь производит рефлекс-действие, через вебсокет запрос ухдит на сервер, сервер генерирует вьюху, извлекает контент по запрошенному селектору и отправляет в вебсокет (передается не вся страница, только запрошенный фрагмент), рефлекс на клиенте получает контент и точечно обновляет DOM по селектору, если появляются новые stimulus-компоненты - происходит их загрузка.
Что имеем на стороне сервера:
- новая абстракция - reflex controller, разбирает параметры запроса из вебсокета и передает выполнение обычному контроллеру.
- дополнительыне атрибуты тегов во вьюхе.
на клиенте:
- турболинкс.
- стимулус контроллер с подключенным рефлексом.
клиент без какой-то особой конфигурации, состояние компонентов приходит с севрера в тегах.
Визуально работа связки не отличима от полноценного SPA на JSON API, однако по сложности - дефолт Rails MVC монолит с полноценными вебсокет-соединениями от клиентов, соотвественно, и возможностью бродкастить, инициировать обновления контента со стороны сервера, пинг и прочие фишки сокета.
Судя по всему буду целиком избавляться от JSON API и каши из js на клиенте в пользу сервер рендера в своей программе, это существенно всё упрощает.
Турболинкс, стимулус и рефлекс - компоненты одной системы и интегрируются друг в друга, не требуя какой-то особой конфигурации, работа такого прилодения выглядит следующим образом:
- пользователь заходит на страницу, загружает js бандл и вьюху.
- включается турболинкс, он занимается кэшированием страниц на клиенте, дальнейшие переходы происходят через него, загружается только вьюха, без бандла, без инициализации js.
Если пользователь уже был на странице, тубролинкс открывает её из кэша и делает запрос к серверу, если контент с сервера отличается от кэша - контент и кэш обновляется, если ответ идентичен - ничего не происходит, для пользователя это выглядит как переход на страницу без всяких задержек и перезагрузки страницы.
- стимулус отслеживает появление на странице своих компонентов и проводит их загрузку, состояние компонентов задается через html-атрибуты тега и приходит с вьюхой.
- рефлекс посредсвтом атрибутов тега позволяет вешать на разметку различные сервер-сайд действия, события и позволяет делать partial reload по селектору.
Идеальный сценарий работы связки:
Пользователь нажимает на ссылку, турболинкс открывает готовую страницу из кэша - клиент-сайд, без задержек, пользователь производит рефлекс-действие, через вебсокет запрос ухдит на сервер, сервер генерирует вьюху, извлекает контент по запрошенному селектору и отправляет в вебсокет (передается не вся страница, только запрошенный фрагмент), рефлекс на клиенте получает контент и точечно обновляет DOM по селектору, если появляются новые stimulus-компоненты - происходит их загрузка.
Что имеем на стороне сервера:
- новая абстракция - reflex controller, разбирает параметры запроса из вебсокета и передает выполнение обычному контроллеру.
- дополнительыне атрибуты тегов во вьюхе.
на клиенте:
- турболинкс.
- стимулус контроллер с подключенным рефлексом.
клиент без какой-то особой конфигурации, состояние компонентов приходит с севрера в тегах.
Визуально работа связки не отличима от полноценного SPA на JSON API, однако по сложности - дефолт Rails MVC монолит с полноценными вебсокет-соединениями от клиентов, соотвественно, и возможностью бродкастить, инициировать обновления контента со стороны сервера, пинг и прочие фишки сокета.
Судя по всему буду целиком избавляться от JSON API и каши из js на клиенте в пользу сервер рендера в своей программе, это существенно всё упрощает.
самый умный чтоли? нормальные шрефты поставить не догадался?
Дебианца порвало?
В целом норм, да, хоть и радуга. За ш3 отдельный респектос.
Ubuntu 18.04.4, Gnome 3( или что здесь). Может это из-за моего монитора, что имеет не Full HD разрешение. Сейчас вроде получше, но на почту Yandex зайти страшно, там просто вырвиглаз.
Так в самом фоксе шрифты выставь какие надо (можно те же, что и в системе).
Проект для управления своей музыкой на рельсах.
Все файлы треков/картинок треков/картинок альбома лежат на s3.
Во вьюхе есть что-то вроде:
.row
-@sounds.each do |sound|
.play{"sound-img": "#{sound.image.url(:small)}"}
...
Так вот на s3 есть не все нужные файлы, и для отсутствующих файлов вылетает ошибка undefined method 'public_url' for nil.
Как обработать такие ошибки для отсутствующих файлов, чтобы приложение не падало?
Сейчас прямо во вьюхе написал:
.row
-@sounds.each do |sound|
- begin
.play{"sound-img": "#{sound.image.url(:small)}"}
...
- rescue
Rescue оставил пустым, так приложение не падает, но только на этой странице, для других вьюх то же самое нужно будет прописать.
Но это какой-то хуёвый подход. Как сделать правильно?
можно использовать safe navigation operator - &.
sound.image&.url(:small) || 'not_found'
можно в модели Sound сделать геттер, который бы отдавал плейсхолдер если image == nil - вьюха будет почище.
Судя по твоему вопросу и тому где ты его задаешь, эластик тебе не нужен. Юзай pg_search/ransack. Затраты на поддержку эластика оправданы только в случае энтерпрайза средней крупности. Даже на ИМ с каталогов в 12-15к позиций он чаще всего нахуй не нужен. Нужны нормальные словари.
Да нет, нужен. Рансак уже и так используется, но эластик тоже есть.
Хрен знает, зачем я вопрос здесь задаю, впрочем :D
зачем он нужен, этот эластик, это же что-то для поиска?
Ещё украинский GitLab на Ruby с Vue.js на морде
Дополню к вариантам >>609230
begin/rescue тут не надо. Или сделай хелпер отдельный, или просто пиши в шаблоне if sound.image
Если хочешь по феншую, то можешь использовать паттерн NullObject:
https://thoughtbot.com/blog/rails-refactoring-example-introduce-null-object
Это копия, сохраненная 22 февраля 2020 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.