Вы видите копию треда, сохраненную 17 февраля 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Предыдущий тред героически тонет здесь: https://2ch.hk/pr/res/1612194.html (М)
Arhivach: https://arhivach.ng/thread/561709/
ИЗУЧЕНИЕ ЯЗЫКА
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
Q: Есть ли чат в Telegram?
A: @rubylang | @pro_rb | @saintprug | @moscowrb | @ruby_talks | @ruby_random
https://www.youtube.com/watch?v=9JEEabL90AA
https://vc.ru/tech/135241-apple-posovetovala-hey-izmenit-prilozhenie-chtoby-ostatsya-v-app-store-servis-obvinil-kompaniyu-v-dvoynyh-standartah
Ну, кто не в курсе, там DHH решил не останавливаться на Basecamp и делает почтовый сервис.
https://hey.com/how-it-works/
Чо там по руби 3.0 слышно ? Матц обещал что в конце 2020 выйдет.
Из того что завезли в новых версиях:
Compacting GC с которым рубя потребляет аж на 1% меньше памяти https://engineering.appfolio.com/appfolio-engineering/2019/12/6/how-much-do-you-save-with-ruby-27-memory-compaction. Ну ещё добавили jit но опять же текущая реализация даёт просто смешной прирост в производительности.
В остальном же добавляют какую-то минорную хуйню типа алиаса Kernel.then на yield_self. Пиздец а сразу когда впиливали фичу с именем не могли определиться ? И так жопа горит от всяких алиасов вроде collect и inject , спорного паттерн-матчинга который толком не обсуждался и получил справедливо много негодования от сообщества.
Что-то подозрительно мало новостей о обещанных фичах, где новости о типизации внутри языка, настоящую многопоточность через гильдии (guilds), быстрой jit-компиляции(а не как сейчас)?
НЕУЖЕЛИ ВСЕ?
Что за мания ждать каких-то новых фич, когда и так все работает? Проблема производительности стоит все менее и менее остро с каждым годом, а скорость разработки наоборот становится важнее.
Если хочешь еженедельных фич и фреймворков,то перекатывайся лучше в жс.
Руби не для тебя.
>Compacting GC с которым рубя потребляет аж на 1% меньше памяти
Смысл Compacting GC не в уменьшении потребления памяти, а дефрагментация кучи. Чтобы долгоживущие процессы не сталкивались с проблемами нехватки непрерывного куска памяти.
для Ruby- абсолютно не нужная фича
https://planetargon.survey.fm/rails-survey-2020
в тред*
Кто-нибудь читал Ruby Recipes: A Problem-Solution Approach, стоит того или Ruby Cookbook получше будет?
> Что за мания ждать каких-то новых фич, когда и так все работает?
Нахуя новые языки придумывать если и на старых можно программы писать (ахуенная аргументация, да)
Кстати ты пишешь на Ассемблере или на Фортране?
> Проблема производительности стоит все менее и менее остро с каждым годом, а скорость разработки наоборот становится важнее.
Если ты вдруг последние 10 лет был в анабиозе – производительность растёт за счёт добавления новых ядер. Рубя эти дополнительные ресурсы использовать кроме как плодя процессы использовать не умеет.
INB "а зачем мне это я ведь крудомака, и ничего больше не умею puma -w 128 go brr"
> Если хочешь еженедельных фич и фреймворков,то перекатывайся лучше в жс.
> Руби не для тебя.
Хочешь развития языка - уходи
Лол что?
>>28923
А что за jemalloc скажешь, теперь он больше не нужен? насколько помню его тоже для уменьшения фрагментации памяти использовали
Скорее всего он банально не может распознать остальные фреймворки, а рельсы по ассет-пайплайну и токену детектится легко.
я так и не понял, sorbet будет автоматически типы проставлять в sig(param(hui: String)) или это ручками делать?
Если ручками то хуево.
представься, мразь
По твоему надо убирать GIL и полностью переделать язык под многоядерность? Как ты это себе представляешь?
Вообще, буду благодарен любому, кто скинет нормальный материал по работе процессора с потоками в руби, тема видимо слишком специфичная
Еще добавлю, что всякие примитивы для многопоточной работы есть в concurrent-ruby, так что на голых потоках программировать никакой нужды нету.
Это TruffleRuby.
Есть опыт работы с конкурентностью? Что посоветуешь изучить, почитать на эту тему, если с руби, так вообще сказка
Не слежу за рубями, но помню ждал супер обновления в конце 2019. Уже перенесли к 2020? Или я что-то путаю?
Вроде все хвалят, зп выросла чуть меньше чем в два раза за год %130%, а на душе тоска.
На двачах с Бугаенко за ООП срался.
Параллельно пилил тестовые в конторы второго сорта, типа Контура, откуда после собеседований тихонечко сливался.
Вроде все понятно.
Сейчас переписать этот код я могу не подгядывая, но думаю что не смог бы написать такое не встретив этот пример.
И скорее всего, если потребуется сделать что-то подобное под другую проблему, то я затуплю.
Это отупение?
гайз, нужна хелпа. Суть задачи.
У меня есть некий запрос, который вовзвращает IDшники из некоторой таблицы. Количество таких айдишников много больше чем CHUNK_SIZE = 10000. Мне надо чанками эти айдишники поочереди записывать во временную таблицу tmp_some_ids (id INT), и вызывать процедуру, которая работает с этой временной таблицей (если кому интересно, эта процедура добавляет в эту тублицу еще одно поле, в котором хранится некоторые значения соответствующие ID). Потом из этой темповой таблицы выгружать полеченные данные, обработать их. И опять залить следующий чанк в tmp_some_ids, и так в цикле пока я не обработаю все записи с первого запроса.
ТАк вот у меня есть 3 стула:
1 и самый топорный) выгружить все id в память в ruby скрипте, далее рубями уже поделить все записи на чанки, и запихивать их в цикле во временную таблицу и далее по алгоритму
2) создать/очистить таблицу, к первому запросу добавить LIMIT #{page_number CHUNK_SIZE}, #{(page_number + 1) CHUNK_SIZE} и этот селект инсертить в tmp_some_ids. И в рубях в цикле инкрементить page_number + 1 пока количество заинсерченных данных не меньше CHUNK_SIZE.
3) Похожу на п. 2, только вместо лимитов использовать условие AND WHERE id > #{MY_LAST_INSERTED_ID} и так мне после каждого инсерта надо запоминать MY_LAST_INSERTED_ID = select max(id) from tmp_some_ids для следующей итерации.
Анон, на какой стул сам сядешь, на какой мать посадишь?
Мои же мысли по этим пунктам таковы:
1) тип придется генерить инсерт insert into tmp_some_ids (id) values (#{stored_ids[0]}), (#{stored_ids[1]}), ... (#{stored_ids[CHUNK_SIZE-1]) что как на мой взгляд залупа полная.
2) выглядит норм, но хз как на уровне mysql норм не норм, по сути он передрачивает один и тот же запрос много раз формируюя чанки (возможно я не прав). как по мне тоже залупа полная
3) выглядит тоже норм, но надо делать все время лишний запрос чтобы все врямя получать самый большой айди во временной таблице, что как бы тоже залупа полная.
гайз, нужна хелпа. Суть задачи.
У меня есть некий запрос, который вовзвращает IDшники из некоторой таблицы. Количество таких айдишников много больше чем CHUNK_SIZE = 10000. Мне надо чанками эти айдишники поочереди записывать во временную таблицу tmp_some_ids (id INT), и вызывать процедуру, которая работает с этой временной таблицей (если кому интересно, эта процедура добавляет в эту тублицу еще одно поле, в котором хранится некоторые значения соответствующие ID). Потом из этой темповой таблицы выгружать полеченные данные, обработать их. И опять залить следующий чанк в tmp_some_ids, и так в цикле пока я не обработаю все записи с первого запроса.
ТАк вот у меня есть 3 стула:
1 и самый топорный) выгружить все id в память в ruby скрипте, далее рубями уже поделить все записи на чанки, и запихивать их в цикле во временную таблицу и далее по алгоритму
2) создать/очистить таблицу, к первому запросу добавить LIMIT #{page_number CHUNK_SIZE}, #{(page_number + 1) CHUNK_SIZE} и этот селект инсертить в tmp_some_ids. И в рубях в цикле инкрементить page_number + 1 пока количество заинсерченных данных не меньше CHUNK_SIZE.
3) Похожу на п. 2, только вместо лимитов использовать условие AND WHERE id > #{MY_LAST_INSERTED_ID} и так мне после каждого инсерта надо запоминать MY_LAST_INSERTED_ID = select max(id) from tmp_some_ids для следующей итерации.
Анон, на какой стул сам сядешь, на какой мать посадишь?
Мои же мысли по этим пунктам таковы:
1) тип придется генерить инсерт insert into tmp_some_ids (id) values (#{stored_ids[0]}), (#{stored_ids[1]}), ... (#{stored_ids[CHUNK_SIZE-1]) что как на мой взгляд залупа полная.
2) выглядит норм, но хз как на уровне mysql норм не норм, по сути он передрачивает один и тот же запрос много раз формируюя чанки (возможно я не прав). как по мне тоже залупа полная
3) выглядит тоже норм, но надо делать все время лишний запрос чтобы все врямя получать самый большой айди во временной таблице, что как бы тоже залупа полная.
видел какие-то гемы, тупо до сиквенса инкрементируют SELECT WHERE id >= 1 and id < 10000, WHERE id >=10000 and id < ZALUPA
А чем тебе не нравится божественный актив рекорд и `in_batches`?
Это паскаль.
It's the end
Friend of mine
It's the end
Friend of mine
Time is over...
Where we could simply say "I love you"
Now you open the door
Leave me crying
Trying to embrace you again
Trying to face this damn situation
Man I can't...
It's the end
Friend of mine
It's the end
Sweet friend of mine
Dear friend, I cannot tell the reasons why...
We started well, good time
Give me some wine when you open the door
You seem hurt, do try to speak a word to me
What on earth could really go wrong with you and me?
Yet, it's the end
Friend of mine
It's the end
Sweet friend of mine
Time seems to be over...
Where we could simply say "I love you"
Now you open the door
I feel cold
Why can't I hold you in my arms?
Told you that life is short but love is old
It's the end
Friend of mine
It's the end
Sweet friend
It's the end
Friend of mine
It's the end
Friend of mine
Time is over...
Where we could simply say "I love you"
Now you open the door
Leave me crying
Trying to embrace you again
Trying to face this damn situation
Man I can't...
It's the end
Friend of mine
It's the end
Sweet friend of mine
Dear friend, I cannot tell the reasons why...
We started well, good time
Give me some wine when you open the door
You seem hurt, do try to speak a word to me
What on earth could really go wrong with you and me?
Yet, it's the end
Friend of mine
It's the end
Sweet friend of mine
Time seems to be over...
Where we could simply say "I love you"
Now you open the door
I feel cold
Why can't I hold you in my arms?
Told you that life is short but love is old
It's the end
Friend of mine
It's the end
Sweet friend
С годом опыта и англицким можно в фуллтайм команду вкатиться на буржуйский проект, 20$-30$ за час макакинга по американскому времени. Часто даже в русскоязычную компнду салоедов, но тогда Крым ИХ.
Анон статистика с хабра одно, а информация из первых рук другое, тем более хабр это лицемерная параша, где важно говорить не то что думаешь, а то что нравится большинству, а иначе опустят по карме и будешь раз в час коменты оставлять
Ну вот ещё по Украине статистика для джунов. Вполне соответствует. В Украине даже больше стартап-студий с о стеком на Ruby специализируются на бурж рынок. Я бы туда пробовал или в Беларуские студии. Вот там точно в валюте ЗП.
https://jobs.dou.ua/salaries/#period=dec2019&city=all&title=Junior Software Engineer&language=Ruby/Rails&spec=&exp1=1&exp2=2
Я не знаю, что можно в руби искать. По-моему руби выстрелил лет десять назад через рельсы, задав моду на фреймворки, которые все спиздили себе и теперь любой язык имеет примерно такую же инфраструктуру.
Теперь рельсы всего лишь одни из, руби некоторое время ещё был на ходу из-за некоторого непонятного тренда на девопс инструменты, но это тоже в прошлом, в общем.
В целом, это мертвый язык, чуть живее перла.
я на своем языке тоже не знаю как вызвать директорию и записать папку. мне достаточно 30 секунд чтобы это вспомнить.
сразу видно необразованного человека в обычно необразованной среде. дальше лень тебе пояснять. погугли хотя бы CI инструменты на руби, даун.пока.
>как вызвать директорию и записать папку
>мне достаточно 30 секунд чтобы это вспомнить
А хуле тут вспоминать?
Dir.mkdir('hello')
Вот сам подумай, зачем нам тебе помогать? Мы сами, вкатуны, по $20/час с нарисованным коммерческим опытом не прочь поработать. Может тебе ещё рассказать как через апворк или бурж. вакансии выйти на фуллтайм валютную удалёнку? Просто проходи мимо, возвращайся в свою питонопарашу. питон красивый выразительный язык для всех (вас ща реально стадо), вот и работай с ним, JS ещё подучи c Реактом и макачь потихоньку.
Мы тут сами как-нибудь, у нас тут своя атмосфера.
УХОДИ.
Зачем? Сразу в американские. У них как правило есть русскоязычные отделы на удаленке.
мне-то нравится, я просто на легаси проекте где не юзается эктив рекорд
Чтобы что?
Нормальный код, работает же? Вот то-то и оно! Зажрался блядь, на четыре ретурна нос воротит!
>божественный актив рекорд
Говно ебанное этот актив рекорд. Объекты инстанциируются медленно, постоянно надо юзать всякие pluck и connection.exec_query. Любой более-менее сложный запрос, пиши sql или юзай arel, блять, да там даже `>`, `<` нельзя написать без них написать. Миллион методов, которые делают почти одно и то же, find, find_by, where, update, update_attributes, update_attribute, update_column, save, create_with, create_or_find_by, find_or_create_by, where, rewhere, order, reorder, includes, left_joins, eager_load, preload, attribute, attribute_was, attribute_before_last_save, attribute_change, attribute_previous_change, attribute_change_to_be_saved, attribute_in_database, attribute_before_type_cast. Колбеки, которые любая ньюважины считает своим долгом навесить десятки на модель, бонус поинты за рекурсивное сохранение в колбеках. Я уж молчу про миллионы всяких малоизвестные методов и просто высеры DHH вроде fourty_second и suppress.
В общем юзайти sequal, посоны.
>Миллион методов, которые делают почти одно и то же, find, find_by, where, update, update_attributes, update_attribute, update_column, save, create_with, create_or_find_by, find_or_create_by, where, rewhere, order, reorder, includes, left_joins, eager_load, preload, attribute, attribute_was, attribute_before_last_save, attribute_change, attribute_previous_change, attribute_change_to_be_saved, attribute_in_database, attribute_before_type_cast.
Я, пожалуй, сохраню себе этот высер.
То что ты не видел - не значит что их нет, я гарантирую это.
Ну хуй знает, анон. Я, например, люто охуел, когда увидел, что при использовании sql в духе SELECT SUM(bokas.*) AS jokas эктив рекорд создает метод jokas на каждом элементе коллекции. Приятные мелочи у него есть. Да, сложные запросы через SQL, но что-то вообще похуй, иногда даже удобнее так
Этот как раз одна из причин почему
>Объекты инстанциируются медленно
Эта говнина (и еще другие похожие "удобные" поведения) начинает у каждого объекта добавлять синглтоные методы в таких случаях.
Работать пробовал?
вопрос в скорости.
Прям так медленно?
Мне кажется уебищная книга, либо слишком сложная. Нудные примеры. Хотя возможно стоит их разобрать
Eloquent ruby была приятнее
>Ruby Recipes: A Problem-Solution Approach
Вот я открыл рандомное место. Судя по скрину в кукбуке примеры сложнее. Да и вообще тут 250стр а там 1000
Я бы пролистал эту, выполняя что-то в irb и все. Если вообще нулевой, то читай эту.
Кукбук может отбить желание что-то делать тк там ебанутые примеры
После кукбука у меня осталось ощущение, что авторы просто перегнали любой-язык кукбук в руби без учета особенностей языка, примеры оттуда были реально не очень.
Ты какой-то рудиментарный, 2к2к ну какие тут книги? Обучаешься по видосикам на ютубчике и вперёд, работать.
Помню нихуя не шарил, ходил на конференции, слушал.
Сейчас понимаю какое это позерство.
Тот самый анон что бы в неактиве год
В сл два месяца надо найти работку)
На рубях чет кроме дикого легаси еще осталось?
Мимо перекатился на ларавель в в 2017, а теперь на симфони и чет не прикольно
работы больше. сравни жангу vs рельсы. и т.д.
А в шапках других языков сильно объясняется нахуя нужен их язык?
Работником макдональдса, не видишь что ли!?
Где такой код применяется в реальных проектах?
>инстансные переменные в модуле
>return nil
Ух, сильно.
>Где такой код применяется в реальных проектах?
Смотря где ты это достал.
Кстати, а что плохого в инстанстых переменных в модуле. Помню что в eloquent ruby наоборт их советовали вместо class variabless
Типа
module Q
@hui = hui
class << self
attr_accessor: hui
end
end
или это не то
Ну, я нахожу их странными, так как инстансные переменные все же про объект класса, а модуль - это всё же иное.
Это не отменяет моих слов. Я все равно не могу создать инстанс твоего модуля с его инстансными переменными.
как вообще проводить стресс тесты для ror приложений?
ссылок достаточно, спасибо!
У меня в проде fullstaq-ruby и пума, деплой через capistrano, вообще никаких проблем.
https://github.com/fullstaq-labs/fullstaq-ruby-server-edition/blob/main/README.md
inb4: не юзать темпфайл. Но хотелось бы все же с ним.
Про пуму и fullstaq (просто руби собранный с jemalloc тоже сойдет) тебе уже написали.
Nginx обязателен перед пумой, убедись, что вся статика отдается через него или через какой-нибудь CDN.
В самой пуме не забудь настроить количество воркеров по количеству ядер, потоков где-то 5-10 на воркер ставь, зависит от приложения, конечно, но это довольно универсальные значения.
Если используешь postgesql (ты же не какую-нибудь nosql парашу используешь?), то подними pgbouncer.
Если используешь redis, то скорее всего нужно врубить append only (только если не хранишь там пиздец важные данные).
Если если используешь actioncable, то используй anycable.
Очевидно, но убедись, что приложение стартует в продакшен режиме.
САМОЕ ВАЖНОЕ Подключи datadog для мониторинга и если будет овердохуя трафика готовься кешировать/поднимать ноды/оптимизировать (соответственно деплой должен работать как часы).
У тебя что-то с сервером не так. Возможно /tmp маунтится как tmpfs и у тебя банально память заканчивается.
ОДНА МИНУТА
Если у тебя есть рутовый доступ, то правками в /etc/fstab. Если нету, то пиши в какую-то другую директорию, которая находится не в tmpfs (использую df -h и тот же /etc/fstab что бы понять, что-где у тебя намаунчено), при создание Tempfile можно передать директорию в которой ты хочешь что бы файл был создан.
Спасибо тебе!
>>39470
LIVE сегодня в 23:00 по Москве
Painless Rails upgrades
How to upgrade Rails app without pain?
https://www.youtube.com/watch?v=LwFkVGKITSM
хочу вкатиться в выразительный язык, но динамическая красота отпугивает.
https://leetcode.com/problems/longest-substring-without-repeating-characters/
Посмотрел discussions. Не понимаю зачем здесь используют hash?
https://leetcode.com/problems/longest-substring-without-repeating-characters/discuss/540877/Ruby-fastest
Есть одно элегантное решение где чел использует array и просто если элемент уже добавлен, он делает
arr = arr[new_index..-1] + 1
То есть по сути просто сдвигает вправо.
Dart - подучил потыкать Flutter
не могу определиться. что лучше. руби или скала.
на ласт это банки онли.
в рубе больше свободы.
что посоветуете.
Следуй за своим сердцем
Сейчас использую Vim (голый без расширений), не хватает автодополнений или например чтобы скобки, кавычки и т.п. по сочетанию клавиш (или автоматически тоже) закрывались + сами скрипты запускаю либо в отдельном терминале или в виме ":!ruby kill_the_people.rb", а хотелось чтобы тут же где-то окошко было и сочитанием клавиш.
Можно ли это все допилить в виме расширениями? Или проще смотреть в сторону VSCode\Atom? Я только изучать начал Ruby, поэтому пока что так обхожусь.
Оффтоп:
Объясните про Visual Studio Code / VSCode / VSCodium, раньше не имел с этим редактомором дело, так что запутался пиздец найдя вот это. Правильно я понял, что VSCode - это то, на чем базируется Visual Studio Code, и который является open source, значит Visual Studio Code - сразу в урну. А VSCodium это просто собранный VSCode c другими дефолтными настройками?
слишком только для вскода. ты сначала почитай что это такое.
2 пикл не правильный.
no. u can not just use rails 'cause it's absence of SOLID ways & without understanding N+1 problem & too thick & slow.
fucking rails.
Быстро все скачали и начали пользоваться
Если тебе ответят Да или Нет, это на что-то повлияет?
Ты сам уже пытался куда-то заэплаиться или хотя бы смотреть варианты?
Если нет, то идешь нахуй, ебучий школоунтер
Ставь опенсорсную версию vscode, не ошибешься, интеграции со всякими рубокопами и тд там есть. Rubymine по-сути нахуй не нужен, все равно в руби все настолько динамическое, что автокомплит работает только в простейших случаях, когда и без него все ясно. Терминал по-моему отдельно запускать самое удобно, но дело вкуса, конечно, так-то в vscode он есть.
На vim просто забей, я хоть и сам линуксоид уже лет 10 как, но вим это просто пердолинг ради пердолинга, да еще и с посредственным результатом в итоге.
Двачую
>Я только изучать начал Ruby
1. Ставь Visual Studio Code и не еби себе мозги хернёй
brew cask install "visual-studio-code"
или там
sudo snap install --classic code
ну или сам смотри что там у тебя за система
https://code.visualstudio.com/docs/setup/linux#_debian-and-ubuntu-based-distributions
>>41317
справедливо, у нас самые популярные RubyMine, VS Code, vim
>>41349
>VS Code и подобное не нужно
ОРНУЛ! vim такая же бесполезная хуйня (нет, ну как же, Shift+G, gg, 12j), как и VS Code, пока плагинами не обвесишь.
>>41403
>>41416
>>41417
2. Так как ты только начал изучать руби, то от RubyMine будет больше вреда, чем пользы (это я про то, как среда будет гемчики устанавливать для своего анализатора и прочая хуйня)
Но пользуясь случаем, скажу, что официальная последняя обновляемая версия работает с кряком-файлом-лицензией с китайского гитхаба, который легко гуглится.
>>41964
>Ставь опенсорсную версию vscode
Лол, обычный vscode недостаточно оупенсорсный?
https://github.com/microsoft/vscode
мимо-6+-лет-опыта-коммерческой-разработки-на-руби-он-рейлс
>Я только изучать начал Ruby
1. Ставь Visual Studio Code и не еби себе мозги хернёй
brew cask install "visual-studio-code"
или там
sudo snap install --classic code
ну или сам смотри что там у тебя за система
https://code.visualstudio.com/docs/setup/linux#_debian-and-ubuntu-based-distributions
>>41317
справедливо, у нас самые популярные RubyMine, VS Code, vim
>>41349
>VS Code и подобное не нужно
ОРНУЛ! vim такая же бесполезная хуйня (нет, ну как же, Shift+G, gg, 12j), как и VS Code, пока плагинами не обвесишь.
>>41403
>>41416
>>41417
2. Так как ты только начал изучать руби, то от RubyMine будет больше вреда, чем пользы (это я про то, как среда будет гемчики устанавливать для своего анализатора и прочая хуйня)
Но пользуясь случаем, скажу, что официальная последняя обновляемая версия работает с кряком-файлом-лицензией с китайского гитхаба, который легко гуглится.
>>41964
>Ставь опенсорсную версию vscode
Лол, обычный vscode недостаточно оупенсорсный?
https://github.com/microsoft/vscode
мимо-6+-лет-опыта-коммерческой-разработки-на-руби-он-рейлс
>мимо-6+-лет-опыта-коммерческой-разработки-на-руби-он-рейлс
>рекомендует кряки на прогу за $19.90 в месяц.
>2. Так как ты только начал изучать руби, то от RubyMine будет больше вреда, чем пользы (это я про то, как среда будет гемчики устанавливать для своего анализатора и прочая хуйня)
Как будто VS Code точно так же какой-нибудь solargraph себе не подтягивает.
Тем более.
>Лол, обычный vscode недостаточно оупенсорсный?
Тот vscode который ты скачаешь на официальном сайте, это не опенсорсная версия, а версия с небольшим количеством дополнительных перделок и зондами.
https://github.com/microsoft/vscode/wiki/Differences-between-the-repository-and-Visual-Studio-Code
>we do include a small amount of additional code and assets in the final product
>Telemetry, Surveys, Crash Reporting
Такое ощущение, что занимаюсь какой-то хуйней, для вкатунов вакансий нет, либо умей как сеньор за 40к.
Крайне разворован проебанным временем, надо было голанг учить, а не этот хайпопроебанный язык
Я уже окончательно забью, просто в очередной раз понял, что программирование для меня скучное и монотонное занятие, по восемь часов наращивать простатит, да на хуй оно нужно, сваркой заниматься и то интереснее.
Что за проект то?
Кстати, забыл спросить, а что ты именно делал?
Попытался куда-то устроиться?(наверн уведел требования фанбокса? :)
Дядь, хорошие сварщики в РФ крайне востребованы и зарабатывают очень хорошо.
Бля, не туда зиганул. Сорян, задроты
Сразу понятно что ты black
Да лан, норм, по повестке дня, так сказать.
>А то. Куколд DHH еще в прошлом году смерджил PR с выпилом всех блеклистов.
Потому что рельса опережает своё время, и это не актив рекорд тормозной, это компьютеры пока недостаточно совершенны, чтобы быстро работать с такой передовой технологией.
> наращивать простатит не хочу
> хочу наращивать бронхит, пневмокониоз, астму, экзему, нейротоксикоз
только на статическом языке. а его нет.
Хуй знает зачем это пишу, прост захотелось выговориться.
Кроч вкатился в руби на рельсах в 2011 году, просто по фану по работе кодил на Си всякие железки. Два года крудошлёпил делая всякие демки, искал идею для стартапа, по итогу таки устроился на галеру и потом ещё два года уже рубировал на разных проектах для дяди, там нахватался жс и вот уже последние пять лет пишу только на жс. Прошёл через стартапы и кровавый энтерпрайз. Выгорел, но снова вернулся. Классека. Вчера пытаясь изучить ещё какую-то JS библиотеку меня что-то переклинило. Накатил свежие руби на систему, достал с антресолей Sublime Text без плагинов даже лицензия ещё не протухла и просто без задней мысли начал фигачить очередной круд на рельсах. Незаметно просидел так до трёх ночи. Какое-то непонятное чувство ностальгии, понял что просто приятно сидеть и печатать руби код. Уже давно не ощущал такого. Неужели у руби нет будущего? Мне уже почти 30, вот думаю насколько это идиотская идея вкатиться в руби снова? Чтобы ты сейчас делал анон, если бы вкатывался? Хз, может у меня синдром утёнка хотя первый язык таки ассемблер. Вообще каждые несколько месяцев я думаю что надо включить достигатора и изучить что-то дополнительное к ЖС, чтобы двигаться дальше. Но куда не попробую, везде как-то неуютно, нет той радости от написания кода пробовал, Го, Раст, Java, пробовал Unity/C#. От ЖС тоже нет радости, но его я уже как-то знаю и мне хватает на заработок. Кароч хотел это куда-то написать. Тоже вижу что руби всё и золотое время ушло. Хз кароч.
Околокрудовыве перфомансонезависимые бложики с мелкоплатформами никогда не перестанут быть востребованными
На западном рынке руби всё еще котируется
В чем проблема?
960x960, 0:07
Вкатываюсь. В то время пока ты был на галере и выгорал я баловался рубями, делал какую-то хуйню для себя, а потом успешно забивал на пару лет.
Горит что проебал время в то время как мог бы поднимать баблинский как ты с 2015 года
пока ты баловался рубями, я успел в 2017 начать учить програмач, в 18 вкатиться в спринг, в 19 сменить спринг на рельсы и сейчас работать на удаленке.
Анон, зачем ты так со мной?
Раз написал что вкатился, расскажи как все проходило, сколько примерно получаешь. Стоит ли искать на hh или сразу linkedin?
Вообще, я тыкал жабу, свифт. Был опыт с эликсиром. Макакерство на апворке. Но что-то в голове щелкнуло и пропало все желание что-либо делать. Возможно дело было в моем окружении. Несколько раз вешал резюме, но потом убирал тк были загоны что надо дохуя знать - быть невьебенным математиком, знать все алгоритмы поиска, ну ты понял..:)
прости, не хотел обижать, просто подтолкнуть к вопросу чего ты вообще хочешь.
проходит как и обычно у всех на собесах, просто уровень конторы меняется. получаю 80к (при учете что у меня население в 50к в мухосрани) и живу с бабушкой.
ищи везде, я на хх рассылал на джуна и на мидла.
>Но что-то в голове щелкнуло и пропало все желание что-либо делать
как ты вообще эти 5 лет выживаешь? ты же не работаешь, или где то за гроши сидишь?
>были загоны что надо дохуя знать - быть невьебенным математиком, знать все алгоритмы поиска, ну ты понял..:)
ничего этого не надо знать. максимум что я смогу так это бинарное дерево написать. ну и просто желательно ориентироваться в разных дата структурах и смотреть где лучше имплементировать, предлагать решения на проекте, обсуждать. алгоритмы не нужны в 95%. Больше рассказываю про архитектурные решения в тех или иных ситуациях и всем заходит.
Не, меньше 5. С апворка, пара контестов в телеге, иногда тестинг. + Подкидывали, родители-пидорашки с бабкой. И я много не тратил. какой стыд
Про твой невьебенно передовой эктиврекорд, правда где он там невьебенно передовой ни разу непонятно, ты все равно вручную будешь запросы писать маломальские, чтобы не получать вот такую хуету как на скрине
В целом нет проблемы, мне до момента когда индустрия выбросит меня на свалку осталось лет 15 хотя у нас был фронтендер 45+ лет, это пиздец аноны. Проблема с рубями кмк в том что многие библиотеки начинают умирать и не поддерживаться. Вот это наверное пугает. Типа сейчас вкачусь обратно, потрачу время, а через два года буду страдать пытаясь запилить свой околокруд с кучей проблем.
инбифо: да вы заебали ныть
изучать, решать задачи, читать нормальный код пробовал?
Ты откровенно говоря, как-то много на дваче сидишь, поменьше бы тут сидел, а учил и вкалывал, больше выхлопа было бы, а не эти сопли, Да я не уверен, а вдруг завтра война, да пожалуйста-мерси, всю эту херню уже выбрасывай из головы и учись давай.
>чтобы не получать вот такую хуету как на скрине
А в чем хуита-то? Запрос на 4.9 ms, вообще бесплатный считай.
Да вы заебали ныть
Да они заебали ныть. Эктиврекорд не такой им
Ну дохуя алиасов, ну где-то надо запросик подправить, и чо?
ActiveRecord отличный патерн для своих задач и сосет только, когда модели предметной области становится приемлимым размещать только в нескольких таблицах - data mapper в помощь
https://2ch.hk/pr/res/1612194.html#1654504 (М)
>Rspec знать обязательно, понимать как пишутся юнит тесты в принципе.
Вот эта хуйня всегда напрягала. Это же как говночистом работать.
Помню несколько раз освежал знания перед подачей резюме, вроде все ок. Потом забивал хер как на резюме так и на sql.
--
Смотрите бананы, нормально будет в качестве "показать код" отправить какую-нибудь хуйню на 200-300 строчек, которая берет инфу с определенного места и обработав ее отправляет в другое. Модули, классы, елды, хуе-мое, nokogiri.
Или стоит все это прикрутить к тем же реальсам и куда-то задеплоить? Успел повторить только ruby, порешать какие-то задачи.
Чето мне лень даже тыкать rails без особой необходимости. А ведь еще наверн нужен какой-нибудь vue?
Тредом промахнулся
>>1654504 →
Вот что мне хотелось бы видеть от джуна (джуна, а не стажера)
1 http
2 что происходит при нажатии На ссылку в браузере
3 без деталей ка организован веб врейворк в целом и rails в частности
4 s из solid, dry, нейминг, рубокоп
5 active record: валидация, отношения, формирование простых запросов - select, order, count
Ну и наверное хватит, можно конечно ебучее полотно написать на примере понторезов с хабра, но на самом деле от джуна больше ждать не надо
Аноним 12/07/20 Вск 05:24:34 №1748798650
>>1654806 →
Вот о таких напыщенных хуесосах я говорил, лол. Все виды джойнов, триггеры, констрейты, нормальные формы, eager load и rspec- ты описал мидла, а по части БД топового мидла или даже синьора, лол.
Джун на руби с триггерами и функциями. На руби лол
Мне кажется или да?
Сейчас стоит rbenv и во время установки гемов макпук греется и все это дело занимает минуты 2. Я когда-то тут уже отписывался на эту тему.
Такое ощущение что он для каждого проекта выкачивает все заново
Собственно дошел до практики. Есть скрипт который нужно запускать раз в какое-то время и создавать записи в бд.
Его лучше кидать в lib и потом вызывать через какой-нибудь service object? Или сразу весь код закинуть в service object.
Как я понял, не получится его использовать как демона
Пока что мне все кажется унылым. Поражаюсь как я раньше этим занимался. Но может отпустит. Других вариантов нет. Пришел по ныть, да
Та пох на те ишьюз. Мне главное, чтоб он версию рубей подтягивал, когда я в папку с проектом захожу. И версии рубей без лишних танцев ставил. С этим он нормально справляется. Рбенв не юзал. Единственное, что слышал от адептов рбенва: "он не патчит команду cd". Ну, мне похуй
на центосе воспроизводится тоже.
Cron delayed jobs
А че хотел?
та все изи оказалось.
(Не рубист, просто любитель в фп покопаться)
это еще как минимум card / ticket.
Думаю формулу покруче можно придумать. Тебе грубо говоря тебе надо узнать сколько тикетов надо купить, чтобы скидка на них превышала 500 баксов. Я уверен это можно матаном решить без итераций. Звони математикам кароче, я не математик, и мне впадлу думать
Сумму геометрической прогрессии посчитай.
Рубокоп, каминари, буллит, факторибот.
Ром/драй для продвинутых крудов.
Джон актив модел серилазер (нахуй jbuilder).
Пг баунсер, аннотейт офк, сейф миграшионс
pry-rails, bullet, factory_bot_rails, rubocop-rails, rubocop-performance, rubocop-rspec, pundit (нахуй cancancan), sidekiq
прямо сейчас, прямо здесь:
https://zoom.us/j/91626741804
https://www.youtube.com/watch?v=Sk2GN6VnA1E
Начни кодить и выясни, твое ли это в принципе.
Можно! Но не быстро, тут простите.
Жду sorbet.
А что с ним не так? Вроде удобно всякие списки в админке делать с сортировкой по столбцам и всякое такое.
тот самый вкатывающийся анон который был в неактиве
Кстати, туда можно ставить картиночки, но нужен absolute url.
А так горит, шо этот ебучий микрософт делает
вообще не понимаю как можно писать на динамико. руби такой каефвный язык, жалко без статики.
Так прикрути тайп чекинг
Влад, залогинься
Когда уже будет революция?
Не понял о чем ты. Мне кажется это спам, просто собирают инфу о вакансиях и по шаблону отправляют.
>>56812
С чего бы? Ты додик? Самый банальный пример в хелпер можно засунуть обработку вывода текста, если текст не простой.
Например ты хочешь чтобы у тебя в комментах были ссылки на другие комменты #1 #2. Эту логику можно в хелпер.
ТВЕРДО И ЧЁТКО можно тебе по губам
Двачую
Я лучше чем DHH знаю где и когда использоать хелперы.
у него есть гем Trestle-tinymce
с этим редактором работал, банально и просто
но из-за того, что он обвернут в трестл – не могу доп. конфиги сделать в редактор, на гите у Trestle-tinymce написано, что конфиги изменять можно в инициализаторе trestle.rb
но как – не сказано
может кто-то сталкивался из анонов?
Объясните, нахуя вам это
Отъебись
> А че ты тут сидишь? Руби сдох давно. Создатель-японец на тебя насрал, российский рынок тоже опустил тебя на дно, ты никому не нужен, кроме легаси-притонов. Объясни, нахуя тебе это
Поддерживать говно мамонта? Ну круто, вот только эти говна рано или поздно будут переписаны, и вас скоро либо попрут нахуй, либо заставят переучиваться. То есть, даже если ты чудом нашел работу, перспектив у тебя никаких нет
Хз я работаю в руби-конторе, нас тут девов 50, все при деле, большинство проектов что заходят - новые. И даже на Elixir разрешают чуток пописать.
Нахуй ты тут ноешь? Уебывай, сопля
И чего ты предлагаешь, какие альтернативы? Если ты джун-вкатун, то тебе везде будет хуево, потому что ты джун-вкатун, который ничего не умеет, но В ПЕРСПЕКТИВЕ научится. Ходить по тредам и ныть про хуево/нет работы, вали отсюда на хуй, неудачник ебаный. Вас таких блядей нигде не любят, не хотят и ненавидят.
а ты считаешь пхпшников зарубистов?
def index
...
respond_to do |format|
format.html
format.json { render json: @projects }
end
end
json.array! @projects, :id
Потому что ты вопросы задавать не умеешь
Вот есть у меня пикрелейтед мэп. В нескольких местах возвращаются значения в зависимости от условия. Норм так вообще писать? Прост на других языках яваскирпт я чётко вижу где "возврат" записью return dupa. А тут ретёрн запрещён. Видел совет использовать next, чтобы визуально было видно точки выхода из итерации. Как быть, анон?
много некстов мне некомфортно, так как мало где такое видел
а чего disctionary не содержит обработки интеджер? почему интеджер надо вот так отдельно делать? я бы в disctionary вынес его не знаю, как он выглядит, правда. Тогда бы всё, что в блоке мэпа до рескью, тебе не надо было бы в принципе, а вот то, что в рескью, по идее выглядело бы так:
@dictionary[token] ? [type, token] : ['error', token]
и это тогда единственная строка в блоке твоего мэпа.
Кстати, пиши do-end вместо фигурных скобок. Спасибо
Проебался я немного, две строки в мэпе будет:
type = @@dictionary[token]
type ? [type, token] : ['error', token]
Но я могу, не зная контекст бизнес-логики, ошибаться
> а чего disctionary не содержит обработки интеджер
Там просто мапа на самом деле. Я хз как это сделать лел.
> пиши do-end вместо фигурных скобок
А есть какой-то гайд на который все моляться?
А то я поставил для форматирования standard и он мне do/end заменяет на скобочки. То есть я правильно понимаю что
Одна строка => скобки
Много строк => do/end
И да, я знаю что код выглядит как ебола. Пока вкатываюсь и не знаю особенностей языка. Не гоните, не насмехайтесь плес.
Текстовая адвентура лел. На деле просто учу руби и пока вникаю в разные начальные возможности языка.
Делай рогалик сразу.
Flutter
>Polygraph Required
Детектор лжи, кто не понял
Друг проходил собеседование на курсы, где тоже надо было пройти детектор. Вопросы уровня:
- у вас есть связи с криминалитетом?
- вы когда-нибудь воровали на работе? (ручки/блокноты не считаются)
- если бы вы могли украсть огромную сумму и точно знаете, что об этом никто ничего не узнает и вам за это ничего не будет - украли бы вы?
Пиздец, то даже не на работу, а на курсы не по руби, там джава была.
Лучший индикатор того, что галера идет нахуй
Да ладно, видно что контора серьезная и поэтому нужно отчитаться перед всякими военными и прочими бюрократами что у нихнадежные сотрудники.
Это наверняка работа на оборонку, там еще и допуск потребуется
Джуны и на других языках никому не нужны
Это немного не так работает. Пили проекты, учись. А там уже определишься. Я когда-то учил руби чтобы перекатиться из "инженер в НИИ за 8к в месяц" на веб разраба в тёплый офис с печеньками и смузи. В итоге на первую работу взяли фронтендером и с того времени я на Руби не писал комерчески. Но Руби и в частности Рельсы дали мне отличную базу, лучшие практики, плюс Руби настолько приятный язык для кодинга что на первых порах это помогло мне не бросить вкатывание. Плюс учебные материалы структурированы и их достаточно. Не дофигищи, что непонятно за что браться, а именно достаточно. Поэтому перестань думать о нужности/ненужности. Сейчас это не важно. Это будет только мешать. Просто учись кодить, делай простые приложения, экспериментируй, задуши перфекциониста на первое время и получай удовольствие. Не ставь себе цель стать Руби-он-Рейлс звездой с 300к/сек. Просто учись программировать. А там будет видно. После первого языка и основных концепций несложно перекатиться на что-то более популярное и более востребованное, да и с высоты даже минимального опыта будет понятно твоё это или нет, какая область более интересна и тому подобное.
Я сейчас снова решил "вкатиться" в RoR, при этом мой бэкграунд сейчас больше пяти лет фронтенда, ноды и внезапно Java/Spring. Появилось несколько идей, которые хотелось бы запилить. Начал с прототипа на ноде и после трёх недель бесцельного подбора библиотек и настройки проекта я понял что ничего лучше Рельсов для этих целей не придумали. Настолько здесь всё создано для концентрации именно над задачей, а не над вылизыванием структуры папок и подбора нужных библиотек.
Писать без статики, анон ты серьезно? Постоянно умираю от неопределенности объектов, весь код под каждым методом натыкан что кто возвращает, и какие типы параметров на входе. Просто frustrating over and over.
Смотрел на элик, там это дело все описывается через @spec, не так выразительно, но хоть что то. Не могу я больше на рельсах писать.
мимо ждва года в проде.
Мм, как вкусно. Писать тесты на динамику чтобы проверять выводы типов, когда априори можно перекатиться на статик язык где уже типы по умолчанию имеются и никаких тестов не нужно писать -> меньше тратишь время.
Ты видел хоть один современный язык динамический? Не считая элика, таких уже нет. Все что есть создавалось в бородатых 90.
Можно всколь так же упомянуть питон, где с ужасными абстракциями полиморфизма и наследования, есть чуть приятная семантика в методах. А именно можно к переменной приписывать int || str || List и прочее. Уебищно, но если бы в рубях соизволили это сделать язык бы был более интересным к серьезным продакшн продуктам, закрывая глаза на остальные минусы.
Он ебанулся просто
Да, я серьёзно. Там в спойлере я уже упомянул, что работаю фуллстеком на рекате/ноде использую тайпскрипт и джаве. Я понимаю что есть более годные языки со статическими типами. Но даже если взять Жаву и ТС. Да, кодировать проще, IDE подскажет где что надо. Некоторые вещи более безопасны. Но опять же повторюсь, мне лично приятнее кодить на динамическом Руби со всеми его якобы недостатками. Для веба самое то. За несколько дней я набросал рест апи, и особо не заморачивался.
Что касается "неопределённости объектов", "код натыкан", "какие параметры на входе"... штош, у меня это проблем никогда не вызывало. Там посмотрел, тут посмотрел, здесь написал тест, а потом имплементацию. И всё. Я ещё практикую написание кода в Vim без особых плагинов. Ну то есть только подсветка и несколько базовых вещей, типа быстрого перехода к файлу. Сначала было тяжело после нескольких лет Intellij IDEA, которая почти за тебя пишет код. Но буквально за неделю втягиваешься и уже весь проект держится в голове. Последнее подсмотрел у Джонатана Блоу, Хейнемеера, некоторых рубистов, типа Аарона Патерсона, которые не используют IDE совсем и пишут достаточно сложный код, полностью разбираясь в кодовой базе. Кароч я к тому что типы не сделают твой проект круче, если ты в целом говнокодер.
Вим - изучать кеи ради кеев. Никогда не понимал такой дроч. Ну что ш, каждому свое.
Когда ты указываешь hi\him ты поддерживаешь лгбт комунити. Не поддерживаешь - не видать тебе работы по карьерной лестнице.
Ты можешь быть they\them и не предоставлять своей внутренней гендерной принадлежности. Так что соси собака.
По факту, смотря на все это понимаешь, что может все таки не зря в рашке живешь. Ведь это все началось как снежный ком и кто знает, может через 5 лет рядом с тобой одни пидарасы будут сидеть, и проблема не в том, что они будут геи, а проблема будет в том, что если ты пискнешь хоть что то в их сторону, они тебя разорвут в клочья.
Если английский хотя бы на уровне средней школы - ничего изучать не надо. d2w - delete two words, ну и все в таком ключе.
>>60327
https://www.youtube.com/watch?v=_GUogAU1KoU
>ничего изучать не надо. d2w - delete two words, ну и все в таком ключе.
Нет чувак. это дрочево. Я не хочу сидеть с листочком А4 и пытаться вспоминать комбинации, и поверь, каждый человек, даже мистер ингландмен сидит с листочком. Твои доводы вымышлены и не имеют реальности происходящего.
Тем более в век, когда есть стрелки. И когда есть мак. Вим, емакс не нужен. Даже на вскод с трудом кодиться. Но кодиться.
Напомнило очередной холивар, в котором не могут выбрать редактор, чтобы написать программу, пиздец, да хоть что открывай и пиши, уже просто делать людям нечего, если они вместо программирования дрочат на плагин в виме
Все верно. это не спор а бред.
Открою интележи руби и быстро пофикшу хотфиксы\заимплеменчу фичу. В оставшиеся время буду пить смузи, пока очередной челик пытается разобраться в виме.
Ну я, блять, не гейропейская компания, а обычный клоун, который для себя кодит, откуда у меня бабки?
Как понять учить? Просто пиши код и все.
Что ты написал вообще?
Можешь, конечно. Хоть 100к.
Вакансии такие есть, на самом деле. Это просто не на хх.ру искать надо, а ирл.
Ирл это как? Ходить стучаться в каждый оффис, где из окна компуктеры видны, и проситься на вакансию рубиста?
Смысл дядям сидеть и ждать принца-мидла(который не факт что объявится), если можно взять мало-мальски нормального джуна и со временем сделать из него мидла, который им нужен?
Алсо, если ты имеешь ввиду переходить на джангу/фласку - то меняешь шило на мыло
На рельсах за 15 минут вполне реально. Понимаю, что отвечаю толстому, но как есть.
В общем ты предлагаешь идти на мидла без опыта на вакансии для мидлов, с гитхабом и всем таким?
>>62557 >>62559
>блог за 15 мин?
Оригинальный видос 2005 года ЛАЙВ КОДИНГ ПРЯМО НА КОНФЕРЕНЦИИ
https://youtu.be/Gzj723LkRJY
здесь уже ± современный вариант ЗА 10 МИНУТ
https://www.youtube.com/watch?v=JaL9ul17kx0
за 30 минут с webpack + react + graphql
https://www.youtube.com/watch?v=f-qY37JIdg0
Поэтому Не бейте лучше обоссыте объясните нормально почему не работает, без посылания нахуй
a = 88
b = 57
result = ["Ok", "Error"]
if
a < b
puts result[0]
else
a > b
result.gsub("Ok", "FUCK")
puts result[1]
end
gsub не меняет объект, и ты применяешь его на весь массив.
Попробуй result[0].gsub!("Ok", "FUCK")
В идеале, если ты делаешь такие курсы - будь добр покажи, что ты можешь, чтоб я открыл их сайт и посмотрел, как рельсы работают и зачем они мне нужны.
Хуй с ним с лэндосом, лэндос можно было, ну хотя бы на HTML, CSS, Js
Рельсовики фронтенд вроде знают, основы, как минимум?
Но там вот есть чел, написано, что он делал сайт якитории, я открываю якиторию, смотрю исходный код, а там
DJANGO_GLOBALS = {
Как это понимать? Я мб чет не догоняю, но вот джанго сразу вижу, а отсылок к руби чет не
Учат? С тебя берут деньги за то, чтобы накидать заданий, кинуть тебе лекцию, а дальше ебись как хочешь.
Это не обучение, а попросту спекуляция на его якобы присутствии. Можно и самому за бесплатно так учиться, как там предлагается, а за будто бы хорошее там сообщество ещё одна сказка про белого бычка. Меня удивляет, как все нахваливают этот интенсив, когда ты по большому счету сам платишь, чтобы самому сделать, никакой гарантии трудоустройства тоже нет, это обычное инфоцыганство.
Блять, не проснусь никак.
Короче мысль примерно такая:
a = 88
b = 57
result = ["Error", "OK", "FUCK]
puts result[a <=> b]
Согласен абсолютно. Интересует просто, как они спекулирует, но не показывают свой скил и даже лэндос пилят на гавнотильде с якобы курсом. Ебать, Я так тоже учить могу, хотя я даже не джун
>>62727
Да, спасибо всё работает.
Вот еще такой вопросик. Есть строка, которая читает данные, которые я в нее написал
real_proxy = "p1N9ANUS
Как сделать так, чтоб он читал не данные вписанные в ручную, а данные из файла txt? с рандомным значением, чтоб при каждом запуске скрипта читалась рандомная строка из файла proxy.txt?
Почитай про работу с файлами, запиши все строки файла в массив, затем просто методом array.choice берешь случайное значение
Не понимаю без примеров.
string = File.open('входные данные.txt', 'r'){ |file| file.read }
a = [string]
real_proxy = a.sample
Так?
Попробуй через irb прогнать все то, что ты написал. Можешь вместо этой тягомотины использовать File#readlines
Попробуй начать с поиска по стэковерфлоу
Если англ знаешь то поищи по ruby write file lines to array
Этот код Открывает файл, но не делает рандом, берет первую строку из файла только всегда
В общем нашел на стэкоферфлоу вариант, но так он вообще теперь файл не открывает(либо открывает, но не так)
string = File.readlines("proxy.txt").sample
a = [string]
real_proxy = a
Ошибка
(node:15674) UnhandledPromiseRejectionWarning: Error: Invalid "proxyUrl" option: the URL must contain both hostname and port.
string = File.readlines("proxy.txt").sample
a = [string]
puts a
Путит!
.zL9ANUS
Но, сука, какого же хуя, он не открывает его в проксях тогда? Думаю там какая-то ошибка в строках, открываются как то иначе, мб скобки нужны какие то куда-то или еще чет типа такого
Например у меня есть Post и File. Мне нужно чтобы создавался post и к нему прикреплялись файлы.
У file есть post_id, но у нас его нет тк post еще не создан.
Если делать без всяких гемов, то как лучше поступить?
Если у меня несколько файлов, то нормально ли отправлять formData несколько раз? Будет получаться что на сервер будет несколько раз приходить следующее
1. post=>{name=>hui} file=>{file1}
2. post=>{name=>hui} file=>{file1, file2}
2. post=>{name=>hui} file=>{file1, file2, file3}
...
Это все через xhr
Блять какой ебаный черт придумал этот каловый язык с его ебаным синтаксисом. Не удивлен что вакансий на эту парашу нихуя нет.
Несколько раз отправлять нельзя, это плохой код.
Создаешь транзакцию, например, Post.transaction do
post = Post.create(...)
Внутри транзакции создаешь файлы, айди поста у тебя уже будет, если с файлом что-то не так, делаешь raise exception и транзакция отменяется, пост не создаётся.
Лучший синтаксис имхо Си подобный так как он применим на большинстве япов а твой руби понятен только тебе и создателю этого кала. По поводу вакансии не знаю как у тебя у меня на весь город (миллионник) одна вакансия.
Проиграл с этого утенка. Твой первый язык был с сиподобным синтаксисом, и теперь другое ты не воспринимаешь?
напрямую
файл читается, рандом работает, puts выводит все как надо, а когда это передаешь в прокси оно не работает
Я тогда вообще не догоняю как показывать прогресс загрузки файлов по одному если в итоге правильнее отправлять formData.
Сейчас я просто цепляю все файлы к formdata и отправляю ее. На сервер приходит все как нужно.
Но прогресс показывается только на последнем прогресс баре.
A если делать xhr.send(file) вместо xhr.send(formData) прогресс показывается для каждого файла, но при этом на сервер приходит в params приходит {}
>>63305
>>63301
>>63222
>>63105
Короче я сделал чтоб работало
string = File.readlines("proxy.txt").sample
real_proxy = string
Всё. Оно работает. Если гнать в массив, как я до этого делал - то не работает. Убрал строку с а = стринг, реал прокси = а, оставив стрин=файлрид, реал прокси - стринг и всё заработало, как надо
Насколько будет зашкварно, если я стану учить эликсир?
> string = File.readlines("proxy.txt").sample
> real_proxy = string
Это по сути и есть массив. Твой код эквивалентен:
array = File.readlines("proxy.txt")
real_proxy = array.sample
Нинасколько, это следующая ступень развития рубиста.
Но не думай, что после изучения эликсира ты вообще перестанешь писать на руби
Я и не пишу на руби. Я просто рассматриваю стороны перекатиться в джавы в эликсир.
из джавы
скала это 90% банкинг. Я не хочу банкинг.
>есть чел
>делал сайт якитории
Плохо читаешь, там написано:
>Участвовал в проектах для различных заказчиков
>таких как, Avaya, Nokia, "Якитория" и др.
Судя по всему под проектом для Якитории, имеют ввиду вот что:
>мы создали уникальную для рынка систему, которая пронизывает все бизнес-процессы большой компании
>от заказа в мобильном приложении, минуя колл-центр и менеджеров ресторанов, до отслеживания координат курьеров
А не «сайт Якитории»™
https://youtu.be/hlchtGPY9_Q
Мб, но я чет сомневаюсь, сдается мне, что там вся эта логика тоже сделана на Django
И? ЧТо сказать-то хотел? Что синтаксис не осилил? Ебать ты силен нахуй.
Тем, что есть гемы для чего угодно, и тебе не нужно думать о том, как сделать, например, soft delete, ты просто берешь готовый гем и юзаешь
Ты же понимаешь, что часто у компании крутится больше, чем один сервис / одна система и часто эти сервисы/системы сделаны на разных технологиях и как-то общаются между собой по API, да?
https://www.voltmobi.com/works/yakitoriya/
Подскажите почему происходит какая-то хуйня ПОЖАЛУЙСТА, МОЛЮ
https://pastebin.com/N1biFTWf
ебу, что за ватир браузер, но ты и в методе проксис один создаешь этот ватир браузер, и в самом конце, перед бегин.
Ватир это плагин, открывает он гугл хром.
И в юзер агенте создаю. Но если я его где-то убираю, то
30:in `<main>': undefined local variable or method `browser' for main:Object (NameError)
Мб как-то надо иначе объединять то, что после скобок? Но я не нашел методов, подумал , что смогу в классы загнать и он ВНЕЗАПНо всё порешает, но чет не порешалось блять
driver = Webdriver::UserAgent.driver(:browser => :chrome,:agent => :random)
browser = Watir::Browser.new(:chrome, proxy: proxy)
browser = Watir::Browser.new(:chrome, proxy: proxy)
ФИКС*
Соединить вот это
Сори, не работал с этими всеми гемами.
http://watir.com/guides/proxies/
Из этого примера, все выглядит так, будто тебе достаточно того, что ты написал с 10 строки пастбина до 19.
real_proxy = u_proxy
server = ProxyChainRb::Server.new
generated_proxy = server.start(real_proxy)
proxy = {
http: generated_proxy,
ssl: generated_proxy
}
browser = Watir::Browser.new(:chrome, proxy: proxy)
browser.goto("https://2ip.ru/")
Я б вот так для начала попробовал. Раз не получается сразу с классами, то сперва тупо скриптом таким попробуй. получится -- разбивай на классы.
>>63780 - кун
Это только прокси, бро. Прокси я уже проставил и они работают. Мне нужно проставить proxy + user.agent
Код прокси получается
u_proxy = File.readlines("proxy.txt").sample
real_proxy = u_proxy
server = ProxyChainRb::Server.new
generated_proxy = server.start(real_proxy)
proxy = {
http: generated_proxy,
ssl: generated_proxy
}
browser = Watir::Browser.new(:chrome, proxy: proxy)
А код user agenta
driver = Webdriver::UserAgent.driver(:browser => :chrome,:agent => :random)
browser = Watir::Browser.new(driver)
По отдельности они работают, а как их в одно целое объединить то? я пробовал и
browser = Watir::Browser.new(:chrome, proxy: proxy, driver)
и
browser = Watir::Browser.new(:chrome, proxy: proxy + driver)
и вообще много чего перепробовал и нихуя не работает. Решил делать это классами, и отправил прокси + юзер агент в класс, а потом пытался объявить, когда вызываю браузер
Второй ответ отсюда попробуй:
https://stackoverflow.com/questions/19178901/integrate-watir-webdriver-and-browsermob-proxy-and-webdriver-user-agent
driver = Webdriver::UserAgent.driver(:browser => :chrome, :agent => :iphone, :orientation => :landscape)
browser = Watir::Browser.new driver, :switches => %w[--proxy-server=#{proxy.host}:#{proxy.port}]
browser.goto 'google.com'
Так приватные прокси не запихаешь с авторизацией. Приходится использовать 2 гема, один гем с прокси, другой с юзер агентом, как бы их в значении driver = соединить в одно
>приватные прокси не запихаешь с авторизацией.
а если прокси через np2ordANUS
Так тоже не прокатит, поэтому и написали гем дополнительный, который через node.js работает, лол.
Неужели нет никакой функции объединить два значения драйвера в одном?
Ну, просто вслепую тыкая точно не получится объединить вариаций того, как это могли заимплементить создатели гемов массакак и вариаций жареного супа. Только надеяться, что в треде найдется кто-то, кто такое делал. Универсального ответа нет. Либо искать в документации, либо в исходниках гемов, либо на стековерфлоу
Блять, я думал, что не могу, потому что просто в синтаксисе плохо шарю. Я просто совсем зеленый, мб у самого руби есть какое то объединение
Тебе надо выяснить, как работают гемы для твоей ситуации. Руби в данном случае просто инструмент, а интерфейс гемов только в документации этих гемов может быть описан (если повезёт)
Я не перестаю удивляться с додиков, которые залетают в тред чисто посрать, одному придурку синтаксис не понравился, что уже в принципе вброс, теперь этот тупиздень косит под дурака в духе "а чо, в других нет???". Да на хуй вы живёте вообще, зайти в тематику и пукнуть в рубитреде, на большее извилин не хватает.
>>63444
Блять, двачую.
Но мне кажется, что это семен просто раз в неделю залетает.
Ладно бы язык реально ВО ВСЕМ сосал. Так нет же, уверен, что эти же люди не заходят в js тред и не пишут, какой он поехавший
Заюзай rest_client или httparty
>>63479
В итоге просто сделал "/upload"
На каждый файл свой formData. Как мне показалось так проще обрабатывать данные на сервере и показывать прогресс загрузки каждого файла. Правда в js'е говнокод надо почистить.
+
У формы есть несколько текстовых полей - это еще 1 formData
В итоге когда нажимают submit - форма отправляет текстовые поля формы, создает @post и возвращает id
Дальше начинают грузиться файлы которые привязываются к этому id
Еще sqlite постоянно выдавал "SQLite3::BusyException: database is locked" из-за того что быстро вызывался Upload.create
С pg такой проблемы нет.
Почему руби застыл в развитии уже много лет?
Вроде чето пилят,но по сути улучшений движка нет,новых полезных фич тоже нет
Ну как, жид-машину вот добавили - верный признак что востребован нужен оптимизон а то чет зеон платинумы дорага.
Я смотрел тестирование-прирост мизер,а в под некоторыми нагрузками даже в минус уходят...
Ну лан,перфоманс можно мощными процами нивелированть.
А вот с фичами по сути ничего интересного,Матц какую то херню городит уже много лет.Баги фиксить конечно нужное дело,но вот отставание по развитию очевидно.Даже старина пых очухался...
ниасилили
Макаров что-то там пытался, а так тут нужны в вм оптимизации, а это по сути рокетсаенс.
>Ну лан,перфоманс можно мощными процами нивелированть.
Хуёво как раз, чем больше ядер тем меньше частота, а в вебе как правило проблема как раз в ядре в соточку и недовольными юзерами что у них по 5 минут корзина покупок считается.
>а так тут нужны в вм оптимизации, а это по сути рокетсаенс
Область применения потому что такова.
А все крутые фишки в процессорах делают или для игорь (ускорение числоебли на fp32), медиа (опять же числоебля на int32), научдроча (fp64). А что бы строки и массивы лихо крутить - хуй.
Ньюфаг,плиз.
Руби и рельсы взлетели, потому что до сих пор не являются узким местом в большинстве случаев.
Ты можешь запилить супер быстрый бэкэнд на другом языке, но какой в этом толк, если тормозить будет база данных?
Если бы манямантры тормозов-абсракцунов про тормозящую бд были бы правдой, то индустрии даже пыхе архитектуру времен 3.0-4.0 менять было бы не нужно, нужникс изобретать тоже было бы не нужно - хуле, "бутылка в базе азаза идите все нахуй, мой говнософт нитармазит."
Но нет, по node.js, по взделающему Go, по популярноси C# и Java мы видим - что эффективность рантайма для мидделваре крайне важна. Что маняпроблемы мускуля на шареде давно не имеют место быть в современном мире с его то noSQL и прочими in-memory кешами и на первый план выходит скорость языка.
Апофеоз - Rust и его популярность, когда мир показал что ему нужен быстрый язык, у него больше нет денег затыкать проблемы производительности платиновыми зионами по полтора ляма за камень которые всё равно их не решают, потому что алгоритмы в вебе однопоток.
Вот только 90% сайтов в инернете никогда не потребуют производительность даже обычного php
Конечно можно рассчитывать, что твой проект станет супер популярным, и начать писать всё на rust, а потом конкуренты запустят аналог из говна и палок, и соберут аудиторию, а твой супер быстрый бэкэнд уже никому не будет нужен.
Не надо делать преждевременные оптимизации, пока у тебя нет проблем со скоростью языка, не еби себе мозги.
>Вот только 90% сайтов в инернете никогда не потребуют производительность даже обычного php
Вах, 640кб будет достаточно каждому, давно не слышал таких мантр.
Пчёл, производительность языка в 2020 уже востребована хотя бы что бы за кекафлопсочасы облака не переплачивать, прикинь?
Строки 15:18 - проебался с отступами.
Всё так, да.
Если хуяке и в продакшн - это первые на незанятом рынке, пусть и юзера по полчаса как на модеме загрузки страницы ждут - это значит, что за загрузку страницы за полчаса бабки прилетят, а оптимизированному за 0.5мс ответу сервера но через год - нет.
Полная хуйня чел, ты скорее в эзернет упрёшься, чем в скорость работы интерпретатора
>даже пыхе архитектуру времен 3.0-4.0 менять было бы не нужно
архитектуру меняют не для ускорения работы твоих скриптов, а для ускорения скорости разработки
>Вот только 90% сайтов в инернете никогда не потребуют производительность даже обычного php
Всё так.
На похапэ можно писать довольно быстрый код. Конечно, не такой резкий, как заточенный под конкретную задачу инстанс nodejs или, не дай бог, что-нибудь для веб на няшной с ассемблерными вставками.
Можно банально придерживаться паттерна mvc и не погрязнуть в паутине спагетти-скриптов с сотнями инклюдов. Код будет хотя бы структурирован и изолирован локальными кучками говнеца. Это идеальное состояние, если большую часть рабочего времени вы добавляете в общую свалку новые, независимые друг от друга конвертики с тухлятиной.
Можно написать классы объектов, там где они необходимы и наполнить их методами. Опять же, всё ради структурирования кода, для вполне сносной и быстрой навигации по разрастающейся выгребной яме проекта.
Можно вооружиться профайлером, раскурить исходники ядра фреймворка, который вам предписало начальство, и частично переписать его, снизив время выполнения этого хитросплетения пиздеца на 80%. Вырезать конфиг веб-приложений, сделанный в xml. Уничтожить миллионы вызовов __call() и call_user_func(), от которых кровоточат глаза. Большинство макак знает, что обычное веб-приложение на похапэ инициализируется каждый раз с нуля. Поэтому уменьшить на 90% время инициализации - это очень хорошая идея.
Можно искать узкие места и куски рендерера, где хтмл генерится недостаточно быстро. Вооружиться memcached и реализовать грамотные схемы самообновляющегося блочного кеширования. Избавиться от пары дюжин лишних запросов к бд на каждый чих. Получить 80% страниц, выхлоп которых отрабатывает без запросов к бд вообще.
Можно заняться очередями сообщений и перенести на них особенно тяжёлые куски процессинга картинок, видео, музычки, почты и прочего хлама, чтобы всё упиралось в длину очереди, количество воркеров и машины, эти очереди разгребающие, а не в число клиентов и их терпение к времени отклика от сервера.
Можно навесить плюшки в виде аякса, где это уместно, и местами перенести генерацию контента вовсе на клиент, вместе с тем сэкономив десятки тяжёлых запросов на отрисовку страницы целиком.
Можно взять сверхбыстрое простое хранилище типа redis и использовать его для сегментов системы, которые создают большую плотность не очень важных запросов к бд, типа учёта баннеропоказов, трекинга статусов online и логирования всякой поебистики.
Можно придти к мысли, что mysql с её слоупочными table locks и transactional safety и с её возможностью масштабирования только при помощи анальных расширителей не очень-то, собственно, и нужна в большинстве задач. Потратить 2 месяца и перенести огромную смердящую кучу наваленных друг на друга небольших пакетиков с говном на mongodb, на небольшой, но няшный кластер из нескольких replica sets по тройке лёгких машин. Ощутить невесомое изящество, с которой она похрустывает сотнями тысяч записей, прелесть schema-free и отсутствие дрожи в коленях, когда раньше ты запускал alter table на рабочей копии бд, глубокой ночью, потому что оно кладёт сервер на час-другой. А потом часами напролёт в умилении смотреть на графики munin, которые резко перебежали из погранично-красной зоны в самый низ зелёной. Финально включить eaccelerator и наслаждаться запасом в сотни запросов в секунду на отдельно взятом сервере начального уровня.
Можно дополнительно озаботиться настройкой nginx, убрать из конфига логгирование для файлопомойки, включить пяток жизненно-важных параметров, указать нормальные значения для буферов. Окончательно уничтожить апач, для которого был прописан reverse proxy для некоторых урлов. Выкинуть SATA-винты на помойку. Поставить дополнительно недорогих SSD и развернуть на них кэш для самой мелкой статики.
Только это всё не нужно. Ваш сайт, результат вашей работы никогда не получит хоть какой-то нагрузки. Когда на ресурс заходит 10 человек в день, а 90% хитов совершают боты гугла, можно хуярить страницы на 50, и даже на 150 SQL-запросов, ведь все таблицы бд влезают в оперативку, и страница даже на каком-нибудь позапрошлогоднем zend framework без твиков соберётся менее, чем за секунду. Да какой там фреймворк! Какой там MVC! Проще дёргать по необходимости разнородные готовые куски, часть кода бросить голодным доширак-макакам, и склеить всё воедино лишь-бы-работало спагетти-кодом. Ведь проект нужно было сдать ещё вчера, а завтра он будет навсегда забыт. И останется крутиться на задрипанном, надолго предоплаченном vps, в cron которому прописана ежедневная перезагрузка.
Я кончил.
На похапэ можно писать довольно быстрый код. Конечно, не такой резкий, как заточенный под конкретную задачу инстанс nodejs или, не дай бог, что-нибудь для веб на няшной с ассемблерными вставками.
Можно банально придерживаться паттерна mvc и не погрязнуть в паутине спагетти-скриптов с сотнями инклюдов. Код будет хотя бы структурирован и изолирован локальными кучками говнеца. Это идеальное состояние, если большую часть рабочего времени вы добавляете в общую свалку новые, независимые друг от друга конвертики с тухлятиной.
Можно написать классы объектов, там где они необходимы и наполнить их методами. Опять же, всё ради структурирования кода, для вполне сносной и быстрой навигации по разрастающейся выгребной яме проекта.
Можно вооружиться профайлером, раскурить исходники ядра фреймворка, который вам предписало начальство, и частично переписать его, снизив время выполнения этого хитросплетения пиздеца на 80%. Вырезать конфиг веб-приложений, сделанный в xml. Уничтожить миллионы вызовов __call() и call_user_func(), от которых кровоточат глаза. Большинство макак знает, что обычное веб-приложение на похапэ инициализируется каждый раз с нуля. Поэтому уменьшить на 90% время инициализации - это очень хорошая идея.
Можно искать узкие места и куски рендерера, где хтмл генерится недостаточно быстро. Вооружиться memcached и реализовать грамотные схемы самообновляющегося блочного кеширования. Избавиться от пары дюжин лишних запросов к бд на каждый чих. Получить 80% страниц, выхлоп которых отрабатывает без запросов к бд вообще.
Можно заняться очередями сообщений и перенести на них особенно тяжёлые куски процессинга картинок, видео, музычки, почты и прочего хлама, чтобы всё упиралось в длину очереди, количество воркеров и машины, эти очереди разгребающие, а не в число клиентов и их терпение к времени отклика от сервера.
Можно навесить плюшки в виде аякса, где это уместно, и местами перенести генерацию контента вовсе на клиент, вместе с тем сэкономив десятки тяжёлых запросов на отрисовку страницы целиком.
Можно взять сверхбыстрое простое хранилище типа redis и использовать его для сегментов системы, которые создают большую плотность не очень важных запросов к бд, типа учёта баннеропоказов, трекинга статусов online и логирования всякой поебистики.
Можно придти к мысли, что mysql с её слоупочными table locks и transactional safety и с её возможностью масштабирования только при помощи анальных расширителей не очень-то, собственно, и нужна в большинстве задач. Потратить 2 месяца и перенести огромную смердящую кучу наваленных друг на друга небольших пакетиков с говном на mongodb, на небольшой, но няшный кластер из нескольких replica sets по тройке лёгких машин. Ощутить невесомое изящество, с которой она похрустывает сотнями тысяч записей, прелесть schema-free и отсутствие дрожи в коленях, когда раньше ты запускал alter table на рабочей копии бд, глубокой ночью, потому что оно кладёт сервер на час-другой. А потом часами напролёт в умилении смотреть на графики munin, которые резко перебежали из погранично-красной зоны в самый низ зелёной. Финально включить eaccelerator и наслаждаться запасом в сотни запросов в секунду на отдельно взятом сервере начального уровня.
Можно дополнительно озаботиться настройкой nginx, убрать из конфига логгирование для файлопомойки, включить пяток жизненно-важных параметров, указать нормальные значения для буферов. Окончательно уничтожить апач, для которого был прописан reverse proxy для некоторых урлов. Выкинуть SATA-винты на помойку. Поставить дополнительно недорогих SSD и развернуть на них кэш для самой мелкой статики.
Только это всё не нужно. Ваш сайт, результат вашей работы никогда не получит хоть какой-то нагрузки. Когда на ресурс заходит 10 человек в день, а 90% хитов совершают боты гугла, можно хуярить страницы на 50, и даже на 150 SQL-запросов, ведь все таблицы бд влезают в оперативку, и страница даже на каком-нибудь позапрошлогоднем zend framework без твиков соберётся менее, чем за секунду. Да какой там фреймворк! Какой там MVC! Проще дёргать по необходимости разнородные готовые куски, часть кода бросить голодным доширак-макакам, и склеить всё воедино лишь-бы-работало спагетти-кодом. Ведь проект нужно было сдать ещё вчера, а завтра он будет навсегда забыт. И останется крутиться на задрипанном, надолго предоплаченном vps, в cron которому прописана ежедневная перезагрузка.
Я кончил.
> Пчёл, производительность языка в 2020 уже востребована хотя бы что бы за кекафлопсочасы облака не переплачивать, прикинь?
Окей, ну напишешь ты всё на расте, будешь ты платить не 50 долларов за сервер а 20.
Sinatra хотя бы возьми
Бери или как уже написали sinatra или, если хочешь почувствовать себе дохуя модным, то roda на самом деле годнота, рекомендую. Если работаешь с базой, то бери sequel, использовать activerecord без рельс такое себе. Для перезагрузки кода listen + zeitwerk, их связка пишется буквально в десяток строка кода, работает как часы. Можно еще activesupport подключить для разных няшностей. И puma как вебсервер сверху. Все, с этим базовым набором уже можно разрабатывать как белый человек.
Ну да, это базовый набор для небольшого приложения, все остальное подключается по мере необходимости. Иначе ты один только релоад кода или менеджер коннектов к базе ебанешься с нуля писать.
Годнота, но вот тут
>на mongodb
Харкнул в ебло монгодебилу. Надо заменить на постгрес и будет идеально.
Совершенно верно, прохожите мимо.
Подскажите почему
rackup config.ru работает быстрее чем shotgun
В первом случае страницы открываются очень быстро, с shotgun есть какой-то delay.
медленно пилят
И вообще, проиграл с этого когда увидел
Два чаю этому
лучше возьми лисмп
ты тупица?
Могу научить тебя бесплатно - открываешь гугл и разбираешься.
Алсо, в сторону каких технологий двигаются рубисты, постигшие зен?
Переходят, но на всех рубистов вакансий не хватит.
>Есть идеи, как писануть бэкдор на руби? Мб исходники у кого то есть? И стоит ли? Или лучше для этого дела шарп взять
На руби сделан потрясающий инструмент - metasploit framework, исходники лежат на гитхабе и доступны для ознакомления.
>современном рынке
>модными нодами
ВЗВИЗГНУЛ
мимо делал чат на вебсокетах НА НОДЕ для рейлс приложения ещё в 2012 году, и именно тогда нода была «модной»
Опять ты? Чего тебе в J's треде не сидится?
https://pastebin.com/CyiDxGL0
Какой вариант лучше по вашему мнению? Эмулиировать устройства или все таки подмена юзер агента? Что распознать будет тяжелее?
С блядскими классами я тоже разобрался, будут в дальнейшем в этом скрипте, если пригодятся
Вебдрайвер инжектит атрибут webdriver в html, то есть однозначно объявляет о своем присутствии, так что распознается это очень просто независимо от юзер-агента.
Это не баг, он никак не фиксится, насколько я помню, однако думаю ничто не помешает завернуть вебдрайвер через прокси и подчищать весь левый контент парсером.
В смысле, ты исходник не смотрел? Я там завернул и в прокси и в юзерагент. Конечно вебдрайвер без прокси - нахер не нужен. А вот как контент подчистить поясни, я не понимаю, что ты имеешь ввиду
Вроде уже должен быть взрослым дядькой, а пишешь как дурачок малолетний.
Лучше бы на вопрос ответил
Твой прокси только адрес меняет, я говорю, если сайт выполнит какую-нибудь херню типа window.document.documentElement.getAttribute("webdriver") и отправит результат работы на сервер - любой вменяемый защитный механизм отправит тебя в бан, соответственно, все эти фичи надо либо как-то отрубать, либо не позволять клиентской части детектора стучать на сервер, перехватывая и изменяя сообщения на стороне прокси.
Есть ли в нем встроенный инструмент для этого?
Вроде нет. ruby-zip'ом похожее делаю на своем проекте. Только у нас не керриервейв, а шрайн
В файле конфиг у меня условно
TEXTS1 = 'Какой то текст'
TEXTS2 = 'Какой то текст'
TEXTS3 = 'Какой то текст'
а в файле мейн я хочу вызвать проверку по этому файлу
if result.attribute('textContent') != config.TEXTS1 and config.TEXTS2 and config.TEXTS3
И она естественно не работает
естественно, ибо я взял эту проверку из питухона, в руби она чет не сработала)
если вызывать не по файлу то там было
if result.attribute('textContent') != 'Какой то текст'
Но мне нужно проверить поочередно текст из моего файла конфиг, как это сделать?
/home/RubyProject/3.rb:46:in `block in <main>': undefined local variable or method `config' for main:Object (NameError)
from /home/RubyProject/3.rb:45:in `each'
from /home/RubyProject/3.rb:45:in `<main>'
Видел его. Ты с ним работал? Botnet на нем можно поднять ?
Ну у тебя вот этот config.rb как выглядит?
Это класс, модуль?
module Config
TEXT1 = "hui"
TEXT2 = "zalupa"
TEXT3 = "pizda"
end
Большие буквы это константы и доступ к ним через ::
У меня там только это было
Я же говорил, что из питухона взял, там просто прописываешь текст = блабла и всё работает. И в main делаешь import config
TEXTS1 = 'Какой то текст'
TEXTS2 = 'Какой то текст'
TEXTS3 = 'Какой то текст'
Сделал из него модуль
теперь такая ошибка
in `block in <main>': uninitialized constant Config (NameError)
Его где-то объявить еще надо в файле main?
Ну ты изначально криво все описал.
Если у тебя было без модуля то мог просто в main сделать
require './config.rb'
и дальше вызывать эти TEXT...
Если ты обвернул в модуль, то делаешь require и потом
include Config
Сделал модуль, как ты написал, в мейн добавил
require_relative 'config'
вроде работает. или делает вид, что работает?
А как вызвать def из другого файла? допустим в файле 2.rb
есть
def pigs
puts pig
end
что нужно сделать чтоб объявить его в мейн?
Двачую
Хуютое! Высоконагруженные бляди пожаловали.
Для простой хуйни на полтора подключения а у тебя больше и не будет годно. Вот если твоя говноподелка взлетит, то перейдёшь на anycable.
Если я правильно понял action cable нельзя использовать в синатре, а anycable можно.
другой анон
>твоя говноподелка взлетит,
У меня не было своих говноподелок,а строго только заказчика.
И экшон реально показал себя тупорылой херней
А ведь весело же наблюдать было?
Как молодой веселый хипстороватый гомосек всего за 10 лет состарился до потертого морщинистого пидора с раздолбаным очком, который и на зоне то нахер никому не сдался?
такой труп,что каждый месяц идут версии,кучу исправлений и фичи добавляют
print 'get time'
window = gets.chomp()
threads = []
window.times {
threads << Thread.new { tutmetod }
}
threads.each(&:join)
Поехавший в треде, я спокоен
puts 'get time'
window = gets.chomp.to_i
threads = Array.new(window) { Thread.new { tutmetod } }
file = File.new("users.json", "a:UTF-8")
file.puts "user error: " + time2.inspect
file.puts "blalbalba: " + time2.inspect
А как сделать так, чтоб при каждой новой записи удалялась предыдущая? например я путнул юзер еррор, потом путнул блабла, блабла осталось, а юзер еррор удалиось?
Ну или не ласт, а фест, ты понял.
Оставь контакты, скооперируемся
не думаю что распознаватели речи пишут на питоне, скорее просто обертки делают для библиотек, которые на низкоуровневых написаны, ищи аналоги для таких библиотек на руби
>Не нашел на руби распознавателей речи
А ТЫ ВООБЩЕ ИСКАЛ?
https://github.com/markets/awesome-ruby#natural-language-processing
pocketsphinx-ruby - Ruby speech recognition with Pocketsphinx
>Всегда нравились эти либы. ПО 6 лет не обновляемые.
pocketsphinx -> latest commit 28 Mar 2020
pocketsphinx-ruby -> latest commit 25 Jul 2017
Если там за это время хоть что-то изменилось именно в апишке вызовов (а не во внутренностях), то сам подправишь рубишный гем.
>>68617
>На питоне гуглится в два клика
Ну вот я тоже решил загуглить
Picking a Python Speech Recognition Package
A handful of packages for speech recognition exist on PyPI. A few of them include:
• apiai (эта хуйня ходит в Google Cloud Dialogflow)
• assemblyai (эта хуйня ходит в https://www.assemblyai.com)
• google-cloud-speech (эта хуйня ходил в Google Cloud Speech)
И ВНЕЗАПНО ЕСТЬ ПРИМЕР ДЛЯ РУБИ В ОФИЦИАЛЬНОЙ ДОКУМЕНТАЦИИ
https://cloud.google.com/speech-to-text/docs/samples
• pocketsphinx (это та же самая хуйня, что я порекомендовал двумя постами выше)
• SpeechRecognition (Library for performing speech recognition, with support for several engines and APIs, online and offline <- солянка из остальных либ в этом списке)
• watson-developer-cloud (нужно ли говорить в какое облако эта хуйня ходит за распознаванием речи)
• wit (ходит в wit.ai, есть рубишный SDK https://github.com/wit-ai/wit-ruby)
>>68617 >>68857
ДАК Я ПРОСЛУШАЛ В ИТОГЕ ГДЕ ТАМ НА ПИТОНЕ ТОТ САМЫЙ OPEN-SOURCE SPEECH RECOGNITION КОТОРЫЙ РАБОТАЕТ ЛОКАЛЬНО, НИКУДА НЕ ХОДИТ И ДЛЯ КОТОРОГО НЕТ ОБЁРТКИ НА РУБИ?
Ну и гуглится в два клика, само собой)))098
>Всегда нравились эти либы. ПО 6 лет не обновляемые.
pocketsphinx -> latest commit 28 Mar 2020
pocketsphinx-ruby -> latest commit 25 Jul 2017
Если там за это время хоть что-то изменилось именно в апишке вызовов (а не во внутренностях), то сам подправишь рубишный гем.
>>68617
>На питоне гуглится в два клика
Ну вот я тоже решил загуглить
Picking a Python Speech Recognition Package
A handful of packages for speech recognition exist on PyPI. A few of them include:
• apiai (эта хуйня ходит в Google Cloud Dialogflow)
• assemblyai (эта хуйня ходит в https://www.assemblyai.com)
• google-cloud-speech (эта хуйня ходил в Google Cloud Speech)
И ВНЕЗАПНО ЕСТЬ ПРИМЕР ДЛЯ РУБИ В ОФИЦИАЛЬНОЙ ДОКУМЕНТАЦИИ
https://cloud.google.com/speech-to-text/docs/samples
• pocketsphinx (это та же самая хуйня, что я порекомендовал двумя постами выше)
• SpeechRecognition (Library for performing speech recognition, with support for several engines and APIs, online and offline <- солянка из остальных либ в этом списке)
• watson-developer-cloud (нужно ли говорить в какое облако эта хуйня ходит за распознаванием речи)
• wit (ходит в wit.ai, есть рубишный SDK https://github.com/wit-ai/wit-ruby)
>>68617 >>68857
ДАК Я ПРОСЛУШАЛ В ИТОГЕ ГДЕ ТАМ НА ПИТОНЕ ТОТ САМЫЙ OPEN-SOURCE SPEECH RECOGNITION КОТОРЫЙ РАБОТАЕТ ЛОКАЛЬНО, НИКУДА НЕ ХОДИТ И ДЛЯ КОТОРОГО НЕТ ОБЁРТКИ НА РУБИ?
Ну и гуглится в два клика, само собой)))098
Ну что поделать, ты проиграл в генетическую лотерею. Рекомендую в таком случае попробовать js или go.
Допустим я создаю Object.create(c.._type: "q", c.._id: 1)
Если да, то делать c...ble.class.name или нужно еще downcase?
Если у тебя полиморфик связь называется, например, addressable, то рельса за тебя все сделает.
YourModel.create(addressable: SomeAddressModel.last)
Держи в курсе, ёбик
Казалось бы зачем изучать мертвый язычок с дин. типизацией в 2к20.
Ан нет, все верно! Нужно изучать!
Чтобы переписывать рубёвое легаси на нормальные язычки :)
В майгрейшине есть такое: t.integer "status", default: 1
В модели, например: enum status: { one: 1 }
На вьюхе селект в таком виде
Post.statuses.each |k,v|
option value="#{v}"
= k
Когда запись сохраняется, в бд status должен быть 1, а по факту там "one". Хотя тип integer
> open(@jpnFile){|jpnfd|
> open(@engFile){|engfd|
> @avsim,@alignment =
> AlignLib::alignFile(jpnfd,engfd)
> }
> }
В ruby 1.8 работает, а в ruby 1.9.x пишет "can't convert Fixnum into String" на вызове alignFile. Есть у кого опыт как это фиксится?
Если что, в C-расширении эта функция регистрируется так:
> rb_define_module_function(m, "alignFile",alignFile, 2)
И ещё, при переходе на 1.9.x, к командной строке интерпретатора пришлось добавить --encoding EUC-JP, не знаю могло ли это повлиять.
рили нравится руби, хочу не просто работать с ним на дядю но и просто задрачивать
но меня сильно демотивирует то что я не бессмертный вампир которому не надо кушать ничего кроме крови простых смертных, и мне нужно где-то работать при всём этом
так где искать работу для джуна-то ёпт, я смотрел на dou и джунов там ищут с минимум годом экспириенса
а где найти этот экспириенс если меня никуда работать не возьмут :(
так как живу в пердях то вариант только удаленка
скорее всего вы со своим элитизмом меня нахуй пошлете, но попробовать спросить можна было
А для каких целей ты просишь контакты?
У тебя есть работа?
Сделаешь rspec-рабом?
Или предложишь пилить какой-то проект за компанию?
Лучше залетай в руби-рандом, оттуда подскажут
Отправляй всем резюме.
Если ты не в Киеве раз уж ты на доу ищешь, делаю вывод, что ты сс Украины и ищешь в своем городе руби позицию, то отсылай резюме, а там видно будет. Пизды за резюме не получишь, а рубистов в твоем городе может не хватать, базарю
Ну вот пример работы. Днем хотел скинуть.
Первый раз я ему кидаю 3 и делаю save(2строка)
Дальше даю "high" и после save, он так и показывает "high"
Это рельсы конвертят потому что у тебя enum объявлен, используй priority_before_type_cast, если нужно число. Может быть есть способ и по-красивее давно enum не юзал потому что это очередной нахуй не нужный высер DHH
Если ты наследуешь класс, и хочешь переопределить метод, но при этом не полностью заменить его, а добавить что-то к вызову. super вызовет оригинальный метод
>priority_before_type_cast
Загуглил эту штуку и вот :) https://github.com/rails/rails/issues/25423
Это руби сдох, не видно что ли
Наконец-то.
Чмо, лучше бы перекатил.
http://www.rubyinside.com/camellia-image-processing-from-ruby-20.html
Как-то отписывался об этом. В 2006 наверн было охуенно со всем вот этим баловаться. А сейчас остается быть думером.
Блэ, а на что тогда расчитывают вот эти вот вкатывальщики, появляющиеся из треда в тред. Еще могу немного в эликсир. Но я не собираюсь его прямо сейчас задрачивать.
Считаю что адекватная идея найти работу на рубях, а там по возможности перекатываться.
Там поле пахать не перепахать.
Симфони и Ларавель там рулят.
Мож питон подучить.Ну жс обязателен
Это хуевая идея
Тебе надо, ты и перекатывай, мудило, либо пиши в конфу
Чего ещё спизданешь?
Статической типизации? Так Матц изначально делал динамическую, так как скорость разработки всяких скриптов выше.
За прошлое
зачем,если он не нужен
Прошел стажировку на четыре месяца и дропнул, слишком тяжело было без базовых знаний
Интересно стоит ли в резюме аргументировать этот самый простой попаданием на двощ и рнн
> Какие планы на будущее?
Заняться шеей, сменить кресло со столом, продолжать дожимать до джуна, к диплому уже работать, на крайняк, сменю стек с руби на любой другой бэкенд, если вообще труба по вакансиям будет.
Кстати кто на каком кресле сидит дома, офис, может посоветуете?
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.headius.backport9.modules.Modules to method sun.nio.ch.NativeThread.signal(long)
WARNING: Please consider reporting this to the maintainers of com.headius.backport9.modules.Modules
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
Он мне писал, это не совсем тот ответ, который мне нужен
Сделал чтобы после submit. Сначала создавался один объект, а потом загружались файлы.
Сейчас решил переделать. Когда я захожу на new у меня сразу создается и сохраняется запись в бд, чтобы получить id.
Дальше когда выбираю файлы, onchange - они начинают загружаться и цепляться к этому id.
-
Вопрос, если кто-то будет просто обновлять /resource/new, то будут создаваться пустые записи - что с этим делать?
Как я понимаю это можно решить каким-нибудь таймаутом и переодическим удалением пустых записей через cron.
Помню советовали Transactions, но это явно не подойдет. Зашел на new - закрыл страницу - хуй
Или сделать какую-нибудь хуйню чтобы если запись не обновлялась и у нее пустые поля, возвращать ее юзеру на new вместо create?
Гуглил, смотрел код на гитхабе.
Банально
get "/"
expect(latest_response.status).to be_ok
Выдает не то что хотелось. В браузере все открывается
Такое говно... скорее всего дело в хосте, но он не выставляется через host!
Пока все настроишь пропадет вся мотивация
Варден, вроде, больше фичей добавляет. Всякие там '.authenticated?' и все такое. Но отдельно с ним не работал, только в девайс геме видел.
Для чего ещё руби годен, кроме рейлс? Почему на нём не стоит делать что-то десктопное/мобильное? Есть ли смысл сильно задрачивать руби вплоть до мелочей, когда всё для чего он понадобится это крудошлёпство?
Любые скрипты и утилиты.
Юзаю мак ось, тут руби встроен в систему изначально, и такие штуки как homebrew и cocoapods написаны на нём.
У anycable есть пример и там делают следующее
var socketId = Date.now();
. Date.now это чисто для примера, но в реальных условиях что там должно быть? Какой-нибудь user_id?
На rails, это все заменено import consumer
Матц решил сделать руби статическим.
Ну все, теперь точно все, с тем же успехом можно было сразу на голанг перекат делать и не ебать себе мозг.
пруф новости
Вы видите копию треда, сохраненную 17 февраля 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.