Это копия, сохраненная 4 декабря 2015 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
RUBY_SHAPKA VERSION = 1.0.5
FAQ
1. C чего мне начать, чтобы стать рубистом?
Отличным началом будет Eloquent Ruby, The Well Grounded Rubyist, Programming Ruby (The Pragmatic Programmers Guide), Ruby Way, Metaprogramming Ruby. Пишем свой код во время чтения.
Документация по стандартным библиотекам http://ruby-doc.org/
Можно пройти руби онлайн - http://tryruby.org/levels/1/challenges/0
Не веришь в свои силы? Прочитал уже книжек много и силы свои хочешь познать, сделай - http://rubykoans.com
2. Какой gem посмотреть, чтобы понять, как писать код?
Лучше всего посмотреть небольшие gem'ы вроде cancancan, devise, camping.
3. Есть ли GUI для руби?
Да. Есть обвязки к Qt, GTK, wxWidgets, Shoes, fxruby (одобренный).
4. Можно ли писать на руби мобильное ПО?
Да. Для iOS есть RubyMotion промышленного качества, для Android - заброшенный разрабами, лагающий и падающий ruboto. Для WinPhone До сих пор ничего не завезли.
5. Как установить разные версии рубей?
Легко и просто: https://github.com/sstephenson/rbenv
Не так просто: https://rvm.io
6. Что почитать по рельсам?
http://guides.rubyonrails.org
http://ruby.railstutorial.org
API: http://api.rubyonrails.org
Прекрасные туториалы в стиле for dummies - http://www.theodinproject.com/ruby-on-rails (а вот тут все тоже, но на русском http://codenamecrud.ru/)
Классический вводный туториал, где делается с нуля клон твиттера, для новичков в rails самое то - https://www.railstutorial.org/book
Для дотошных читателей есть The Rails 4 Way.
7. Хорошие практики по руби и рельсам?
Читаем Rails AntiPatterns, смотрим Rails Best Practices, также неплохо посмотреть Rails Recipes.
Еще продвинутое чтиво - http://tutorials.jumpstartlab.com/
8. Ruby/Rails блоги, рассылки и твитторы
IRC каналы на FreeNode: #ruby, #ruby-core, #RubyOnRails, #rails (не очень активен).
Твитторы @rails, @dhh, @yukihiro_matz, @wycats, @tenderlove
Рассылки ruby-core, rails-core, rails-talk
Подкасты:
- http://rubyrogues.com
- http://ruby5.envylabs.com
Скринкасты:
- http://railscasts.com
- https://peepcode.com
- https://www.destroyallsoftware.com
- http://railsforzombies.com
Блоги:
- rubyflow.com - каждый день новости, новые библиотеки, обновления, все дела.
- rubysource.com - читаем интервью, хорошие практики, и безумные сравнения упоротого дибила-индуса на самом деле их пропускаем
- rubyinside.com - новости, туториалы.
- rubyweekly.com
- http://37signals.com/svn
- http://yehudakatz.com
- http://afreshcup.com
9. Я не могу в английский, что делать, анон?
Идти учить английский, без него тут делать нечего.
10. Есть ли у руби русское коммьюнити?
Нет. Вернее есть, но оно протухло и там полно людей у которых чсв высоко.
Яркий пример - ruby@conference.jabber.ru
11. Какие гемы стоит знать?
capybara, rack, rspec, devise, cancancan, simple_form, solr, sinatra, тысячи их.
Поиск гемов https://www.ruby-toolbox.com
12. Зачем нужны тесты и как их писать?
http://rusrails.ru/a-guide-to-testing-rails-applications
http://habrahabr.ru/post/163597/
Вместо этого можно прочитать классную книгу Everyday Rails Testing
13. Где можно задать глупые и не очень вопросы?
- здесь
- stackoverflow.com
- в рассылке rails-talk
- оф. форум рубей http://www.ruby-forum.com
14. Как фокнуть\сделать фичу\исправить баг, сложно ли это?
Нет, не сложно. На rubyflow появляется много новостей с реализацией новой библиотеки, вы можете сделать тесты, фичу для него, старые либы также обрастают багами, улучшайте их! пишите код.
15. В чём писать код?
Atom, Brackets, Sublime Text, TextMate, Vim, GNU Emacs. Для особо упоротых энтерпрайз-макак есть rubymine, плагины к эклипс и нетбинс.
16. Можно ли писать на руби с под windows?
Можно, но придется обрасти костылями в виде виртуальной машины, придется сходу разбираться с Vagrant и многим другим. Чем дальше ты продвигаешься, тем ближе становится ясно, что пора перекатываться на linux/mac
17. Руби язык одного фреймворка!
Нет, есть еще Sinatra, Lotus, Volt, Grape, отличная штука для DevOps - Chef. Годные генераторы для бложиков - Jekyll, Middleman.
18. Правильное произношение Ruby?
Руби, за любые другие варианты ссу на голову.
19. Ютуб каналы
Youtube driven development...
Вот тебе пара каналов, но никому не говори что учишься по видео.
https://www.youtube.com/channel/UCIQmhQxCvLHRr3Beku77tww/videos
https://www.youtube.com/channel/UCfWZwsP8trUy5uHJg8gcGIQ
https://www.youtube.com/channel/UCSI77lJlzlCFPLdV1RSAoYQ
https://www.youtube.com/channel/UCPIyDzf1vwWc8EQJGUX-vYw - тут на ру$$ком даже.
TODO лист для ньюфагов:
И так, ты поставил руби, уже сгенерировал свой первый проект rails new pidaras
Начни уже с платинового пути, блог >> клон твиттера >> своя имейджборда >> свой гем >> дальше сам придумаешь.
Рекомендации:
1. Для блога, создать роли, Админ, Пользователь (можно использовать паттерн form object). Прикрутить лайки, комментарии.
2. По твиттеру, следуя гайду Хартла, пиши все то что он предлагает в качестве доп. заданий, например оповещение по нику (@eblan: привет)
3. По имиджборде: воссоздать по возможности полный функционал, в этом случае придется ознакомится с javascript/jquery/coffeescript, но тебе так или иначе придется. Еще хорошей фичей будет использование background job и крон тасков (sidekiq, whenever), чтобы заполнять свою борду тредами и постами с другой борды (можно использовать api двача, чтобы вытягивать треды и посты - https://github.com/ID25/api_2ch)
После этого тебе будут нужны паттерны, без них твой код превратится в говно. Один из часто используемых - Service Object.
https://netguru.co/blog/service-objects-in-rails-will-help - о сервисах
Еще паттернов - https://robots.thoughtbot.com/back-to-basics-solid
Прочитал? Теперь рефактори то, что уже написал. И не забывай покрывать тестами.
Хорошим финалом будет деплой, это пожалуй самое болезненное, и ничего общего с деплоем на heroku, где тыц тыц и готово. Придется поковыряться со смежными вещами и узнать много нового, уже устоявшийся гем для таких дел - Capistrano.
Не забывайте спрашивать у анонасов вопросы, код лучше показывать через gist или pastebin с подсветочкой.
Ну, а мы открываем очередной Ruby Thread.
И как тебе?
Приклеилась.
Нету какого-нибудь хитрого метода тип .sumirui_suka?
http://hh.ru/resume/ed6d42fd0000e5fc750039ed1f375033614b41?query=Ruby+on+Rails
> 23 года
> опыт работы 3 года
> запросы 10 000 USD
> (2 года назад) Формирование команды Ruby on Rails разработчиков, их обучение. Контроль качества выполненных работ
Всё как в соседнем треде, где сразу после школы — синьоры, а в 21 уже тимлиды. В "опыте работы" больше ничего толком и нет, зато в overview потоки опухшего от мании величия сознания, без запятых — дабы не прерываться.
Пацаны, это так нормально, да? Так и нужно делать, чтобы тебя на работу мечты пригласили?
Впрочем, я бы не запостил это сюда, ели бы меня не добило вот это:
> упоминание стайл гайдов как своей особенности
> EventMachine в одном ряду с рельсами и синатрой
> перечисление СУБД, поисковых движков и компонентов Rails как "инструментов разработки"
> Я знаю все основные вещи такие как jQuery, underscore
> На последней работе я имел опыт работать тимлидом и менеджером.
Если бы там не было про 10k$, то резюме-то вроде нормальное (хотя если нет упоминания про классические алгоритмы и структуры данных, то не оч конечно).
Ага, то есть грамматика нативного языка на 5/10, путаный, неструктурированный наброс ссылок на технологии и самохвальство — это уже достаточно неплохо? Я подобный вопрос некоторое время назад задавал в апворк-треде в воркаче, и там пояснили, что это удел индусов. В принципе, я почитал несколько overview top-rated'ов там и пришёл к выводу, что так оно и есть.
И ведь этим людям поручают кого-то там ОБУЧАТЬ!!!1321
Дело в том, что моё резюме сейчас занимает 3-4 листа, пикрелейтед советует ужать до 1. В то же время, не могу найти адекватного резюме, которое бы не ебало лаконичность в рот.
Не понимаю, что там путанного на странице в hh, всё нормально выглядит. Ну не формат каноничного резюме, но всё написано вполне нормально.
>которое бы не ебало лаконичность в рот.
Кстати, ведёшь себя как чурка которая только из кишлака. То что ты начинаешь материться на анонимном форуме, где за тобой никто не смотрит показывает, что нет у тебя определённого личностного уровня, морали.
Тебе не руби надо учить, а элементарный этикет и просто поднимать уровень своего сознания на более высокий.
> Термины CV и резюме часто применяются как полные синонимы и обозначают документ, который соискатель предоставляет потенциальному работодателю, выставляя свою кандидатуру на открытую вакансию.
В данном случае я не понимаю разницы. Ты не мог бы объяснить?
Вот пример: резюме птушника colleague student с английской вики. У меня в таком же формате описания должностных обязанностей и достижений получается тупо в 3 раза больше, значит ли это, что после 4 лет работы résumé магическим образом превращается в circullum vitæ? Или нужно уменьшать детализацию описаний?
>>560362
Ну вот я бы не пригласил такого на собеседование: ощущение, что он вместо конкретики будет двигать тазом и рычать. А вот такого пригласил бы:
http://hh.ru/resume/a225eb2a0000ac855b0039ed1f736563726574?query=Ruby+on+Rails
Няша, это идол твоей пещеры.
Так часто бывает, кажется что тот другой чел казел и собеседование у тебя бы он не прошел, но это как на зло ничуть не мешает ему быть успешным, а тебе заваривать доширак. Бывает наоборот, кажется что няша, а успешности-то нету. Успешность это вообще отдельное искусство, которое хоть и кореллирует с грамматикой и качеством работы, но часто встречаются занятные исключения.
Другое дело, что резюме на хх это ни разу не показатель успешности, и бугуртить-то собственно не из-за чего. Или ты собрался передрать у него? Не надо, если тебе этот стиль не нра, чего давиться-то вокруг миллиарды других резюме, которые могут являться прекрасными источниками для вдохновления.
Да не собрался я передрать ни у кого, упаси б-же! Я на днях тут нашёл ту картинку про реакцию на резюме HRа и айтишника и хочу понять, какой стиль повествования в резюме актуален. Ну, знаешь, чтоб всем нравиться, ведь это необходимо для того, чтобы не упустить работу своей мечты.
Есть идея взять картинку Ruby on Rails Competencies из ОП-поста, выделить в ней те области, которые пересекаются с моей областью компетенции, и прикрепить ссылку на полученную картинку к резюме. Это позволило бы убрать по крайней мере перечисления в резюме, оставив только самые искабельные.
Как думаешь, анон, годная тема?
IMHO, вот годное резюме:
http://www.superjob.ru/resume/veduschij-programmist-5550276.html
Бортовые приборы, вечная мерзлота и т.п. — не то, что хипсторы с пиздоном.
В электронном CV тебе какая разница, это же не листок а-четыре. Пиши что, где, когда делал.
Тем более резюме можно несколько штук сделать. Одно полное (где описываешь как писал проги в НИИМАШ'е каком-нибудь, заканчивая сайтиками на руби), а второе это то на которые ты ставишь и там уже только про руби.
Резюме, безусловно, крутое. Но там специфика такая, что каждый проект уникален. А если ты скажешь, что делал очередное крудошлёпство для очередной компании, очередную ERP/CRM/соцсесть, добавишь стандартных тегов вроде SaaS, MVC, Agile, REST, то чем ты будешь лучше Ерохина? Ведь Ерохин пишет всё то же самое, только ещё двигает пальцами, как будто УЖЕ рефакторит твой код и рычит, как будто охлаждает процессор своего компа, исполняющего нагрузочное тестирование.
Кстати, удивлён, что её вовсе не парит упоминать о работе в полусекретных проектах. В AT Consulting народ стремается упоминать на публике МВДшные проекты, несмотря на то, что никто за исключением овнеров редких проектов никаких форм не подписывал.
Если красиво и понятно сделаешь, то годная, если нет - то нет.
Та картинка из оп-поста слишком мелкая ее увеличивать надо.
Да не парься ты чувак, твоё резюме это GitHub, всё.
> Та картинка из оп-поста слишком мелкая ее увеличивать надо.
Зато охват будет виден сразу. Сама картинка-то будет выглядеть так: http://s29.postimg.org/yph220x91/Rails_Competencies.png
Открываешь ссылку → видишь полупрозрачных облакоподобных выделений → кликаешь→ читаешь подробнее.
Меня там только ветка "IDE" смущает. При чём тут IDE!? Я что должен сделать свой IDE с перечисленными функциями? Или научиться пользоваться IDE? А если я успешнее справляюсь с 7 окнами SciTE (семантически поделенными) и Dolphin в углу, чем коллеги, которые уже при одновременной работе с 10 файлами теряются в своём саблайме и вынуждены постоянно переоткрывать вкладки, вспоминая, на чём остановились.
>>560466
> В электронном CV тебе какая разница, это же не листок а-четыре
Так ведь они же их РАСПЕЧАТЫВАЮТ, а потом ПЕРЕЛИСТЫВАЮТ за столом во время собеседования.
> Одно полное (где описываешь как писал имиджборду на питоне каком-нибудь, заканчивая спамботами на руби)
Не, я такое писал только в своём самом первом резюме, чтобы меня хоть куда-то взяли.
Посоны, я чет совсем глупый, не понимаю, как использовать стейт-машину. Недавно наткнулся на этот паттерн в некоторой литературе это называют паттерном и обнаружил, что это как раз то что нужно в моем проекте - у сущностей есть статусы, которые отражают жизненный цикл и все вытекающее, типа только в такой статус можно перейти, при переходе нужно сделать то-то, если не выполняется условие, то нельзя и т.п.
Я посмотрел внимательно имеющиеся гемы (state_machine, aasm, wokflow, states_man) и все они работают по принципу события (ну как и полагается конечному автомату), то есть:
ЯВНЫЙ ВЫЗОВ СОБЫТИЯ -> КОЛБЕКИ ПЕРЕХОДА -> НОВОЕ СОСТОЯНИЕ
Ну то есть если я хочу опубликовать статью, то я должен вызвать @article.publish.
Но ведь на практике так редко делают. В большинстве случаев статусы меняются селектом выбора статуса в общей форме, наряду с другими полями.
Я сразу извиняюсь за тупость, но я не понимаю, а как использовать стейт-машину в этом случае - в случае редактирования общей формы с селектом статуса?
Отслеживать в befor_save :check_status_changed и если изменился, то вызывать self.событие_для_перехода_в_новый_статус() ужасно да и не получится, статус-то уже другой.
Это как раз то, от чего стейт-машина должна избавлять. А как тогда?
Я наверное чего-то не понимаю, потому что это правильная практика и популярные гемы. Я не могу поверить, что их используют только путем вызова события. Но все примеры, которые я нашел, действительно используют эти гемы только путем вызова события и в интерфейсе нет селектов - публикация осуществляется кнопкой и отдельным контроллером.
Сдаётся мне, что если у тебя стейт выбирается вручную, то стейт машина просто не для тебя.
А как он должен выбираться? Классический пример для стейт-машин в этих гемах это заказ в интернет магазине (new, in_process, shipped etc). Практически все эти статусы меняются вручную.
Есть два стула.
На одном ты редактируешь все поля на одной форме. По мере того, как у тебя кол-во полей увеличивается, вместе с тем увеличивается опухоль мозга у контент-менеджера.
На другом ты прикручиваешь стейт-машину, херачишь по форме на каждый стейт, а переход между ними выполняешь кнопкой "ПОЕХАЛИ". По мере того, как у тебя кол-во полей увеличивается, ты увеличиваешь кол-во подформ и, опционально, кол-во стейтов.
Хуйня какато.
Ну а если нужен селект, без других полей. В отдельной форме просто выбор стейта. Тогда что?
Значит этот паттерн не подходит под твою задачу. Хватит уже паттерны всю таскать. Задача должна порождать паттерны, а не паттерны задачу.
Ну смотри.
Скачай livecd Ubuntu, Kubuntu и загрузи их в виртуалку, даже устанавливать ничего не надо. Потыкай и посмотри как тебе и что, отличия в том, что Ubuntu сильно привязана к решениям Canonical и там пропихивают всякие локальные разработки, когда Kubuntu использует в качестве рабочего окружения KDE, который можно без проблем накатывать на любой дистрибутив линукса, в отличии от Unity из Ubuntu.
Оба дистра основаны на Debian карочи, но у каждого свои наборы стандартного софта, работа с пакетами одинаковая через apt-get.
Kde даже в основной системой жрет ресурсы как не в себя, не говоря уже о виртуалке. Unity - говно по понятным причинам. Пусть Xubuntu ставит.
А с чем ты тут не согласен? С тем, что конечное решение не обязано состоять из одних паттернов?
Ubuntu/Mint. Второе - форк первого, чуть больше софта в тсандартных репах, чуть другие оконные менеджеры (юнити сосет жеж). Придется немного привыкнуть к алиенской логике линекса и чуть попердолится в соснольку.
Ну смотри, ставишь VirtualBox, ставишь на него юбанто линакс, обязательно устанавшиваешь VirtualBox Guest Additions и в принципе все - можно пользоваться.
Под винду один из самых безгеморойных способов.
Что ты не понял, в виртуалку нужно ставить легковесную систему, потому что виртуалка - это тормоза. Да и на основной комп нужно ставить легковесную систему. Xubuntu легче Ubuntu и значительно легче Kubuntu.
Почти (гугли POSIX). Командный интерпретатор тот же, отличаются пути и немного разный набор утилит.
2015 год, 16гб оперативки и ай5 может позволить себе даже школьник, откладывающий с завтраков на новый игровой компьютер.
Хватит на штук 30 КДЕ с падающими плазмами.
Поставит Xubuntu и столкнется с тем, что кроме "меньше ресурсов жрёт" плюсов то у неё собственно говоря и нет. Говорю как человек, который на Xubuntu сидел очень долго.
>>560619
Да, Минт кстати тоже очень хороший выбор. Особенно на Cinnamon, вообще сказка. Некий компромисс между KDE и XFCE - жрёт меньше первого, но гораздо дружелюбнее второго.
>>560609
Консолечка то? Никакой. Только это не iOS, а OS X, первая это на айфонах. В обоих стандартные шеллы-баши, короче ты можешь использовать в обоих одинаковые инструменты без смс и каких-либо проблем. Даже можешь один шелл в обоих системах использовать, zsh например.
Асло, если для тебя терминологии пока много, то просто накати уже какой-нибудь прыщедистр из перечисленных и попробуй на деле, станет всё понятнее.
Уже ответил про легковесную систему, но повторюсь. В этом дроче нет никакого смысла, планка оперативки стоит косарь рублей, хватит на десяток кед которые утекают как в песнях Мумий Тролля.
На современном пека с SSD и подобными перделками система грузиться за секунду. А если совсем упоротый на легковесности, но XFCE тяжелое говно, которое можно заменить тайловыми менеджерами или опенбоксом каким-нибудь.
>Поставит Xubuntu и столкнется с тем, что кроме "меньше ресурсов жрёт" плюсов то у неё собственно говоря и нет.
Равно как и минусов. Отсутствие мокрописек - скорее плюс. Процессор пусть занимается тем, чем надо - вычислениями, а не ебаной плазмой.
У меня ноутбук с IPS матрицей, который меня всем устраивает (для йоба вычислений я и амазон могу арендовать), и я даже не в курсе, сколько у него оперативки у меня же не кеды. Ты сам в виртуалку кеды ставил когда-нибудь?
Вычислениями чего? Вот чем ты занимаешь свои 4-8 ядер? Сейчас даже рендер всюду через GPU. Хочешь оставить процессор для вычислений - поставь i3 или ещё лучше bspwm какой-нибудь.
А это ниасиляторство с желанием показать модный скринфетч с всего 150мб оперативки ест из 8 гигов, круто же!
>и я даже не в курсе, сколько у него оперативки
>у меня же не кеды
Нет, ты просто профнепригодная блондинка.
У меня процесс xorg сейчас жрет 0,3-0,7%, мне достаточно. Вычислениями - да чего угодно, я ж программист, у меня бывает по 2-3 расчета запущены одновременно. Может быть 2-3 расчета и фильм запущен.
/s/-блядок закукарекал. Я вообще характеристик не помню, даже процессор. Мне была важная шустрая CUDA и IPS матрица. У меня asus N550J, сам можешь погуглить.
>Мне была важная шустрая CUDA и IPS матрица.
Пивас и кальмары, ага.
>Я вообще характеристик не помню, даже процессор
Как страшно жить.
Ничто так не выдает принадлежность человека к низшим классам общества, как способность разбираться в дорогих часах и автомобилях.
Это точно, человек знающий какой у него процессор (хотя бы примерно) и сколько у него ОЗУ, ну просто где-то на одном уровне наркоманом сидящим на крокодиле, а то и хуже.
Олсо, эта подколка работает только если у человека нет этих дорогих часов или автомобиля, а про свой автомобиль (компьютер) знать вполне нормально.
Классику знать надо.
Хозяин кабинета заметил его взгляд и посмотрел на свои часы.
— Нравятся? — спросил он.
— Еще бы! — сказал Татарский. — Если не ошибаюсь, «Piaget Possession»? Кажется, стоят семьдесят тысяч?
— Пеже позесьон? — Тот поглядел на циферблат. — Да, действительно. Не знаю, сколько стоят.
— Господин Пеже со своими пацаками, — сказал Морковин.
Хозяин кабинета явно не понял шутки.
— Вообще, — быстро добавил Морковин, — ничто так не выдает принадлежность человека к низшим классам общества, как способность разбираться в дорогих часах и автомобилях.
Ничто так не выдает принадлежность человека к низшим классам общества, как способность разбираться в языках программирования и фреймворках.
Жопочтец Пелевина незаметен. Какая это классика? Разве что уровня рунете и мемчиков о дорогих айфонах и переплатах за бренд от любителей работать в сфере обслуживания заводов и общепитов
- Главная мысль, которую человек пытается донести до других, заключается в том, что он имеет доступ к гораздо более престижному потреблению, чем про него могли подумать. Одновременно с этим он старается объяснить окружающим, что их тип потребления гораздо менее престижен, чем они имели наивность думать. Этому подчинены все социальные маневры. Больше того, только эти вопросы вызывают у людей стойкие эмоции.
- Вообще-то мне в жизни попадались и другие люди, - сказал я с легкой иронией.
Иегова кротко посмотрел на меня.
- Рама, - сказал он, - вот прямо сейчас ты пытаешься донести до меня мысль о том, что ты имеешь доступ к более престижному потреблению, чем я, а мой тип потребления, как сейчас говорят, сосет и причмокивает. Только речь идет о потреблении в сфере общения. Именно об этом движении человеческой души я и говорю. Ничего другого в людях ты не встретишь, как не ищи. Меняться будет только конкретный тип потребления, о котором пойдет речь. Это может быть потребление вещей, впечатлений, культурных объектов, книг, концепций, состояний ума и так далее.
- Отвратительно, - сказал я искренне
>а миллиардеры коллекционируют дорогие автомобили
Да.
>и идеально в них разбираются
Нет. Идеально разбираются в дорогих автомобилях унтерменши, которые себе не могут их позволить.
Это не я кому-то пытаюсь доказать, что если я не помню нахуй мне не нужные характеристики моего ноута, который я покупал в конце 2013 года, то мне нужно идти вон из профессии.
Это кто тебе такую глупость сказал? Забавный ты, туповат немного. Ты видимо ещё не понял, что люди обычно коллекционируют и собирают то, что им нравится, следовательно как раз таки и разбираются в этом.
Жлобами называют именно тех, кто строит уебищные золотые домики аля Янукович называя это дизайном читай - не разбирается и покупая золотые автомобили за миллионы, опять таки на разбираясь в этом. Ведь они слишком хороши для этого, да?
А выставлять своё невежество аргументацией уровня ЭТО ДЛЯ НИЩИХ Я В ЭТОМ НЕ РАЗБИРАЮСЬ настолько жалкая попытка его защиты, что даже объяснять лень.
Ты пытаешься выставить собственное невежество как превосходство. Ты совсем видимо тупой и это печально.
Ноуп. Домики Януковича весь интернет облетели, всем реддитом смеялись даже в разделе дизайна интерьеров.
Не чувак, окей, у меня вот не один ноутбук, и я могу забыть что там в каком, но просто посмотреть эту информацию без гугления ты можешь или нет?
Тем более мы все тут прекрасно понимаем, что ноутбук это всё таки не часы, туда и память можно поставить и диск сменить, а на некоторых процессор и ведеокарту.
А если ты разработчик на ПК, то такая инфа у тебя вообще должна в подкорку откладываться сама собой, без лишних усилий: у меня такой-то проц, диск, рам.
Хотя может ты разработчик на HTML?
Как думаешь, зачем CUDA разработчику на HTML? И ты меня еще в тупизне обвиняешь.
Чтобы HTML рендерился быстрее? Только богу ведомо зачем разработчику на HTML понадобилась CUDA, особенно если он не знает сколько у него оперативки.
Ты либо очень толстый тролль, либо очень тупой. Начнем с CUDA. Учитывая, что ты у нас мамкин умник и не забиваешь себе голову таким говном, то как же ты выбирал кампуктер с "быстрой CUDA" не ориентируясь на железо, когда технология привязана к конкретному железу? И я говорю сейчас о конкретных моделях, а не абстрактных характеристиках, но ты ведь просто сказочник и говоришь умные словечки просто так, либо очень тупой.
Ну и цитата Пелевина. Хех, Пелевин прекрасный писатель. Настолько хорошо изучить типичный контингент туповатых предпринимателей с лепрочки, что продает им их же тупость под приправой постмодерна, о незатейливых и успешный бохатых людях, которые не думают о таких мелких вещах. Именно поэтому бизнеса в СНГ нет, а работодатели такие скряги. Наживаясь на "осуждателях потреблядства" коим является русский Ванёк с печи, который познал истину тупых потреблядей.
Смеялись всей США короче, где если ты сделаешь покупку не обдумав её тысячу раз - тебя назовут дауном, который не может в капитализм и экономию.
На этом дискуссию и закончим.
Ну ты чего так наезжаешь на человека? Может он уже на таком уровне, что когд ахочет купить антивирус, то случайно покупает всю фирму и плюс все над ней стоящие. Чего мелочиться-то.
На каком-то из сервисов типа яндекс-маркета сделал фильтр по размеру дисплея, ips, ssd, выбрал видюху nvidia потоповее на тот момент. А, перед этим еще зашел в магаз и посмотрел, какой размер дисплея будет удобнее всего. Осталось моделей 10, просмотрел все, выбрал и забыл. А как еще можно покупать ноут?
У нас нет никакой дискуссии, ты просто выебываешься своей невротъебенной крутизной: ты помнишь характеристики своей пекарни. Наверное еще знаешь, сколько гигов памяти в твоей мобилке и версию прошивки своего роутера. Тыж программист.
Представь себе, я же не даун которому трудно запомнить простейшие характеристики.
Это не ты случайно спрашивал про командную строку iOS и линукс?
Вообще забавно, как в нашем мире такие тупые люди могут тем не менее иметь возможность работать и получать за это деньги и вроде как считаться специалистами, диво.
Олсо, тыжпрограммист, я тебя не утюг прошу ведь починить. С логикой у тебя что-то не то.
>Наверное еще знаешь, сколько гигов памяти в твоей мобилке и версию прошивки своего роутера.
Лол, ну я же не баба которой хахаль покупает айфон шоб було как у остальных куриц. Поскольку я активно использую телефон и как наладонный компьютер, то естественно, что я о нём знаю очень много.
А вот версию прошивки роутера не помню, там слишком сложный номер всё таки.
Кончай пропагандировать невежество.
То, что ты можешь запомнить простейшие характеристики, не делает тебя ни дауном, ни не дауном. Это вообще к твоим качествам как программиста относится весьма косвенно. Когда у меня первый компьютер появился за бешеные по тогдашним временам деньги, я знал его характеристики наизусть. P-III 500 coppermine/128 mb dimm/fujitsu 13 gb fujitsu/creative geforce 256. Сейчас у меня машина где-то пятая, причем есть десктоп, ноут, ноут жены и ее десктоп, мне просто похуй на все эти цифры, которые никак на меня не влияют. Уже лет пять как я прогресса вообще не ощущаю, это раньше производительность по экспоненте росла.
>>560674
А я зашел и попросил самсунг с диагональю 4.3. 4.3 не было, взял 4.5. До этого у меня лет пять была nokia n900. И знаешь... я ведь тоже не помню, сколько там памяти было.
Нимодный.
Чувак, но с тебя ведь не количество шейдерных блоков в видеоускорителе спрашивали и не битность шины.
Даже в винде когда открываешь замералку производительности там всегда память показывают, это такая же характеристика как диагональ экрана сотика, если тебе так понятнее.
И очень забавно видеть человека, который что-то там говорит про CUDA и в принципе не парится по поводу характеристик железа. Уж не говоря, про то что даже такие творческие люди как рисователи макетов сайтов в фотошопе дофига так задрачиваются с видеокартами, жёсткими дисками, ОЗУ, кещированием, бекапами.
«Я не покупаю это», как говорят американские пиндосы.
Карочи, лёль ставь кеды с плазмой, у тебя 12 гигов в нотике. Правда не знаю как у тебя гибридная графика заработает. Говорят бамблби стал нормик.
>Чувак, но с тебя ведь не количество шейдерных блоков в видеоускорителе спрашивали и не битность шины.
У меня вообще никто ничего не спрашивал. Если ты не помнишь, я написал, что не ебу, сколько у меня оперативки, потому что xfce летает. На четырехгиговом десктопе xfce тоже летает. И на нетбуке acer он нормально работает. Короче, он работает везде, можно не ебать мозг, и я так и не понял, какие плюшки дают кеды, кроме того, что можно гордиться тем, что ты не нищеброд и купил планку памяти ради этих самых кед. Лучше, что есть в кедах - это виджет с красным шариком, который можно бросать, а он отскакивает. Остальное, типа konquerror'а, я и так поставить могу без установки плазмы.
>И очень забавно видеть человека, который что-то там говорит про CUDA и в принципе не парится по поводу характеристик железа.
Зачем мне париться об этом? Когда нужно добиться перформанса на сервере заказчика, решают бенчмарки через ssh. Для себя - тоже как-то похуй, не будет хватать - инстансы на амазоне во Франкфурте стоят 20 центов в час.
>у тебя 12 гигов в нотике. Правда не знаю как у тебя гибридная графика заработает. Говорят бамблби стал нормик.
В моей версии 8, бамблби работает. Главное, сразу поставить нужное ведро и проприетарные дрова для последней версии CUDA.
Оу! Мне казалось ты тот чувак который спрашивал про то, что ему вместо семёрки поставить.
Сам я юзаю кеды, но тебя от крысы отговаривать не буду (она у меня на всяких livecd/usb). Замечу, что кеды куда более конфигурабельнее xfce/gnome.
Тот чел зашел в руби тред спросить за руби, при чем тут я вообще? Мой первый пост тут - >>560621 . И я по-прежнему советую не ставить кеды на виртуалку. Я так раньше делал - ничего хорошего. Если знаний нет для ubuntu server, лучше всего взять самый легкий вариант, но без фанатизма типа тайлового вм. Lubuntu или xubuntu, но lubuntu я не пользовал и советовать не могу.
А, нет, вот мой первый пост.
Ну, у меня KDE на основной системе не жрёт ресурсы как не в себя на дебиане.
Вот на виртулке (тем более VirtualBox) конечно графика будет подтормаживать, но это решается отключением эффектов или вообще композита.
Ну а в «убунту-сервер» любой дистрибутив превращается отключением графической загрузки.
Тогда сам пиши выбиралку, которая будет вызывать нужный метод стейт-машины. Всё равно что нарисовать 10 кнопок "ПОЕХАЛИ".
А что скажешь насчёт Минта на Кедах?
Это проблемы даунов в первую очередь, которые не знают что им нужно, а не ехать хотят. В линуксе всё для этого есть уже, поэтому мак тоже не нужон.
Пидор всех систем.
Ну, так поднимай в треде интересные тебе темы, хуле ты разнылся тут? Отвергаешь, — предлагай!
Вопрос имею по turbolinks.
Хотелось бы при клике на линк ( link_to product.title, product, data: { remote: true, toggle: "modal", target: "#ajax-modal"} )
выводить данные о продукте в модальном окне.
1. Делаю модалку в index.html.haml, там же где и список продуктов
.container{id: "product_info"}
#ajax-modal.modal.fade
.modal-header
%button.close{"aria-hidden" => "true", "data-dismiss" => "modal", :type => "button"} ×
%h3.modal-title
=@product.inspect
.modal-body
.modal-body-content
2. В контроллере на show вешаю
respond_to do |format|
format.js { render json: @product }
end
3. Захожу на страницу со списком продуктов, тыкаю в линк
и получаю хуй как на пике.
При этом в логе данные были запрошены и отданы
Processing by ProductsController#show as JS
Parameters: {"id"=>"1781"}
Product Load (0.3ms) SELECT "products".* FROM "products" WHERE "products"."id" = $1 LIMIT 1 [["id", 1781]]
В связи с этим ни хуя не догоняю, как запрошенные данные воткнуть в модалку ;(
Вопрос имею по turbolinks.
Хотелось бы при клике на линк ( link_to product.title, product, data: { remote: true, toggle: "modal", target: "#ajax-modal"} )
выводить данные о продукте в модальном окне.
1. Делаю модалку в index.html.haml, там же где и список продуктов
.container{id: "product_info"}
#ajax-modal.modal.fade
.modal-header
%button.close{"aria-hidden" => "true", "data-dismiss" => "modal", :type => "button"} ×
%h3.modal-title
=@product.inspect
.modal-body
.modal-body-content
2. В контроллере на show вешаю
respond_to do |format|
format.js { render json: @product }
end
3. Захожу на страницу со списком продуктов, тыкаю в линк
и получаю хуй как на пике.
При этом в логе данные были запрошены и отданы
Processing by ProductsController#show as JS
Parameters: {"id"=>"1781"}
Product Load (0.3ms) SELECT "products".* FROM "products" WHERE "products"."id" = $1 LIMIT 1 [["id", 1781]]
В связи с этим ни хуя не догоняю, как запрошенные данные воткнуть в модалку ;(
Данные, которые ты получаешь аяксом (@product.to_json), тебе на клиенте вставлять нужно. Повесь ujs-овый event на свой линк, который будет это делать.
В браузер какой ответ приходит в консоли?
Было бы что осваивать. Гугли socket.io. Руби/рельсы тут ни при чём, со стороны бекенда оно от Ajax/Comet не отличается.
Интересное решение. Добавил в избранное, хотя вряд ли когда-то понадобится, ведь что-то кроме чятиков делать на вебсоккете смысла не густо.
В контроллере mailers/subscribes_mailer.rb у меня такая хуйня:
[CODE]class SubscribesMailer < ActionMailer::Base
default from: "mail@yandex.ru",
template_path: 'mailers/subscribes'
def subscribe
mail to: 'mail@yandex.ru',
subject: "new subscribe"
end
end[/CODE]
В вьюхе, где находится форма отправки:
[CODE]<form id="newsletter-form" class="content-form clearfix" action="#" method="post">
<%= button_to "Добавить", SubscribesMailer.subscribe, :class => 'button' %>
<input id="newsletter" type="email" name="newsletter" placeholder="Введите свой e-mail адрес …" class="required">
</form>[/CODE]
При обновлении страницы ожидаемо получаю ошибку:
[CODE]undefined method `SubscribesMailer' for SubscribesMailer:Class
[/CODE]
Умные люди подсказали что я делаю неведомую хуйню, и нужно создавать пользователей, таблицу users со столбцом send_news:boolean. Галку send_news выводить на форму - отдельную или просто в профайле юзера. Создать таблицу с новостями, где будут писаться новости. А далее создать мейлер, которым будет вся эта хуйня рассылаться.
[CODE]class ArticlesMailer < ActionMailer::Base
default from: 'mail@yandex.ru'
def article_mail(subscriber_id, subject, article)
@subscriber = User.find subscriber_id
@article = article
mail(to: @subscriber.email, subject: "We have news! #{subject}")
end
end[/CODE]
Дело в том, что я не хочу заводить юзеров вообще. Мне нужно только чтобы почта которую ввели на сайте отсылалась по определенному адресу автоматически, не более. Неужели таки придется заводить вот это все? Таблицы эти со списком подписчиков? Подскажи анон, молю.
В контроллере mailers/subscribes_mailer.rb у меня такая хуйня:
[CODE]class SubscribesMailer < ActionMailer::Base
default from: "mail@yandex.ru",
template_path: 'mailers/subscribes'
def subscribe
mail to: 'mail@yandex.ru',
subject: "new subscribe"
end
end[/CODE]
В вьюхе, где находится форма отправки:
[CODE]<form id="newsletter-form" class="content-form clearfix" action="#" method="post">
<%= button_to "Добавить", SubscribesMailer.subscribe, :class => 'button' %>
<input id="newsletter" type="email" name="newsletter" placeholder="Введите свой e-mail адрес …" class="required">
</form>[/CODE]
При обновлении страницы ожидаемо получаю ошибку:
[CODE]undefined method `SubscribesMailer' for SubscribesMailer:Class
[/CODE]
Умные люди подсказали что я делаю неведомую хуйню, и нужно создавать пользователей, таблицу users со столбцом send_news:boolean. Галку send_news выводить на форму - отдельную или просто в профайле юзера. Создать таблицу с новостями, где будут писаться новости. А далее создать мейлер, которым будет вся эта хуйня рассылаться.
[CODE]class ArticlesMailer < ActionMailer::Base
default from: 'mail@yandex.ru'
def article_mail(subscriber_id, subject, article)
@subscriber = User.find subscriber_id
@article = article
mail(to: @subscriber.email, subject: "We have news! #{subject}")
end
end[/CODE]
Дело в том, что я не хочу заводить юзеров вообще. Мне нужно только чтобы почта которую ввели на сайте отсылалась по определенному адресу автоматически, не более. Неужели таки придется заводить вот это все? Таблицы эти со списком подписчиков? Подскажи анон, молю.
> button_to "Добавить", SubscribesMailer.subscribe
> mail to: 'mail@yandex.ru',
> Умные люди подсказали что я делаю неведомую хуйню
Правильно подсказывают.
Короче, я бы сделал так:
[code]
class Subscriber < ActiveRecord::Base
validates :email, presence: true #ну и формат/уникальность/етц можно добавить
end
[/code]
[code]
class SubscribeController < ApplicationController
def create
subscriber = Subscriber.create
if subscriber.persisted?
SubscribesMailer.subscribe(subscriber).deliver_now
# Отдать что-то для фронта
else
# Отдать что-то для фронта с ошибкой
end
end
private
def permited_params
params.require(:subscriber).permit(:email)
end
end
[/code]
[code]
#config/routes.rb
#...
post :subscribe, to: "subscribe#create"
#...
[/code]
На вьюхе:
[code]
<%= form_for :subscriber, url: sunscribe_path do |form| %>
<%= form.submit %>
<%= form.email_field :email
<% end %>
[/code]
Так не будут нужны пользователи. Список подписанных емайлов будет сохранён в Subscriber.
Потом, когда у тебя будут новости просто дёрнешь список всех подписчиков и отправишь им письма.
Код не тестил. Если не пашет - чини сам
> button_to "Добавить", SubscribesMailer.subscribe
> mail to: 'mail@yandex.ru',
> Умные люди подсказали что я делаю неведомую хуйню
Правильно подсказывают.
Короче, я бы сделал так:
[code]
class Subscriber < ActiveRecord::Base
validates :email, presence: true #ну и формат/уникальность/етц можно добавить
end
[/code]
[code]
class SubscribeController < ApplicationController
def create
subscriber = Subscriber.create
if subscriber.persisted?
SubscribesMailer.subscribe(subscriber).deliver_now
# Отдать что-то для фронта
else
# Отдать что-то для фронта с ошибкой
end
end
private
def permited_params
params.require(:subscriber).permit(:email)
end
end
[/code]
[code]
#config/routes.rb
#...
post :subscribe, to: "subscribe#create"
#...
[/code]
На вьюхе:
[code]
<%= form_for :subscriber, url: sunscribe_path do |form| %>
<%= form.submit %>
<%= form.email_field :email
<% end %>
[/code]
Так не будут нужны пользователи. Список подписанных емайлов будет сохранён в Subscriber.
Потом, когда у тебя будут новости просто дёрнешь список всех подписчиков и отправишь им письма.
Код не тестил. Если не пашет - чини сам
>В контроллере mailers/subscribes_mailer.rb у меня такая хуйня:
Это хуйня должна лежать в моделях.
>В вьюхе, где находится форма отправки:
Для формы отравки используй хелперы
У тебя каша в голове. Для того, чтобы со всем этим разобраться, прочти http://rusrails.ru/ всё, что найдешь в разделе содержание. Управишься за пару суток, После этого все вопросы сами отпадут.
Сначала ругался на то, что нету таблицы, создал таблицу с единственной колонкой subscriber, сделал миграцию, получаю:
Missing template subscribe/create
Какой шаблон должен тут быть?
И в мэйлере не должна приниматься почта в качестве параметра?
\tdef subscribe (email)
\t\tmail to: 'mail@yandex.ru',
\t\tsubject: "new subscribe"
\tend
.html.slim, например
Да это то я понял, где он находиться должен. Что в нем быть то должно?
Это из этого куска сюда кидает?
SubscribesMailer.subscribe(subscriber).deliver_now
# Отдать что-то для фронта
else
# Отдать что-то для фронта с ошибкой
end
Вопрос : я стартанул курс руби на кодакадеми, бросать сразу или докурить до конца и пересесть на чтиво?
И еще вопрос : нашел немного книг на русском, вроде как вводные. Тоже лесом, или можно начать с них?
Задрачивай книжку "Охуеть какая гибкая разработка в этих ваших ебаных рубиновых рельсах, издание 4-е исправленное" до просветления.
но я уже скачал "Мего образованный рубинушка"(
Использую инструменты для дебага, Люк! И смотри стек вызовов.
Кидает тебя из метода subscrie, определённого в классе твоего мейлера.
Ты фак по рельсам вообще читал? После каждого вызова метода мейлера вызывается соответствующий его названию шаблон, чтобы как раз результат рендера этого шаблона-то и послать по почте. Это аналогично работе actions (методов) в контроллерах, где в конце по умолчанию рендерится шаблон, который уйдёт в браузер.
Ты можешь, конечно, переопределить это в теле твоего мейлинг-метода.
В общем создал шаблон html.erb кидает на него после нажатия на кнопку. Но ведь письма не приходят. Что делать ананасы?
>Кстати, ведёшь себя как чурка которая только из кишлака. То что ты начинаешь материться на анонимном форуме, где за тобой никто не смотрит показывает, что нет у тебя определённого личностного уровня, морали.
>Тебе не руби надо учить, а элементарный этикет и просто поднимать уровень своего сознания на более высокий.
Я ебал тебя в рот, вылупок ёбаный. Где своими говном забитыми мозгами ты увидел взаимосвязь между моралью и этикетом в реальной жизни и возможностью написать "ёбаный" на анонимной, блядь, борде?
Вот что пишет в логи эта вся рубинедопрограмма:
Started POST "/subscribe" for 127.0.0.1 at 2015-10-19 23:58:08 +0400
Processing by SubscribeController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"ocITEok5QV79M4Rz1yiRoL2cSSYt1XofBg3kT9TaG/0=", "commit"=>"Save Subscriber", "subscriber"=>{"email"=>"тут реальный email"}}
(2.8ms) BEGIN
(0.9ms) ROLLBACK
Rendered subscribe/create.html.erb within layouts/application (1.0ms)
Rendered layouts/_header.html.erb (101.2ms)
Rendered layouts/_footer.html.erb (0.3ms)
Completed 200 OK in 438ms (Views: 126.7ms | ActiveRecord: 14.6ms)
Что из этого можно понять анон?
Нереально.
Ты сабмитнул на сайте форму "/subscribe" с данными {"subscriber"=>{"email"=>"тут реальный email"}}, которые у тебя никуда не передаются дальше (судя по коду).
У тебя попыталась создаться некая запись в базе (видимо, Subscriber), но не прошла валидацию (а значит, почта не отправилась вообще).
Сгенерилась страничка subscribe/create.html.erb within layouts/application и вернулась тебе на клиент в ответ на сабмит твоей формы (формы подписки).
Если ты действительно написал:
def create
subscriber = Subscriber.create
то не удивительно, что запись не валидировалось — в Subscriber::create же не был передано никаких данных, лол.
Серьёзно, иди гайд почитай. Это ж BASICS.
Но ведь:
def create
subscriber = Subscriber.create
if subscriber.persisted?
SubscribesMailer.subscribe(subscriber).deliver
а в SubscribesMailer:
def subscribe (email)
\t\tmail to: "тут реальный email",
\t\tsubject: "new subscribe"
end
почему оно хоть что-то не отправляет, объясни?
Потому что оно не попадает в else.
subscriber.persisted? #=> false
Чтобы заработало тебе нужно
subscriber = Subscriber.create(permited_params)
Шёл бы ты курить матчасть...
Заработало, в else не попадает, но и письма никуда не приходят. Что делать мастер?
> def subscribe (email)
> \t\tmail to: "тут реальный email",
> \t\tsubject: "new subscribe"
> end
Это так не работает.
А как работает? Если убираю (email) пишет что не хватает параметров. Два дня уже читаю про все вот это вот, каша в голове.
Правильно, или еще что-то нужно было добавить?
Попробуй для начала поставить какой-нибудь джем для того, чтобы читать "отправленные" письма у себя на компе.
mailcatcher, например.
Ну ты вообще осознаёшь что ты делаешь? Или что руки сами набирают?
У тебя subscribe не дёргает mail. Единственное что он делает - возвращает хэш.
На какие адреса и что он у тебя должен слать - отдельный вопрос.
Давай ты сначала осмыслишь что хочешь сделать, потом подучишь матчасть. Потом внимательно посмотришь на свой код. Есть подозрение что вопросов не останется.
> Давай ты сначала осмыслишь что хочешь сделать
Я хочу сделать так, чтобы когда пользователь заполнит поле с почтой и нажмет кнопку - с сайта отсылались два письма. Одно администратору сайта о том, что появился новый подписчик (с его email в теле письма), и второе самому пользователю, о том, что он подписался.
Никакие базы с пользователями заводить мне не требуется по этой задаче, рассылка будет вестись не с сайта, а с почты администратора.
Ну так пропиши реквизиты почты администратора. Рельсы телепатически, что ли, поймут, как тебе почту отправлять?
RTFM
Кто тебе мешает поставить рейтинг не менее двадцати долларов в час и не браться за Фэйсбуки за дошираки?
>Кто тебе мешает поставить рейтинг не менее двадцати долларов в час и не браться за Фэйсбуки за дошираки?
И сидеть вообще без заданий, ага.
Для начала я установил mailcatcher (как посоветовал мудрый анон) который перехватывает всю почту, и отображает ее в своем web интерфейсе. Это нужно чтобы не отсылать тестовые письма (в процессе разработки и отладки) на реальные адреса.
В config/environments/development.rb было добавлено две строчки отвечающие за доставку почты методом SMTP на адрес localhost и порт 1025:
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = { :address => "localhost", :port => 1025 }
Далее создал модель контроллер и представление Subscriber с одной колонкой в таблице - email, в которой и будут храниться все почтовые адреса пользователей подписавшихся на рассылку (имена мне были не нужны) командой: rails g scaffold Subscriber email:string
В модели Subscriber я добавил валидацию при записи значений в базу данных:
validates :email, presence: true, uniqueness: true
которая проверяет наличие и уникальность email который будет помещен в базу данных.
Следующим шагом было создание mailer'а командой: rails g mailer subscribe_mailer
В subscribe_mailer.rb был изменен адрес отправителя на тот который был мне нужен, в поле: default from: "admin@site.com"
Был добавлен метод subscribe_email, который в качестве параметра принимал subscriber, созданный ранее и с помощью метода mail отправлял письмо пользователю на адрес который находился в subscriber.email.
def subscribe_email(subscriber)
@subscriber = subscriber
mail(to: @subscriber.email, subject: "New subscriber"
end
Далее в views/subscribe_mailer/ были созданы два файла: subscribe_email.html.erb и subscribe_email.text.erb c содержимым писем отправляемых пользователям.
В метод create контроллера subscribers_controller была добавлена строчка SubscribeMailer.subscribe_email(@subscriber).deliver
которая отправляет письмо если запись добавлена в базу данных.
Ну и напоследок в представление была добавлена форма ввода и кнопка подтверждения:
<%= form_for :subscriber, url: subscribers_url do |form| %>
<%= form.submit %>
<%= form.email_field :email %>
<% end %>
Введя email в поле ввода на сайте, отобразилась надпись гласящая о том, что запись добавлена в базу данных, а заглянув в логи я увидел тому подтверждение. Открыв mailcatcher я в очередной раз убедился что все работает. Такие дела ананасы.
Для начала я установил mailcatcher (как посоветовал мудрый анон) который перехватывает всю почту, и отображает ее в своем web интерфейсе. Это нужно чтобы не отсылать тестовые письма (в процессе разработки и отладки) на реальные адреса.
В config/environments/development.rb было добавлено две строчки отвечающие за доставку почты методом SMTP на адрес localhost и порт 1025:
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = { :address => "localhost", :port => 1025 }
Далее создал модель контроллер и представление Subscriber с одной колонкой в таблице - email, в которой и будут храниться все почтовые адреса пользователей подписавшихся на рассылку (имена мне были не нужны) командой: rails g scaffold Subscriber email:string
В модели Subscriber я добавил валидацию при записи значений в базу данных:
validates :email, presence: true, uniqueness: true
которая проверяет наличие и уникальность email который будет помещен в базу данных.
Следующим шагом было создание mailer'а командой: rails g mailer subscribe_mailer
В subscribe_mailer.rb был изменен адрес отправителя на тот который был мне нужен, в поле: default from: "admin@site.com"
Был добавлен метод subscribe_email, который в качестве параметра принимал subscriber, созданный ранее и с помощью метода mail отправлял письмо пользователю на адрес который находился в subscriber.email.
def subscribe_email(subscriber)
@subscriber = subscriber
mail(to: @subscriber.email, subject: "New subscriber"
end
Далее в views/subscribe_mailer/ были созданы два файла: subscribe_email.html.erb и subscribe_email.text.erb c содержимым писем отправляемых пользователям.
В метод create контроллера subscribers_controller была добавлена строчка SubscribeMailer.subscribe_email(@subscriber).deliver
которая отправляет письмо если запись добавлена в базу данных.
Ну и напоследок в представление была добавлена форма ввода и кнопка подтверждения:
<%= form_for :subscriber, url: subscribers_url do |form| %>
<%= form.submit %>
<%= form.email_field :email %>
<% end %>
Введя email в поле ввода на сайте, отобразилась надпись гласящая о том, что запись добавлена в базу данных, а заглянув в логи я увидел тому подтверждение. Открыв mailcatcher я в очередной раз убедился что все работает. Такие дела ананасы.
>И сидеть вообще без заданий, ага.
На практике проверено?
>Пилить аналог фейсбука за два доширака? Оно мне надо?
Вообще, давай-ка мне не менее 10 условных "фэйсбуков" за несоизмеримую цену из числа фиксед-прайс-заказов. Я тебе даже ссылочку на рельсовые заказы скину, чтобы ты сам не искал (на данный момент 380 заказов): upwork.com/o/jobs/browse/c/web-mobile-software-dev/?q=ruby on rails
Итак, жду.
Посоны, устраиваемся в макдак, закрываем тред, там чувак в комментах рельсы похоронил.
Ну как сгнили... Ленин тоже сгнил, но "дело его живёт".
http://2ch.hk/pr/src/560026/14450452426861.png
Чувак не указал рейт, еще и удивляется отсутствию желающих. За то время что он искал, можно было научить человека хаскелю и есоду.
Америкосовские хаскелл-мошенники развели пацана.
Как лучше всего создать такой прайс-лист на Ruby on Rails?
Бля, ну вот какой ответ ты хочешь получить?
"Берёшь и делаешь"
Или готовое решение тебе скинуть сразу?
Это не ты тот упоротый, который такую же хрень спрашивал на русском SO?
Нашел на SO стало интересно ))
>>563492
> При создании записи в базе, для одной из колонок должен быть выбор одного из значений.
Что за колонка?
Либо можешь попробовать перечисления (родной enun или использовать гем enumerize), либо нормализовать и сделать отношением. Форм-хэлперы умеют обоих готовить.
> Сами позиции на финальной странице - должны быть разделены на группы
> Точнее интересно как категорирование сделать по группам
Ну тут тебе, видимо, нужна сущность "группа". Товары принадлежат группам или относятся как многие ко многим если нужно чтобы один товар был в нескольких группах
Тогда в контроллере тебе будет нужно сделать что-то типа
@groups = Group.eager_load(:products) # чтобы для каждой группы не запрашивать отдельно её товары.
На вьюхе будет что-то типа
table
- @groups.find_each do |group|
tr
td collspan=2
= group.name
- group.products.each do |product|
td
tr = product.name
tr = product.price
Спасибо мань
Я честно говоря его пока не вижу, этого "будущего мэйнстрима".
Ясно что Ruby on Rails потихоньку устаревает.
Почти весь мэйнстримный вспомогательный инструментарий сейчас разрабатывается под Node.js: gulp, bower, babel, postcss (ещё не мэйнстрим но видимо будет). Опять же почти весь вспомогательный инструментарий RoR, который когда-то был либо мэйнстримом (SCSS, Compass), либо задавал тон в индустрии (Sporckets, Coffeescript) сейчас начинают выглядеть анахронизмом на фоне тех же gulp, postcss и babel + ES6. То есть по части инструментария однозначно рулит Node.js. Но это инструментарий.
В ту же копилку вэбсокеты, по части которых нода - эаталон, а RoR всё никак их толком не внедрит (вроде в 5 версии хотят). Есть Faye, штука неплохая, но слишком заметно что чужеродная для RoR.
Ещё один плюс ноды - возможность изоморфного рендернига контента для SPA. Но тут уже вопрос в языке, понятно что ни на чём другом кроме JS это не реализуешь.
В общем RoR конечно большинство основных новых веяний в индустрии благополучно прозевал и постепенно превращается в резервацию со своей атмосферой. Нода на передовой НО только по всякой вспомогательной части, сопоставимого по масштабу фреймворка на ней как не было, так и нет.
Всё остальное (Go и т.д.) ещё настолько сыро, что даже обсуждать по-моему нечего.
Болезный, ты думаешь люди читать не умеют? Нахуя ты эту https://toster.ru/q/259037 хуйню еще и тут дублируешь?
В разрезе Апворка по состоянию на сейчас не такое уж сильное отставание у RoR от Ноды по количеству заказов: 380 против 429. Не веришь, иди сам посмотри.
Хорошо, убедил, не буду в каждом треде постить.
> User has_and_belongs_to_many Themes
> для пользователей с ролями admin и manager это отношение будет пустовать
This.
А валидации для доступа к темам на канкане я бы делал так:
if (user.roles & %w[moderator admin]).any?
can :manage, Theme
else # prostoi User
can :manage, Theme do |theme|
user.theme_ids.include? theme.id
end
end
Чтобы сделать доступным для класса, в котором модуль заинклудили, только один метод?
> Как лучше реализовать роли admin, moderator, user
Перечислением. Ваш кэп. и немножко Петросян
> has_and_belongs_to_many
Не юзай их. Юзай has_many through: ...
> Но для пользователей с ролями admin и manager это отношение будет пустовать
Это как?
> придётся сделать валидации
Нахуй валидации. В данном случае они не нужны. В определении отношения со строны Theme добавь скопы.
>>564051
Нахер канкан. Это зло. Лучше cancancan. Но лучше pundit, Но он чуть сложнее.
И да, то что ты пишешь - не валидация, а правило для ability канкана.
>Отличным началом будет Eloquent Ruby, The Well Grounded Rubyist, Programming Ruby (The Pragmatic Programmers Guide), Ruby Way, Metaprogramming Ruby.
А в каком порядке вы посоветовали бы осваивать эти книги? В том, в каком написано?
> Нахер канкан. Это зло. Лучше cancancan.
Чё? cancancan — это форк cancan, отличающийся только совместимостью с 4-ыми рельсами.
А pundit щас погуглю.
Так я толком не понял, что именно нужно валидировать? А это правило ты можешь использовать в хоть в контролере при проверке "валидно ли юзер обратился к ресурсу?", хоть в модели при проверке "может ли этот объект быть сохранён в релейшнах у такого-то юзера".
> Юзай has_many through: ...
Поясни, почему ты считаешь, что это лучше? В условиях вроде ничего не сказано про то, что нужно хранить некий UserThemeSet абстрагировано и от юзера и от темы.
> Чё? cancancan — это форк cancan, отличающийся только совместимостью с 4-ыми рельсами.
Ага. Только cancan не поддерживается, например.
> Так я толком не понял, что именно нужно валидировать?
Что хочешь. Я предлагаю вообще ничего - логическую целостность поддерживать за счёт настройки отношений.
> хоть в модели при проверке "может ли этот объект быть сохранён в релейшнах у такого-то юзера".
Делать авторизацию на уровне модели? Мсье знает толк в извращениях.
> А это правило ты можешь использовать в хоть в контролере при проверке "валидно ли юзер обратился к ресурсу?"
> Поясни, почему ты считаешь, что это лучше?
https://github.com/bbatsov/rails-style-guide/blob/master/README.md#has-many-through
К тому же has_many_through забагован. Через него неправильно строятся запросы например когда таблицы в разных БД. Есть проблемы с поддержкой уникальности.
> В условиях вроде ничего не сказано про то, что нужно хранить некий UserThemeSet абстрагировано и от юзера и от темы.
Они в любом случае будут храниться отдельно. Разница только в том, будет ли у тебя промежуточная модель. Имхо явное лучше неявного.
> Ага. Только cancan не поддерживается, например.
Да я про то, что ввиду одинакового именования модуля проще говорить КАНКАН, чем КАНКАНКАН. И так понятно, что имеется ввиду последний. Если КАНКАНКАН тоже забросят, и выйдет КАНКАНКАНКАН, ты так и будешь поправлять, типа НЕ КАНКАН, А КАНКАНКАНКАН?
> Через него неправильно строятся запросы например когда таблицы в разных БД.
А как ты собрался джойнить таблицы в разных БД так или иначе?
http://forums.asp.net/t/1254974.aspx?How+to+join+tables+from+different+databases+in+SQL+select+statement+
> rails-style-guide
ЛАДНО.
> Если КАНКАНКАН тоже забросят, и выйдет КАНКАНКАНКАН, ты так и будешь поправлять, типа НЕ КАНКАН, А КАНКАНКАНКАН?
Да.
А вообще я с канкана перелез сразу на пандит. Канканкан не пробвал, но попадалась статья в которой были описаны фичи канканкана, которых не было в канкане.
> А как ты собрался джойнить таблицы в разных БД так или иначе?
> Линкует форум богомерзкого аспа.
А ты молодец.
Актив рекорд умеет джойнить из разных БД. Фактически происходит два запроса, но для программиста выглядит как если бы был один. А вот через has_and_belongs_to там лезут косяки. АР путается в какой БД находится связующая табличка.
> ЛАДНО.
Ты что-то имеешь против стайл-гайдов?
> попадалась статья в которой были описаны фичи канканкана, которых не было в канкане
Странно, а в ридми на данный момент ничего нового с лета 2014 я не увидел.
> Актив рекорд умеет джойнить из разных БД
Если до такой ситуации дело дошло, то это не иначе как архитектурный фейл, потому что это означает в лучшем случае, что нам нужно съинтегриться с БД из другого приложения, а дедлайн сегодня вечером. Это решение заведомо костыльно, т.к. потом поддерживать согласованность связанных данных, генеримых 2 разными приложениями, будет неоправданно дорого и скорее всего приведёт к снежному кому.
В худшем случае это означает, что мы нарочно решили поделить обязанности между 2 разными реляционными БД, что может говорить только о ментальных расстройствах проектировщика.
> Ты что-то имеешь против стайл-гайдов?
Да нет, вот прочитал гайд, а там всё адекватно написано, я сам так всегда делал, потому что это кажется интуитивным.
Я подумал что-то, что это от создателей гайда по самому руби, где заставляют лепить пробелы в фигурных скобках, ставить do end в многострочных лямбдах и т.п.
Погуглил Pundit. Может, с непривычки, но мне больше нравится канкановская сахарность и лёгкость в тестировании рспеком, особенно крудов.
> Странно, а в ридми на данный момент ничего нового с лета 2014 я не увидел.
Может быть я и ошибаюсь. Но тогда это значит что канканкан такой же неповпортливый как и его предок.
> Если до такой ситуации дело дошло, то это не иначе как архитектурный фейл...
Ага. А если, например, у тебя огромная табличка например с архивом пользовательских транзакций за несколько лет? Даже с учётом индексации запросы по ней будут тяжёлыми.
Это частный случай горизонтального шардинга, если я правильно помню
> ставить do end в многострочных лямбдах
Признайся, ты ведь пыхарь?
> А если, например, у тебя огромная табличка например с архивом пользовательских транзакций за несколько лет?
Так в этом кейсе тебе не нужно джойнить из разных БД. Если ты даже хочешь хранить какую-то ебань за предыдущие 10 лет с возможностью джойнить её с актуальными записями, то ты бэкпортишь актуальные записи в архивную БД и джойнишь их там, не выходя за её рамки.
> Признайся, ты ведь пыхарь?
Нет, у меня просто в редакторе, когда курсор рядом со скобкой, то он подсвечивает противоположную скобку, указывает цветом, есть ли она вообще и рисует путь до строчки с ней.
С do и end он так не умеет делать.
К тому же, используя скобки для лямбд, а end для всего остального, проще видеть глазами внизу метода, где какой блок закрылся.
Собираюсь имиджборду на рельсах запилить (не чтобы потом её пеарить, а для изучения рельсов). Какие подводные камни? Слишком просто/нинужно? Какие проекты вообще на рельсах пилят? Кроме твиттеров.
Абсолютно какие угодно вебовые проекты.
Пиля имиджборду, ты не научишься решать реальные проблемы, потому что на твоей имиджборде не будет пользователей и ты скорее всего не имеешь представления о том, из каких внутренностей она должна состоять, чтобы этим можно было пользоваться в 2015-ом.
Вообще, пилить социально-ориентированный ресурс, у которого заведомо пользователей не будет — проёб времени.
Лучше выдумай какую-нибудь хуитку, которую никто ещё не реализовывал — пусть она совершенно никакой ценности человечеству и не даст — и пили её на чистых рубях. Желательно, чтобы БД была вовлечена в процесс. Потом сделай из этого веб-сервис, внедрив свой код в рельсы, чтобы ввод для твоей хуитки можно было загружать по HTTP, а результаты выполнения получать обратно. Что-нибудь особо хардкорное в кач-ве background jobs замути и сделай листинг результата фонового исполнения.
Тогда ты не только время с пользой потратишь, но и у тебя будет такое мини-портфолио.
> background jobs
Первый раз этот термин увидел лол. Загуглил, хороший совет, спасибо. Только что бы придумать. У меня мозг совсем засох от нынешней работы. Полгода вижу одни интернет магазины.
Чтобы этот метод вызывалась бы при включении в какой-нибудь класс модуля ImageProcessing. При этом будет вызываться созданный в этом расширяемом классе одноимённый метод, а если он не был создан — то пустой, заглушка. Если заглушку не определить, будет NoMethodError.
Понял, добра.
Лол, я когда первую работу искал, написал коуб в качестве тестового задания. Меня, правда, не приняли, сказали, что слишком долго делал.
Правда, это было задание для стартапа не по теме видео. Зачем-то им понадобилось видео конвертировать и резать. Ну, пришлось научиться работать с ffmpeg. С тех пор так этот скилл и не пригодился нигде ниразу.
Ничего, просто код писать на рубях так, чтобы он хотя бы с треском входил в MVC.
Хотя нет, скорее мне помимо просто писания кода пригодилось следующее:
1. способность абстрактно помыслив о задаче, которую хуй знает как решать, сказать, что я более-менее представляю, что нужно делать, назвать список ПО, которое поможет это решить, и сказать, что кто-то, кто не ты (чтоб совсем уж не спиздеть), такое уже решал
2. не стесняться регулярно выводить на веб-сервер заказчику, что на данный момент получилось
3. побольше умных слов, которые ты в любой момент можешь объяснить, что они значат — но пока не попросят не объясняй
С местоимениями накосячил. Я пьян немношк, извиняюсь.
Лол. Учту, с клиентами я мало общался.
Или йо ниггер почему ты не применил тут двоичную-бета-сортировку-с-обходом-по-графу, это бы дало 3.14% прирост к скорости рендеринга картинки с котиком — всё уволен собака?
у меня как то спросили как устроен btree-индекс. Я сказал что не знаю, можно глянуть в вики и наехал на них из-за такого вопроса, не буду же я переписывать реализацию этого индекса ?!
спрашивали чем set от list'a отличается(в питоне), что быстрее при поиске и вставке нового элемента(set для поиска и вытаскивания, list быстро добавляет, если чо)
а, еще был очень вложенный словарик и надо было сделать его плоским списком
Я могу понять, когда задают такие вопросы на крестоеба, джавоеба, скалоеба, но не на руби. В нем все эти структуры уже реализованы, лучше б спросили какой джем подключить чтоб эту хуйню сделать
Позвали меня на Руби собеседование значит, я в шоке, конечно всегда хотел работать с Руби, но жизнь и количество вакансий заставили пойти на ПХП.
Руби изучать я забросил, когда то написал на нём пару курсовых и простой магазин на рельсах.
И вот меня зовут, а я хз к чему готовиться, что им говорить, я конечно быстро схватываю, но опыта с Руби у меня считай нет, а им явно не совсем зелёный хуй нужен. Хоть знаю за пхп фремворки и все такое.
Короче реквестирую требований и вопросов с собеседований.
У них в описание вакансии написанной: наличие хотя бы одного проекта, но не для маю что мой йоба-магаз за пару часов на хуяченый их устроит.
Что делать, не хочу такое предложение проебать?
>Что делать, не хочу такое предложение проебать?
магазин свой вылижи и на хероку задеплой, код на гитхаб/битбакет
>у меня как то спросили как устроен btree-индекс. Я сказал что не знаю, можно глянуть в вики и наехал на них из-за такого вопроса, не буду же я переписывать реализацию этого индекса ?!
я сам начинающий рубихипстар, но блять мне понятно, откуда этот вопрос
руби, как правило, используется вместе с рельсами, а рельсы - с базой данных, а в базе данных - уже и индексы
На гитхапе лежит с кучкой тестовых заданий на пыхе, не думаю что есть смысл в хероку
на хероку бесплатный - для того, чтобы показать. ка кэто гавно работает, и как ты даже дизайн вылизал
не тупи епта
gem install 'internet-magazin'
Набросать рабочий вариант - неделя-две. Но так как ты недавно изучаешь, то может месяц или больше уйти, 2-4 часа мало, нужно именно весь день сидеть, ловить ошибки и читать доки/стакорвефлоу, когда поймешь, то очень быстро сможешь все делать.
Я бы с радостью сидел весь день в сычевальне, почитывая книжки и пиля хэлоуворлды, но работа макакой/аренда кв.
Алсо, в будущем хочу к рубистам уйти (пока что мест нет), но, я так понял, они много старые свои/чужие проекты поддерживают, чем новые пилят. С точки зрения получения знаний это как, норм?
Есть ещё стайл гайды. Обычно за год-два программирования, ты не зная о них, формируешь свой стиль, на 90-100% соответствующий гайдам, но для новичка будет полезно почитать.
Вкупе это всё даёт гораздо более лёгкую читаемость кода, легче видеть повторяющиеся фрагменты, структуру классов. Позволяет делать меньше косяков и быстрей их находить.
По той же причине, кстати, предпочитаю кофе чистому JS.
Можно ещё напиздеть про обширную кор-либу, но это дело второе лично для меня — навелосипедить необходимые функции над базовыми структурами можно на любом языке.
логично
b-tree - это дефолтный тип, который дают рельсы индексам в бд. Ты точно на рельсах писал хоть раз?
>спрашивали чем set от list'a отличается(в питоне), что быстрее при поиске и вставке нового элемента(set для поиска и вытаскивания, list быстро добавляет, если чо)
>а, еще был очень вложенный словарик и надо было сделать его плоским списком
Ну если ты этого не знаешь, то что ты вообще делаешь в /pr? Тралишь?
> Так в этом кейсе тебе не нужно джойнить из разных БД.
С тем же успехом можно сказать что ни в примере с транзакциями, ни в примере с юзером-темами не нужно отношение многие ко многим. А в случае с темами - даже неренос в другую бд.
Я хотел сказать только:
1. has_and_belongs_to работает только в самых простых случаях. А в некоторых случаях ведёт себя непредсказуемо или вообще некорректно.
2. Ты заранее, абстрактно, не можешь предсказать что тебе будет нужно сделать. Как видишь, перенос в отдельную базу таблички иногда, всё же, являются оправданным.
> Если ты даже хочешь хранить какую-то ебань за предыдущие 10 лет с возможностью джойнить её с актуальными записями, то ты бэкпортишь актуальные записи в архивную БД и джойнишь их там, не выходя за её рамки.
Ну так по сути так и будет. АР соберёт данные из основной БД и сделает по ним запрос во вспомогательную. Просто ты этого не увидишь - получишь данные.
Кстати, про джойны я неправильно выразился, сорри. Банально запрос по отношению (например user.themes или theme.users) может вызвать ошибку СУБД "промежуточная таблица не существует".
Чувак, а можешь описать сколько времени у тебя занимает та или иная ruby-работа на апворке. Меня особо интересует сколько ты в день работаешь часов на одной работой (не будем брать во внимание если у тебя несколько заказчиков) и сколько дней тратишь на выполнение. Успеваешь ли раньше дат которые выставляет заказчик?
И это сразу делает тебя знать как он устроен?
Понятия не имею. Сужу по количеству работ, выплывающих по соответствующим поисковым запросам (обычно около 380).
О, спасибо. Как я его пропустил.
Вопрос к рубебогам перемолотившим вэсь core имею.
Есть zip-архив, содержаший в себе файлы и директории с файлами. Требуется залить его содержимое на Amazon ( bucket ).
Flow такой:
1. Архив грузится на сервак
2. Архив распаковывается на серваке
3. Содержимое льется на Amazon
Все запилил на fcarrierwave, но есть одна невъебенная проблема - carrierwave не заливает фолдеры с содержимым.
Каким образом застравить его это делать с наименьшим гемором?
Работал с ним очень давно, так что сорри если что-то путаю.
У тебя есть возможность в лоадере определить `store_dir`.
Видимо, тебе нужно сделать метод класс? который будет бежать по твоей локально папке и, в зависимости от относительного пути отправлять в соответствующую папку на амазоне.
Пробовал - не помогает.
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/product-#{model.product_id}/#{model.name}"
end
в model.name содержится путь с именем файла, например "assets/fnt/SquadaOne-Regular.ttf", но файл эта сука зальет все равно в корень ;( , такое ощущение, что на /#{model.name} он хуй забивает.
Не. dev + staging
А ебанина была, что after "unicorn:restart", "sidekiq:restart" был только в prod, поэтому sidekiq, на котором сделана у меня загрузка юзал старые пути в store_dir
> dev + staging
Это стадии разработки? Поясните, очень мало знаю в этом плане. Как оно по-нормальному то бывает?
Я наркоман?
На роре можно быстро склепать любой прототип сайта какого нибудь аналога сервиса или это легче с новой пыхой сделать ньюфагу?
Допустим сервис где там все красиво птят свои отчеты в области $field_name$
>Почему переписываем ? - нету разработчиков на Haskell
> Я наркоман?
Да.
> Зачем? Ине единственное, что в голову пришло, это, например, анонимный постинг, а если залогинлся, то в другом классе этому классу добавить поле юзер и его значение выводить к посту.
Я нихуя не понял. Спроси нормально.
Лол, я наркоман, не ту пикчу залил.
Для чего нужна эта фича с добавлением новых полей, вне класса, в каких случаях она может быть полезна?
А. Только это не поле а атрибут
Смысл такой же, как и при наследовании.
Ты же можешь в родительском классе определить атрибут и он попадёт в дочерний.
Решил поддаться моде, посмотреть этот ваш хваленый пхп. Ну и в качестве вектора хорошего кода для ознакомления скачал пару популярных фреймоворков. Открыл один файл. А там полторы строки и НЕЗАКРЫТАЯ СКОБОЧКА. Я понимаю стриптизерш, понимаю грузчиков, работающих ради денег. Но работать с НЕЗАКРЫТЫМИ СКОБОЧКАМИ даже ради денег это что-то из рядя вон выходящее.
А вдруг он посчитает ядро своей зависимостью и утащит за собой?
если ты будешь бездействовать, то лучше не станет.
>>567905
Не понял. Если нужен атрибут и в дочернем и в родительском, определяем в родительском. Если только в дочернем - в нем и определяем. А зачем эта фича, позволяющая добавить атрибут/метод не в определении класса, а где-то вовне?
в смысле не закрытая скобочка? что за фреймворк? ты ?> вот это имеешь ввиду?
По сути, то же наследование.
Такое определение в модуле не имеет смысла, если ты этот модуль не будешь инклудить никуда.
Вообще, механизм примесей инклуда модулей в основном используется чтобы заменить множественное наследование.
Ох сорри. У меня глаза пиздой обшиты. Не разглядел как атрибут определяется.
Ну в общем, это т.н. монкейпатч. В каких случая имеет смысл именно определение аттрибута, хотя иногда бывает полезным переопределить метод.
Но так не стоит делать. Подробности на вики.
Иногда делаю такие патчи только чтобы отладить что-то.
Картинка, видимо, чтобы просто показать что мы можем.
> В каких случая имеет смысл именно определение аттрибута не знаю, хотя иногда бывает полезным переопределить метод.
Самофикс
и все еще нет эффекта, может у меня устали глаза? Подскажите серебряную пулю, нет сил уже.
Ну хуй знает, думаю тебе нужно просто отдохнуть.
Апворк жи.
Доставь белую тему, которая одновременно может в markdown, в diff и в подсветку ключей и значений в json разным цветом.
Эта тема Calydon light, markdown не может, diff не знаю зачем в редакторе читать, json подсвечивает по типам.
Спасибо. Приятно выглядит, но без маркдауна нинужна.
> diff
Контроль версий же. Алсо, правой кнопкой, Show unsaved changes иногда полезно, чтобы быстро сравнить что-то с чем-то.
>Чем дальше ты продвигаешься, тем ближе становится ясно, что пора перекатываться на linux/mac
А можно ли не перекатываться и юзать cygwin? Есть у кого опыт?
У него какой-то детский рак, плавно переходяший в старческий: то юникод отвалится, то крешится внезапно, то ещё якась хуйня. Виртуалки проще и надёжнее.
Давно. Могли подлечить, если редхат не забил. Я бы на их месте забил.
И ещё, в шинде пиздецки тормозной fork, поэтому обычый unix way типа find -exec в cygwin тормозит как GTA 5 какая-нибудь.
Cygwin норм, если ты вынужденно сидишь, допустим, в емаксе под виндой и тебе нужны какие-то базовые вещи, чтобы не так уныло было ходить по ssh на сервер делать дела... Но делать сами дела под cygwin... Думаю, ты ебанешься портировать весь мир. Хотя, если ты заведешь легкую серверную виртуалку или vps, то делать дела можно на ней с помоьщю cygwin-утилит.
Понятно, спасибо.
Я когда на винде угорал по юникс тулзам видел какой-то установщик для винды который занимается пекедж менеджментом для cygwin/mingw окружения, как brew для смакинтоша, только там графический установщик, можно галочка отмечать и апдейтить софт.
На из-за корявой работы с переменными окружения (PATH далеко не безразмерная переменная) и тех же юникодов (которые по религиозным причинам майкрософты просто не способны признать, и форсят богомерзкие utf-16/32, 1251) лучше обходиться виртуалками или перекатываться на мак/линукс, а играть на игровых консолях.
> богомерзкие utf-16/32
Лучше, когда у тебя строка может быть не валидной? Или две совпадающие строки не совпадают побайтово? Или когда один символ может занимать мегабайт? Или когда получение символа по индексу - O(n)?
Правильно форсят. UTF-8 для обмена данными (и для затыкания дыр в юникстулзах, которые слишком долго переписывать). А для API эта кодировка худшая из возможных.
Лучше когда у тебя как бы юникод, а китайские порномульт-гамесы показывают, ну, иероглифы, только не те?
>правой кнопкой
На моей клавиатуре нет правой кнопки. Только консоль, только хардкор, поэтому мне такое незнакомо.
>без маркдауна нинужна
Маркдаун визуально размечает же, что там светить? И так всё видно, ящитаю.
Есть пикрелейтед установщик у cygwin, посмотрел, у них даже clang есть, интересно. С path проблем никогда не было. Как шелл использовал emacs. Не помню, что там было с юникодом, по-моему очень хуево.
А играю в ретро я на эмуляторах, они в винде хоть и получше, но не драматически.
>не драматически
Я понимаю ты программист и одной ногой уже в сша/европе живёшь, но пожалуйста не применяй так бездумно эти тупые слова заимствованные из американского/саксонского, это так ПАТЕТИЧНО.
>Или две совпадающие строки не совпадают побайтово? Или когда один символ может занимать мегабайт?
Это же какое cp1251-мозга должно быть чтобы написать такой код который будет ПРОДУЦИРОВАТЬ невалидную мегабайтную чару в utf-8.
У вас тут модно путать Юникод и его представление.
>>569543
У меня кодирование \u0000 в Java от тебя. Алсо, проблема-то не в кодировании, а в декодировании. Есть разные интересные личности, которые пользуются особенностями UTF-8 для разных интересных вещей. Но даже когда строка просто обрезалась посередине code-point - это уже неприятно.
Удобнее обрабатывать UCS-16, и хуй с ними, с суррогатами. Или UTF-32, если нужен современный Юникод, и хуй с ней, с памятью.
Что скажите за курс на гикбреинсе? http://geekbrains.ru/professions/2
Хочу пойти параллельно изучая английски. Естественно после окончания курса нужно будет еще прочитать книжку и сделать TODO лист с шапки. Как для совсем нуфака, что скажите, стоит пойти?
http://www.theodinproject.com/
лучше и бесплатно, а ещё топовые амуриканские курсы можно скачать с рутрекера
назревает вопрос - зачем платить больше халявы?
у людей просто МАРКЕТИНГ
Project:
-title
-todo
-->text
-->isCompleted(потом будут добавлены чекбоксы мол выполнено или нет)
Не изобретай велосипед, заюзай гуглосайты, там есть этот функционал.
Понятно, спасибо.
То что рельсы убили руби - не новость. Можно сколько угодно писать, что есть много других фреймворков, но если посмотреть правде в глаза - ничего кроме рельс не используется. Сколько в треде вопросов не связанных с рельсами? Даже в прикрепленном в разделе по руби рекомендуют книги по рельсам. Приехали, господа. Язык одного фреймворка.
Вопрос для чистого руби без активсаппорта.
Не, на пике местная спермотоксикозная вниманиеблядь.
РФ-чухана бы...
Что, болезный, холопы узнавать перестали?
Искрометный юмор.
Посмотри Enumerable библиотеку, стандартную рубишную, там полно таких методов, sort всякие.
Да уже все, прост через итератор прогнал аттрибут и загнал в переменную.
Кстати, почему этот курс платным стал? Бесплатного больше нет. Алсо смутили сложные задачки слегка и лекции по ебанутому ведет, неудивительно что на класс централе обосрали этого жида
Ну нахуй! Думал ваш руби учить. Останусь на нормальном стеке технологий Java / Python.
Бля рубисты. Как вы жевете с этим адом require. Когда все это говно сыпется из всех библиотек в единый namespace ? Это же полная параша! Не в одном нормальном языке см Java/C# такого нет.
Абстрактная_фабрика_на_абстрактной_фабрике::кун.com.org.print.log.param(s) ты?
module CSV2015
def CSV2015.parse
end
def CSV2015.print
end
end
datyunya = CSV2015.parse(data)
*
Лол, ты разговариваешь как педики или псаки — хоть сам и являешьс обезьяной, но называешь своих противников так, чтобы остальные поверили в твой мирок, где ты не любитель бананов. Как в /s/ виндузятники одно время начали называть линукс спермой, ибо совсем пизданулись в бессильной злобе.
Человек который заходит в тред с темой которая ему неприятна мазохист и даун. Поэтому ты тут никому ничего не докажешь, дубинушка.
Някихиро занимается руби, это тебе нужно у DHH спрашивать почему он не выпускает Рэельсы.
Страдай дальше.
Использование для объявления методов модуля название модуля вместо self. А вообще такие вещи правильно через module_function объявлять.
Там вообще ничего не нужно писать, даже self не нужен. На деле так только ебланы пишут.
Да, наркоман. Нужен self.
> module Foo
> module_function
> def foo
> :foo
> end
> end
> module Foo
> def foo
> :foo
> end
> module_function :foo
> end
> module Foo
> def self.foo
> :foo
> end
> end
Это всё одно и то же. Можно ещё пару способов сделать то же самое вспомнить.
@@ - немного из другой области, хотя и схоже по сути.
Методы класса начинают жить раньше как я понимаю, в момент определения или загрузки класса через require и их можно юзать для запоминания информации в них
class Rigel
def self.post(star)
Sun = star
puts Sun
end
end
Sun будет указывать на одно и то же значение для вызова из всех экземпляров. Даже не нужно делать эту переменную константой или классовой.
Хотя не Sun умрёт.
Ты какую версию рубей используешь? 2,2,3 валится в твоём коде при попытке таким образом задать константу. Может ты хотел имел ввиду те самые @@аттрибуты_класса? Или ты хотел просто константу объявить?
Что ты имеешь ввиду под жизнью и смертью?
А для чего?
class Foo
def self.set(new_val)
@@my_var = new_val
end
def set(new_val)
@@my_var = new_val
end
end
class Bar < Foo
def self.get
@@my_var
end
end
Foo.set(:foo)
Bar.get #=> :foo
Foo.new.set(:bar)
Bar.get #=> :bar
ну для того чтобы экземпляры класса, могли смотреть на переменную класса, в которой допустим хранится количество экземпляров.
<% Image.all().includes(:likes).sort_by{|IMG| IMG.likes.count}.each do |image| %>
<li><%= link_to image.smth, image_paht %></li>
<% end %>
Мне кажется, что я пиздец как уебищно все сделал. Помогите ради рельс.
>Image.all()
Скобки не нужны. all тоже%
И вообще, такие запросы делать с вьюхи не комильфо.
Можешь либо заюзать counter_cache для отношения
Либо что-то типа:
Image.joins(:likes).order("count(likes.id").group(:id)
Только этот запрос отбросит картинки для которых нет лайков. С джоинами ебись сам.
Такие же, как без рельс. Учи react, flux и всё такое. Ангуляр уже не модно.
у ангуляра тяжелое будущее, а вот у реакта вполне
из плюсов - можно не перегружать страницу, все-таки жсон отдавать намного легче чем хтмл на каждый чих.
через вк апи
Привет пидары.
Ваш раби уже все обходят стороной.
Вот пример:
"Рекламная сеть. Писать на PHP. Ruby - не предлагать."
http://freelansim.ru/tasks/127461
Встречайте ньюфага. Как обстоят дела на рынке труда?
Я уже фрилансю фронт-енд макакой и учусь для повышения квалификации, посему и интересуюсь.
http://freelansim.ru/tasks/125711
Вот например Алексей просит Ruby.
Ты тип пытаешься местных в тонусе держать?
Если ты уже прокачанный разработчик и подучишь рельсы, то проблем у тебя не будет. Рамблер пока не закрывается и на PHP всё переписывать не спешит, всё на рельсах прут.
А зачем тебе доступ пока ты не делаешь запросы?
Любой запрос сделай и автоматом подконнектит.
хуй знает почему. видимо что-то экономит
Очень много таблиц, не помню все атрибуты по памяти. Поэтому часто в качестве подсказки набираю имя модели.
Аналог твиттера с функциональностью магазина. Когда станешь миллионер не забудь про меня.
Какие есть блоги и твитторы для не совсем ньюфагов? Сейчас читаю thoughtbot, blog.honeybadger.io, mikeperham.com
Наверное нет. Но чтобы устроиться на нормальную вакансию, нужно не просто рубистом быть хорошим, но и программистом вообще. Знание синтаксиса и особенностей языка, не делает тебя хорошим программистом полезным для индустрии в целом.
Когда я только начинал приступать к обучению, честно, мысли мои были лишь о том, как по быстрому срубить бабла, но моим карьерным влажным фантазиям не суждено было сбыться. Прочитав про охуеть какую гибкую разработку целую книгу, и написав свой инторнет-магазин я поняв что уже еба разработчик и могу в продакшен, попиздовал со своим нескромным резюме по всем конторам до которых мог дотянуться, но дико обламался еще на этапе чтения требований к специалистам.
Недолго думая, я решил не работать на кого-то, а искать заказы у себя в городе на разработку сайтов, и таки нашел своего клиента, залив ему в уши то, что он в принципе и хотел услышать. Работа была не пыльная, несколько статичных страниц с описанием продукции, на главной - каруселька из жиквери, и в контактах собственно контакты с картой. Срубил я за это - 40к деревянных, 20 оплатили сразу и 20 после сдачи проекта. На все про все у меня ушло не больше месяца с учетом того, что хуи я пинал недели две.
Я прекрасно понимаю что в приличную компанию я попаду едва-ли, и скорее всего так и буду искать себе клиентов на первое время, но вот эта вот система обучения анон, она правильная? Правильно ли я поставил процесс обучения? Учиться тому, что тебе необходимо на данный момент, не изучая того, к чему ты может никогда и не прикоснешься. За время создания сайта я научился читать логи, ебаться с херокой поднимать продакшн, разобрался со всякими гемами, системой свой-чужой, всякими отправками почты, копался в фронтэнде, создавал базы данных, и еще много всякой непонятной херни. Логики правда у сайта как у блондинки, но заказчик большего и не просил.
Возьмут ли меня в команду inb4 не возьмут на позицию жуниора с таким багажом знаний? Алсо до этого мог в администрирование и дизайн.
Когда я только начинал приступать к обучению, честно, мысли мои были лишь о том, как по быстрому срубить бабла, но моим карьерным влажным фантазиям не суждено было сбыться. Прочитав про охуеть какую гибкую разработку целую книгу, и написав свой инторнет-магазин я поняв что уже еба разработчик и могу в продакшен, попиздовал со своим нескромным резюме по всем конторам до которых мог дотянуться, но дико обламался еще на этапе чтения требований к специалистам.
Недолго думая, я решил не работать на кого-то, а искать заказы у себя в городе на разработку сайтов, и таки нашел своего клиента, залив ему в уши то, что он в принципе и хотел услышать. Работа была не пыльная, несколько статичных страниц с описанием продукции, на главной - каруселька из жиквери, и в контактах собственно контакты с картой. Срубил я за это - 40к деревянных, 20 оплатили сразу и 20 после сдачи проекта. На все про все у меня ушло не больше месяца с учетом того, что хуи я пинал недели две.
Я прекрасно понимаю что в приличную компанию я попаду едва-ли, и скорее всего так и буду искать себе клиентов на первое время, но вот эта вот система обучения анон, она правильная? Правильно ли я поставил процесс обучения? Учиться тому, что тебе необходимо на данный момент, не изучая того, к чему ты может никогда и не прикоснешься. За время создания сайта я научился читать логи, ебаться с херокой поднимать продакшн, разобрался со всякими гемами, системой свой-чужой, всякими отправками почты, копался в фронтэнде, создавал базы данных, и еще много всякой непонятной херни. Логики правда у сайта как у блондинки, но заказчик большего и не просил.
Возьмут ли меня в команду inb4 не возьмут на позицию жуниора с таким багажом знаний? Алсо до этого мог в администрирование и дизайн.
Хороший вопрос, присоединяюсь. А фронт-энд сам делал или там все на css-фреймворках и жквери? Алсо сколько тебе лет?
А нахуя тебе, скажи пожалуйста, куда-то устраиваться?
Продолжай фрилансить. Повышай свой уровень, повышай ценник. Руби/РоР разработчики зарабатывают гораздо больше на фрилансе, чем в офисе. Особенно, если работать на зарубежных заказчиков.
>>на css-фреймворках и жквери
this но хочу очень все на react|angular захуярить
Сейчас по годам уже ближе к тридцатнику. Вкатился недавно но фанател от отрасли с детства да и не ту профессию выбрал, нужно было учиться изначально тому к чему душа лежит а не хуйне какой-то. Поздновато начал, да, но во времена моего сосничества мы больше с палками бегали по двору как то, чем с планшетами сидели, хуле делать. Просранное блять поколение, куда ни глянь сейчас все с пеленок уже синьоры.
Я не он, но ситуация похожая. Сделал пару крудошлепских приложений чуть сложнее блога. Посмотрел задания на апворке - там сплошь какая-то неведомая и очень специфическая хуйня, за которую ссыкатно браться. Наверное мы с ним оба думаем, что в офисе дают какие-то знания, до которых самостоятельно доходить будешь в 5 раз дольше. Тот же самый хуйлоад, например.
>Просранное блять поколение, куда ни глянь сейчас все с пеленок уже синьоры.
Много (дальше поймёшь почему) людей после армии, ПОСЛЕ АРМИИ, Кагл, вкатываются в программирование с нулевыми знаниями.
Трудно учиться по книжкам/форумам, думаю в офисе можно будет апгрейд получить в разы быстрее и через годик уже с багажом знаний засесть в своей сычевальне зная что точно не обосрусь на той же апворке.
А ты думаешь просто так говорят о том, что первый проект на апворке ищут месяц? Подходит один из двадцати, да тебе не сразу дают, пока звезды сложатся, месяц и проходит. А потом заказчик уже не хочет хуя с горы брать очередной раз, ему проще пока ты неведомой хуйне обучишься.
>> Посмотрел задания на апворке - там сплошь какая-то неведомая и очень специфическая хуйня.
>> Наверное мы с ним оба думаем, что в офисе дают какие-то знания, до которых самостоятельно доходить будешь в 5 раз дольше.
>>575025
После армии - это примерно в 20 лет что-ли? Начни я в 20 с нулевыми знаниями, может и не сидел бы тут с вами сейчас.
Ну да похуй, греет если честно одно, что как говорят, после одного языка - остальные учить куда легче. Хуле, будем превозмогать.
Если не впадлу платить деньги, можешь попробовать с ментором поработать, по рельсам таковых дохуя, они вроде дотягивают до джуниор-левела, а то и повыше.
Меня с моими недознаниями и умением по максимуму расписать то что умею и не сказать о том, чего не умею звали в Тайланд в стартап, но звезды сложились так не по причине того что я что-то не умею, что нихуя как вы понимаете не вышло. Вообще я раз 5 общался всего с людьми из компаний на предмет трудоустройства жуниором, и как ни странно, но ни разу мне не сказали что вот прям нахуй ты не нужен, часто удаленки не было а я же всем подряд слал и предлагали переезд но это охуеть как заморочиться нужно.
А подскажи пожалуйста тогда еще и какой ценник указывать на том же апворке с такими то знаниями? $5 в час - это слишком много? Какая цена будет адекватна по отношению к рынку и знаниям?
Я не он, но что-то мне подсказывает, что за пять долларов в час ты будешь конкурировать с лоу-левельными индусами.
Вообще, на Мегамозге есть статья о вкатывании на Апворк, так вот там есть такая фраза:
> Первый заказ я взяла буквально на следующий день после регистрации. Это был небольшой заказ с фиксированной ценой. Я поставила цену в 2 раза выше бюджета заказчика, рассчитывая, что высокая цена обратит внимание заказчика на мой нулевой профиль. Стратегия сработала — заказ достался мне.
Я не знаю, сработает ли у тебя, но смысла не верить ей не вижу.
Вот сурс, кстате: http://megamozg.ru/post/18348/
Блядь а у меня сйечас $3 стоит, хотел еще до $5 поднять. Какая будет норм на твой взгляд? Опыт я описал выше.
Стоит ли в описании указывать Junior RoR Developer?
>> Нормальная цена для не индуса это $11-16
Для моего опыта, или для мидл?
Для начинающего или начинающего на апворке (без профиля с отработанными часами никто не отважится платить более 20).
Мидлы там от 30 берут.
Можешь написать, что джуниор, но я бы написал опыт в года: Ruby/RoR developer with one year experience, или как-то так.
Я вот так написал, с твоими правками:
Hello, I'm Ruby/RoR developer with one year experience. My greatest goal is to deliver excellent, clean code. I constantly broaden my knowledge of languages and frameworks to improve my skills and the quality of my code. I work with technologies like Ruby on Rails, jQuery, HAML/CSS, Coffeescript, Twitter Bootstrap, SQL-DB.
Thanks for taking the time to look around.
добра тебе
Все норм, литературный английский точно не требуется - за это и десяточку накинуть можно.
>Парни, мне тут тян решила дать, разделась и лежит на моем диване, я сказал что выйду в туалет , а сам пишу на двач. Посоветуйте, как быть? Что мне делать?
Кинуть буржуев на деньги по возможности.
не понял вопроса. Там есть опенсорсная версия и мне туда надо прикрутить пайпал. Аноны походу я влип. я ваше не представляю себе как это сделать есть код который относиться к пайпалу. Хотел сделать так. Поднять сервак на локалке . найти вкладку Payments как в офф гайде. по аналогии с каким то уебанским braintree переписать под пайпал. но тут даже этой вкладки нет. буду шас раздебаживать. в интете ваше инфы нет. ваши советы аноны?
https://github.com/octokit/octokit.rb/blob/master/lib/octokit/client.rb
Т.е., когда Client перегружен методами в духе create_customer, delete_order. Единственный плюс мне видится в том, что, в отличие от ещё одного известного варианта, не нужно постоянно вызывать что-то типа Octokit::Issues.get(id), вместо этого используется более удобный (на мой взгляд) client.issue(id).
Как обычно делаете вы?
Джуниор на то и джуниор что особого багажа знаний там не требуется. Если ищут джуниора то понимают что он знает мало. Так что вполне могут взять.
Бамп помоши. аноны плз
Это я про задание, видел подобное за Fix price $200.
А по поводу сабжа. В официальном репозитории Sharetribe разработчики обещали в скором времени прикрутить возможности платежки PayPal. Как вариант, можно подождать пока они делают, а потом, как запилят, останется только быстренько прикрутить. Такое то будет программирование уровня /b.
я хуев даун договорился на 20 баксов. помоему я ахуенно продешивил. Походу буду создавать ноывй акк на одеске
У меня $14 за час работы выставлено. Если ты не можешь сделать это за час-два, то видимо действительно даун то зачем брался? Это Fix price или Hourly? На сколько рассчитывал по срокам? Задание вообще читал? Скинь сюда, интересно посмотреть что от тебя требуется за $20.
Что сказать. Отказывайся если точно уверен что не сможешь выполнить или попробуй сделать. За $20 я думаю тебя сильно заебывать не станут, так что есть возможность/время вникнуть в задачу и разобраться. В качестве профита от выполнения - все последующие заказы по прикручиванию палки к сервисам подобным этому, ну и плюс нехуевый такой урок как не нужно брать заказы.
Т.е. ты вызвался за деньги делать и даже не удосужился заранее посмотреть с чем придётся работать? И вот нахуя? Лёгких бабок захотелось? Их не бывает.
Что теперь? Будешь тут и на на СО просить сделать это за тебя? Чтоб ты бабки получил? А когда никто не возьмётся что будешь делать?
припекло
Я тоже часто беру в работу не совсем то что нужно. Из за отсутствия опыта работы некоторые вещи кажутся более легкими в разработке чем есть на самом деле хотя верно и обратное. Но пока ни разу не отказался от того что брал в работу чаще просто сроки проебываю, но сдаю. Собственно любая задача - вопрос времени на изучение методов ее решения, а опыт иначе и не придет. Так что, как мне кажется, если есть задача которую ты не знаешь как решить - это твой шанс. Плюс ко всему те же $20 рассматривай как стипендию за обучение.
"http://site.com/api" --data "krokodil=123&zalupa=456&cheese=666"
HTTParty.post("http://www.site.com/api",
{
:body => [ { "krokodil" => "123", "zalupa" => "456", "cheese" => "666" } ]
})
Не проверял. В интернете дохуя примеров же, в гугле забанили что-ли?
Спасибо аноны. у меня вроде прогрес. сам код рабоы с пайпалом уже встроен. надо просто ходить с дебагером и смотреть на условия. более мение понятно .
опенсурс же хуле.. а так, если никто ебланить не будет, то все могут понемногу на этом подзаработать через апворк
не, просто там оказывается надо было в хедере oauth-токен указать, и в итоге у меня ошибка выходила, вроде сделал.
$ rails s
Вся инициализация приложения идёт в папке приложения.
Обращаешься к любому контроллеру.
Теперь Dir.pwd = "/"
Из-за этого мне к любому пути внутри папки нужно приписывать Rails.root.join(my/path).to_s
Можно, конечно, в ApplicationController добавить before_action {Dir.chdir Rails.root.to_s}
Но такое решение выглядит весьма костыльным.
Что ещё интересно, в рамках одного процесса рельсового веб-сервера Dir.chdir достаточно сделать 1 раз, дальше он будет работать в это папке.
Кто-нибудь с эти сталкивался? Почему это может происходить?
Я не нашёл на SO и во всём гугле ни намёка на такое поведение.
Я даже больше скажу, у меня есть 2 проекта, у которых нет ничего общего, и в них есть такое поведение (с использованием Thin, Unicorn и Puma), а есть ещё несколько, у которых такого не случается (с теми же веб-серверами).
Что вы использовали?
И еще вопрос, как можно сделать универсальный интерфес для капчи ActiveCaptcha, чтобы можно было оперативно переключаться с одной на другую, как это делает макака.
ЗЫ
А что случилось с яндексовой капчей, она всё?
Давно хочу понять, как с ними работать, но что-то не могу нагуглить. Не в смысле как сделать чат, а в смысле как быть с нагрузкой. То есть, вот есть например гем faye. Или в 5-х рельсах появился ActiveCable. И тот и другой запускают отдельный брокер-процесс (thin, puma), который слушает на определенном порту, принимает и отправляет сообщения. Все клиенты коннектятся к нему. И указывается максимальное количество соединений. И вот про это толком нигде ничего не пишут.
На сколько я понимаю, даже простой, но оживленный сайт будет иметь достаточно много коннектов. Ну например, если за 15 минут пришли 50 человек и держат открытыми вкладки, то это уже 50 коннектов. Дальше больше. Они могут открывать несколько вкладок это ведь несколько коннектов?. А каждый коннект, как я понимаю, это отдельный процесс (ну или тред, зависит от веб-сервера). То есть в любом случае это все ресурсоемко. ActiveCable еще и нужен соответствующий количеству соединений пуд для БД.
Вопрос, как с этим работать. Сколько можно максимально иметь коннектов (если заглядывать дальше блога, то 100, 1000 коннектов это же не серьезно, а на самом деле это уже очень много). Что будет когда лимит будет исчерпан? Как увеличивать это количество. Как можно масштабировать. Если не использовать брокер-сервер на руби, а например на ноде (в faye вроде можно использовать ноду в качестве сервера), то что можно выиграть. Ну и все такое. Еще вопросы балансировщики, прокси и NAT в этом контектсе. Может какие-то статьи есть на эту тему только не слишком мудреные.
Ты че еблан ? У нас 2 продукта на golang. Уже как 1.5 года пилим. Хуй на golang кто забьет
Два чаю этому господину
Использую экшенкабель с 4ми рельсами гемом https://github.com/rails/actioncable , полет нормальный. Все примерно так как ты описал. За производительность не скажу, у меня энтерпрайз вебня на ёба серверах, да и пользователей мало очень. Яб скейлил так: поднял бы процессов экшенкабеля по числу ядер и обмазал балансировкой через нгинкс или хапрокси.
Собственно если сервер пума то она сама спавнит процессы,с колько ты ей указал и ничего дополнительно балансить не надо, только если жуткий хуйлоад с несколькими серверами под чисто вебсокеты эти.
Ну и лох, в эрланге спавнил бы 1 процесс на каждое соединение и так хоть миллион раз.
Ну а так ебись.
Не сталкивался. Но есть сильное подозрение что кто-то из гемов или инишиалайзеров тебе меняет рабочую директорию. Попробуй подебажить.
> ActiveCable еще и нужен соответствующий количеству соединений пуд для БД.
Правильные сокеты не юзают бд. Там простой механизм пабсаба. Приложение что-то отправило кабелю - все подписчики получили. Кто не получил - сам дурак. Коннектов много, но они нетяжёлые относительно.
И да. Там вроде воркеры асинхронные. Не поднимается на каждый коннект по воркеру. Те которые есть поочереди отдают данные подписчикам.
Вот написал я собственный валидатор, подцепил к модельке, а каким образом его дебагать?
Тупой inspect, Rails.logger и даже ебаные byebug с whiny_validation не срут в dev-лог.
class FapStatus < ActiveRecord::Base
validate :fap_at, good_time: {
message: 'you can not fap right now, make your pipka cool off!'
}
end
class GoodTimeValidator < ActiveModel::EachValidator
def validate_each(record, attribute, value)
p attribute.inspect
Rails.logger "log: #{attribute}"
end
end
> Rails.logger "log: #{attribute}"
Эта строчка вызовет ошибку. Rails.logger не принимает аргументов.
> а каким образом его дебагать
В validate_each пишешь byebug и пытаешься вызвать валидацию. У меня всё работает.
Так же, как и Rails.logger.error("log: #{attribute}").
Как продвигается анон?
(или наоборот)? как оно? стоило ли?
мимо без работный джава джун, подумывающий перекатиться в рельсы от безисходности
Как установить руби в убунту? Простой apt-get install ставит старую версию, а rvm выдаёт ошибки, одна другой охуительнее, блядь.
Кури настройку rvm чо. Небось в каком-нибудь .bashrc/.profile/.bash_profile что-то не то стоит(а какой-то файл и вовсе надо удалить).
После остановки надо разлогиниться и залогиниться на рабочий стол заново кстати (ну или если ты не понимаешь что это то перезагрузить компьютер).
Ещё добавлю: у тебя потом будут проблемы с каким-нибудь nvm, когда яваскрипт начнёшь покуривать.
anon@anon-X750JN:~$ rvm install ruby
Searching for binary rubies, this might take some time.
No binary rubies available for: ubuntu/15.10/x86_64/ruby-2.2.3.
Continuing with compilation. Please read 'rvm help mount' to get more information on binary rubies.
Checking requirements for ubuntu.
Installing requirements for ubuntu.
Updating systemdmitry password required for 'apt-get --quiet --yes update':
....
Installing required packages: gawk, libreadline6-dev, zlib1g-dev, libssl-dev, libyaml-dev, libsqlite3-dev, sqlite3, autoconf, libgdbm-dev, libncurses5-dev, automake, libtool, bison, libffi-dev.......
Error running 'requirements_debian_libs_install gawk libreadline6-dev zlib1g-dev libssl-dev libyaml-dev libsqlite3-dev sqlite3 autoconf libgdbm-dev libncurses5-dev automake libtool bison libffi-dev',
showing last 15 lines of /home/anon/.rvm/log/1447183944_ruby-2.2.3/package_install_gawk_libreadline6-dev_zlib1g-dev_libssl-dev_libyaml-dev_libsqlite3-dev_sqlite3_autoconf_libgdbm-dev_libncurses5-dev_automake_libtool_bison_libffi-dev.log
E: Не удалось найти пакет libreadline6-dev
E: Не удалось найти пакет zlib1g-dev
E: Не удалось найти пакет libssl-dev
E: Не удалось найти пакет libyaml-dev
E: Не удалось найти пакет libsqlite3-dev
E: Не удалось найти пакет sqlite3
E: Package 'autoconf' has no installation candidate
E: Не удалось найти пакет libgdbm-dev
E: Package 'libncurses5-dev' has no installation candidate
E: Package 'automake' has no installation candidate
E: Package 'libtool' has no installation candidate
E: Package 'bison' has no installation candidate
E: Не удалось найти пакет libffi-dev
++ return 100
++ return 100
Requirements installation failed with status: 100.
Вот такая хуйня. Так как я в юниксах новичок, меня это убивает нахуй.
anon@anon-X750JN:~$ rvm install ruby
Searching for binary rubies, this might take some time.
No binary rubies available for: ubuntu/15.10/x86_64/ruby-2.2.3.
Continuing with compilation. Please read 'rvm help mount' to get more information on binary rubies.
Checking requirements for ubuntu.
Installing requirements for ubuntu.
Updating systemdmitry password required for 'apt-get --quiet --yes update':
....
Installing required packages: gawk, libreadline6-dev, zlib1g-dev, libssl-dev, libyaml-dev, libsqlite3-dev, sqlite3, autoconf, libgdbm-dev, libncurses5-dev, automake, libtool, bison, libffi-dev.......
Error running 'requirements_debian_libs_install gawk libreadline6-dev zlib1g-dev libssl-dev libyaml-dev libsqlite3-dev sqlite3 autoconf libgdbm-dev libncurses5-dev automake libtool bison libffi-dev',
showing last 15 lines of /home/anon/.rvm/log/1447183944_ruby-2.2.3/package_install_gawk_libreadline6-dev_zlib1g-dev_libssl-dev_libyaml-dev_libsqlite3-dev_sqlite3_autoconf_libgdbm-dev_libncurses5-dev_automake_libtool_bison_libffi-dev.log
E: Не удалось найти пакет libreadline6-dev
E: Не удалось найти пакет zlib1g-dev
E: Не удалось найти пакет libssl-dev
E: Не удалось найти пакет libyaml-dev
E: Не удалось найти пакет libsqlite3-dev
E: Не удалось найти пакет sqlite3
E: Package 'autoconf' has no installation candidate
E: Не удалось найти пакет libgdbm-dev
E: Package 'libncurses5-dev' has no installation candidate
E: Package 'automake' has no installation candidate
E: Package 'libtool' has no installation candidate
E: Package 'bison' has no installation candidate
E: Не удалось найти пакет libffi-dev
++ return 100
++ return 100
Requirements installation failed with status: 100.
Вот такая хуйня. Так как я в юниксах новичок, меня это убивает нахуй.
с хттпс попробуй вытянуть. пару лет назад у меня были подобные проблемы при попытках установки с хттп
Обратитесь к документации вашего дистрибутива. Мы документацию, знаете ли чтим.
буквально недели две назад ставил по офиц. мануалу
https://rvm.io/rvm/install
ну там еще какую-ту хню в башрц надо вписать, гуглится на раз
Алсо, наверни-ка вот этого
http://installfest.railsbridge.org/installfest/linux
фиксируй, что получается после каждого шага и выкладывай сюда. Ошибки могут пойти на шаге 3.2, но там легко решается
Поставил руками по этому мануалу
http://stackoverflow.com/questions/18490591/how-to-install-ruby-2-on-ubuntu-without-rvm
Некоторые люди просто тупые. Тебе лучше устроиться фасовщиком или кладовщиком.
Обязательно надо выебнуться? Пытаешься самоутвердиться на дваче, лол?
Я с линуксом работаю второй день, само собой, мне нужно усвоить огромный объём информации, чтобы понимать, что к чему. Так что иди-ка нахуй.
Я думаю ты и винде также работаешь и в MacOS, это другая генетика, другой подход.
Тем более, чего ты сразу полез ковырять руби в линуксе, почему не остался на винде?
Почитал советов, что руби лучше на линуксе?
Но мозгов-то у тебя не хватило понять, что надо сначала учить линукс в принципе.
И потом плодишь тупые вопросы, и потом же ещё и свои тупые решения постишь, будто ты решил проблему. Осёл тупой.
Пошёл ты нахуй, нытик ёбаный.
Другая генетика, пиздец, возомнил себя илитой.
мимо-другой-кун-всполыхнуло
Там английским по чёрной консоли написано чего не хватает!
И такие тупые пидорасы, без знания основ, лепящие свои тупые, говёные решения, везде блядь.
Какой-то гандон чинил трубы и теперь у всех ржвачина течёт из крана.
Другой ебрило решил сделать клумбу и сделал, теперь говно и земля с неё течёт на тротуар, людям под ноги, люди ходят по грязи разносят её везде.
Или вот идиот тут не может блядь понять как сделать простую вещь: чтобы делать что-то на линуксе надо знать линукс, чтобы знать линукс надо знать английский и так далее. Вообще надо иметь системный подход.
А этот пиздёныш, в прямом эфире сменил задачу с установки rvm к напиздюшить побыстрому блядь чтобы было похоже. Списать готовое решение у соседа, чтобы учитель недоёбывал.
Тупые. Некомпетентные. Пидорасы. И пусть у вас горит и полыхает, сраные унтерменши.
Учитывая последние тенденции, гораздо ценнее будет человек, который заморочился и таки развернул свой проект на винде.
>>577493
>Правильные сокеты не юзают бд. Там простой механизм пабсаба.
>И да. Там вроде воркеры асинхронные.
Где там, в экшнкабеле? Тут, если я правильно понимаю, как раз вся фишка в том, что в воркере доступно рельсовое окружение - все модели, библиотеки, все-все. И это и здорово где-то кто-то на гитхабе в комментах жаловался, а ему DHH отвечал, что весь прикол в этом. Но соответственно это отдельные процессы (или потоки) и само собой ни какой асинхронности. Даже faye и тот не асинхронный. Вот только если с нодой его использовать, но я х.з.
Наплыв идиотов которые не могут поставить rvm. На том же тостере кучи тупейших вопросов, которые задают конченные дауны.
Хули вы на человека напали. Линукс говно, это все знают. Еще большее говно больного шизофреника - rvm. Костыль на костыле костылем погоняет не то что божественный npm и nvm. Даже по блядскому мануалу поставить нормально rvm задача охуенно вдумчивого чтения.
>>578027
>Учитывая последние тенденции
Шо за тенденции? Не надо ничего, пожалуйста, нам и на линупсах хорошо.
>Наплыв идиотов
О блядь, русская аргументация. Если продукт дерьмо - виноват пользователь, хуле.
>nvm и rvm тащемта идентичны по установке и использованию
Идентичны да не совсем. С нвм проблем чому-то ни каких не возникает - поставил и все работает. Хотя не буду пиздеть, я его один раз ставил и один же раз пользовался, лол.
Кстати, недавно попробовал впервой rbenv, разницы особо не чувствую, какие подводные?
Я ставил оба, на виртуалке, хосте и маке, никаких проблем. Читаешь мануал, читаешь вывод программы и всё отлично.
Так что ты пиздунишка.
Меньше функциональность, если тебя всё устраивает в этом плане, то всё зашибись.
Не я тут. просто у меня овер дохуя заказов по другой руби работе. практически закнчил. осталось последнюю фичу замутить. весь процесс прикручивания заключаться в подстановке тру или фолс в разные места. Своеобразный реверсинженеринг лол
закончил* самофикс
Запилишь потом кулстори о своём заработке на руби, уровень знаний, методы образвания?
Available versions:
1.8.6-p383
1.8.6-p420
1.8.7-p249
1.8.7-p302
1.8.7-p334
1.8.7-p352
1.8.7-p357
1.8.7-p358
1.8.7-p370
1.8.7-p371
1.8.7-p374
1.8.7-p375
1.9.1-p378
1.9.1-p430
1.9.2-p0
1.9.2-p180
1.9.2-p290
1.9.2-p318
1.9.2-p320
1.9.2-p326
1.9.2-p330
1.9.3-dev
1.9.3-preview1
1.9.3-rc1
1.9.3-p0
1.9.3-p125
1.9.3-p194
1.9.3-p286
1.9.3-p327
1.9.3-p362
1.9.3-p374
1.9.3-p385
1.9.3-p392
1.9.3-p429
1.9.3-p448
1.9.3-p484
1.9.3-p545
1.9.3-p547
1.9.3-p550
1.9.3-p551
2.0.0-dev
2.0.0-preview1
2.0.0-preview2
2.0.0-rc1
2.0.0-rc2
2.0.0-p0
2.0.0-p195
2.0.0-p247
2.0.0-p353
2.0.0-p451
2.0.0-p481
2.0.0-p576
2.0.0-p594
2.0.0-p598
2.0.0-p643
2.0.0-p645
2.0.0-p647
2.1.0-dev
2.1.0-preview1
2.1.0-preview2
2.1.0-rc1
2.1.0
2.1.1
2.1.2
2.1.3
2.1.4
2.1.5
2.1.6
2.1.7
2.2.0-dev
2.2.0-preview1
2.2.0-preview2
2.2.0-rc1
2.2.0
2.2.1
2.2.2
2.2.3
2.3.0-dev
jruby-master+graal-dev
jruby-1.5.6
jruby-1.6.3
jruby-1.6.4
jruby-1.6.5
jruby-1.6.5.1
jruby-1.6.6
jruby-1.6.7
jruby-1.6.7.2
jruby-1.6.8
jruby-1.7.0-preview1
jruby-1.7.0-preview2
jruby-1.7.0-rc1
jruby-1.7.0-rc2
jruby-1.7.0
jruby-1.7.1
jruby-1.7.2
jruby-1.7.3
jruby-1.7.4
jruby-1.7.5
jruby-1.7.6
jruby-1.7.7
jruby-1.7.8
jruby-1.7.9
jruby-1.7.10
jruby-1.7.11
jruby-1.7.12
jruby-1.7.13
jruby-1.7.14
jruby-1.7.15
jruby-1.7.16
jruby-1.7.16.1
jruby-1.7.16.2
jruby-1.7.17
jruby-1.7.18
jruby-1.7.19
jruby-1.7.20
jruby-1.7.20.1
jruby-1.7.21
jruby-1.7.22
jruby-9.0.0.0-dev
jruby-9.0.0.0+graal-dev
jruby-9.0.0.0.pre1
jruby-9.0.0.0.pre2
jruby-9.0.0.0.rc1
jruby-9.0.0.0.rc2
jruby-9.0.0.0
jruby-9.0.1.0
jruby-9.0.2.0+graal-dev
jruby-9.0.3.0
maglev-1.0.0
maglev-1.1.0-dev
maglev-2.0.0-dev
mruby-dev
mruby-1.0.0
mruby-1.1.0
rbx-1.2.4
rbx-2.0.0-dev
rbx-2.0.0-rc1
rbx-2.0.0
rbx-2.1.0
rbx-2.1.1
rbx-2.2.0
rbx-2.2.1
rbx-2.2.2
rbx-2.2.3
rbx-2.2.4
rbx-2.2.5
rbx-2.2.6
rbx-2.2.7
rbx-2.2.9
rbx-2.2.10
rbx-2.3.0
rbx-2.4.0
rbx-2.4.1
rbx-2.5.0
rbx-2.5.1
rbx-2.5.2
rbx-2.5.3
rbx-2.5.4
rbx-2.5.5
rbx-2.5.6
rbx-2.5.7
rbx-2.5.8
ree-1.8.7-2011.03
ree-1.8.7-2011.12
ree-1.8.7-2012.01
ree-1.8.7-2012.02
topaz-dev
На какой лучше писать ньюфагу? Поставил для обучения 2.2.0 пока.
Available versions:
1.8.6-p383
1.8.6-p420
1.8.7-p249
1.8.7-p302
1.8.7-p334
1.8.7-p352
1.8.7-p357
1.8.7-p358
1.8.7-p370
1.8.7-p371
1.8.7-p374
1.8.7-p375
1.9.1-p378
1.9.1-p430
1.9.2-p0
1.9.2-p180
1.9.2-p290
1.9.2-p318
1.9.2-p320
1.9.2-p326
1.9.2-p330
1.9.3-dev
1.9.3-preview1
1.9.3-rc1
1.9.3-p0
1.9.3-p125
1.9.3-p194
1.9.3-p286
1.9.3-p327
1.9.3-p362
1.9.3-p374
1.9.3-p385
1.9.3-p392
1.9.3-p429
1.9.3-p448
1.9.3-p484
1.9.3-p545
1.9.3-p547
1.9.3-p550
1.9.3-p551
2.0.0-dev
2.0.0-preview1
2.0.0-preview2
2.0.0-rc1
2.0.0-rc2
2.0.0-p0
2.0.0-p195
2.0.0-p247
2.0.0-p353
2.0.0-p451
2.0.0-p481
2.0.0-p576
2.0.0-p594
2.0.0-p598
2.0.0-p643
2.0.0-p645
2.0.0-p647
2.1.0-dev
2.1.0-preview1
2.1.0-preview2
2.1.0-rc1
2.1.0
2.1.1
2.1.2
2.1.3
2.1.4
2.1.5
2.1.6
2.1.7
2.2.0-dev
2.2.0-preview1
2.2.0-preview2
2.2.0-rc1
2.2.0
2.2.1
2.2.2
2.2.3
2.3.0-dev
jruby-master+graal-dev
jruby-1.5.6
jruby-1.6.3
jruby-1.6.4
jruby-1.6.5
jruby-1.6.5.1
jruby-1.6.6
jruby-1.6.7
jruby-1.6.7.2
jruby-1.6.8
jruby-1.7.0-preview1
jruby-1.7.0-preview2
jruby-1.7.0-rc1
jruby-1.7.0-rc2
jruby-1.7.0
jruby-1.7.1
jruby-1.7.2
jruby-1.7.3
jruby-1.7.4
jruby-1.7.5
jruby-1.7.6
jruby-1.7.7
jruby-1.7.8
jruby-1.7.9
jruby-1.7.10
jruby-1.7.11
jruby-1.7.12
jruby-1.7.13
jruby-1.7.14
jruby-1.7.15
jruby-1.7.16
jruby-1.7.16.1
jruby-1.7.16.2
jruby-1.7.17
jruby-1.7.18
jruby-1.7.19
jruby-1.7.20
jruby-1.7.20.1
jruby-1.7.21
jruby-1.7.22
jruby-9.0.0.0-dev
jruby-9.0.0.0+graal-dev
jruby-9.0.0.0.pre1
jruby-9.0.0.0.pre2
jruby-9.0.0.0.rc1
jruby-9.0.0.0.rc2
jruby-9.0.0.0
jruby-9.0.1.0
jruby-9.0.2.0+graal-dev
jruby-9.0.3.0
maglev-1.0.0
maglev-1.1.0-dev
maglev-2.0.0-dev
mruby-dev
mruby-1.0.0
mruby-1.1.0
rbx-1.2.4
rbx-2.0.0-dev
rbx-2.0.0-rc1
rbx-2.0.0
rbx-2.1.0
rbx-2.1.1
rbx-2.2.0
rbx-2.2.1
rbx-2.2.2
rbx-2.2.3
rbx-2.2.4
rbx-2.2.5
rbx-2.2.6
rbx-2.2.7
rbx-2.2.9
rbx-2.2.10
rbx-2.3.0
rbx-2.4.0
rbx-2.4.1
rbx-2.5.0
rbx-2.5.1
rbx-2.5.2
rbx-2.5.3
rbx-2.5.4
rbx-2.5.5
rbx-2.5.6
rbx-2.5.7
rbx-2.5.8
ree-1.8.7-2011.03
ree-1.8.7-2011.12
ree-1.8.7-2012.01
ree-1.8.7-2012.02
topaz-dev
На какой лучше писать ньюфагу? Поставил для обучения 2.2.0 пока.
Есть. Но я на джаве воще не работал. Начал с нее пограмирование изучать, потом в рельсы съябал.
Ты просто глупый озлобленный мудак с синдромом илиты, зашивай пердак скорее, маня.
2.2
офк
>>5T61512
Turbolinks вешается на обычные ссылки и обновляет контент всей страницы. Можно использовать гем Turbograft или сделать просто через ajax, как Анон написал уже выше.
Посоны, как прикрутить? Инфы вообще ноль, каких-то два коленочных гема, написанные русскими энтузиастами, но они не полноценные. Нужно как-то красиво интегрировать bem-tools. Есть хоть какая-то инфа? Может кто делал?
нахуй-я-взял-эту-заявку-по-прикрутке-пайпала-кун
Да похуй. дело в том что если на апворке имя замараю то это ниччего страшного. А если ирл то это пздц
Дружище, апворк предоставит больше перспектив, чем заказы по знакомству. Не сразу, конечно, но и начинать свою карьеру на нём с такой хуйни не стоит.
Конкретная проблема: ни капистрано, ни скрипт запуска unicorn, не видят переменных окружения.
Всегда использовал RVM, подобных проблем не было.
Может у тебя юзверь от окторого ты запускаешь где-то поменялся?
> Самоучка
> Неграмотный
> Взялся прикрутить к опенсорсной хрени, при этом ни разу в глаза не видел не только хрень и палку, но и мерчантов вообще
> Даже не удосужился прикинуть что надо будет делать, но обещал сделать за копейки
> Обосрался
> Отмазывается
> Рассказывает прохладные истории
понятно
inb4: скорее всего у тебя с настройками баша проблемы.
Вот не надо обобщать.
Что с этим не так? если ты не понял то у меня небыло знаний чтобы мне платили.
Вот вы пидорасы, аноны. Ну интересный же вопрос. Ближайшее будущее которое возможно будет уже не на рельсах. Хуй кто высказался. Какой-то говносрач на счет рвмов и прочего дерьма. Чем вы все занимаетесь?
И что еще примечательно. Если новичок спрашивает какую-нибудь хрень, его шлют нахуй, обзывают и т.п. Если спрашивают что-то серьезное - тишина. А хули вы тут тогда обсуждаете я не пойму.
Это копия, сохраненная 4 декабря 2015 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.