• Как ограничить время работы потока?

    FanKiLL
    @FanKiLL
    В ExecutorService треды переиспользуются в этом и вся суть этих пулов.
    Каждую задача что вы кидаете например Runnable попадает в очередь и потом выполняется ексекютором когда какой нибудь тред освободится.

    Если посмотреть на названия тредов в екзекуторе - они будут примерно такими pool-2-thread-4
    Достучатся до треда в котором выполняется ваш код, вы можете прям из Runnable или Callable смотря что вы там скармливаете executor'y
    Thread.currentThread().getName() //например получить имя треда в котором выполняется Runnable


    Если хотите прервать тред по каким то причинам, то примерно так.
    Thread.currentThread().interrupt();
    Ответ написан
  • Ruby On Rails, как вылечить ошибки при генерации проекта?

    FanKiLL
    @FanKiLL
    Покажите что выдаёт команда gem list в консоле.
    И попробуйте в папке проекта выполнить команды bundle update потом bundle install
    Ответ написан
    Комментировать
  • Есть ли какие-нибудь учебнике по Ruby(не с нуля)?

    FanKiLL
    @FanKiLL
    Вот вам ознакомление с синтаксисом
    Ответ написан
    Комментировать
  • Как сделать систему уведомления для пользователей?

    FanKiLL
    @FanKiLL
    Есть такой gem - https://github.com/pokonski/public_activity
    У railscasts есть скринкаст как сделать это с нуля - railscasts.com/episodes/407-activity-feed-from-scratch но там показываются нотификации для всего и всех.

    Я же сделал так:
    миграция
    class CreateActivities < ActiveRecord::Migration
      def change
        create_table :activities do |t|
    
          t.integer :user_id # кому нотификация
          t.integer :author_id # кто сделал действие
          t.string :action # какое действие например create значит что то создалось
          t.integer :trackable_id #полиморфизм
          t.string :trackable_type #полиморфизм
          t.boolean :read, default: false
          t.timestamps
        end
    
        add_index :activities, [:trackable_id, :trackable_type]
        add_index :activities, :user_id
        add_index :activities, :author_id
        add_index :activities, :read
      end
    end


    потом в applicationController.rb есть такой метод
    def create_activity(to, author, action, trackable)
        activity = to.activities.build
        activity.author = author
        activity.action = action
        activity.trackable = trackable #полиморфизм обьект над которым произвелось действие
        activity.save
      end


    и потом в любом контролере
    например юзер отсылает сообщение другому юзеру или кто то оставляет комментарий вообщем любое действие
    create_activity(@user, current_user, 'create', @post)


    в итоге у вас потом такая лента примерно toster.ru/my/tracker как у тостера
    если взять все уведомления у юзера
    @activities = current_user.activities.includes(:author, :trackable).order(created_at: :desc)


    в view у вас всё есть, кому нотификация, действие которое было сделанно и обьект на который вы можете дать ссылку
    например вот так, но это частный случай у вас конечно будет подругому
    <%= link_to activity.author.username, user_path(activity.author) %> ответил на сообщение <%= link_to activity.trackable.conversation.title, my_conversation_path(activity.trackable.conversation) %>


    Будет написанно например
    FanKiLL ответил на сообщение название сообщения
    или
    FanKiLL написал новый пост

    Вообщем предлогаю посмотреть gem и скринкаст что я дал вначале - а там и этот код будет более понятен - если что спрашивайте.

    когда юзер заходит на страницу с нотификациями все не прочитанные сообщения помечаются как прочитанные а до этого можете где хотите выводить список не прочитанных сообщений

    current_user.activities.where(read: false).count
    Ответ написан
    3 комментария
  • Как правильно построить запрос к серверу?

    FanKiLL
    @FanKiLL
    C json мы в скайп всё вроде порешали.
    А как постом отправлять - я тут давал код, он рабочий
    toster.ru/answer?answer_id=336785#answers_list
    Ответ написан
    Комментировать
  • Как сделать в simple_form (rails) необычную ассоциацию?

    FanKiLL
    @FanKiLL
    Посмотрите скринкаст Dynamic Select Menus от railscasts.com там как раз делается то что вам нужно.
    Есть более новая версия скринкаста, но нужна подписка. У меня есть новая версия, только хз куда залить да и надо ли на rutracker можно и так скачать.
    Ответ написан
    1 комментарий
  • Как лучше реализовать чат клиент-сервер на java websocket?

    FanKiLL
    @FanKiLL
    netty.io Мы писали в своё время на нём сервер с webcosket's
    Ответ написан
    Комментировать
  • Как получить больше производительности от ruby?

    FanKiLL
    @FanKiLL
    https://github.com/resque/resque
    Так же в рельсах 4.2.0 появится собственная очередь, так что пока можно использовать resque
    а потом перейти на встроенную очередь.

    Active Job, ActionMailer #deliver_later
    The headline feature for Rails 4.2 is the brand new Active Job framework, and its integrations. Active Job is an adapter layer on top of queuing systems like Resque, Delayed Job, Sidekiq, and more. You can write your jobs to Active Job, and they'll run on all these queues with no changes.
    Ответ написан
  • Java REST. Как прописать в Path путь вида /get/group1/group2/...?

    FanKiLL
    @FanKiLL
    А зачем вы делаете это через Get, сделайте через чтобы запрос за группами или что вы там хотите отдать через пост. Например на урл - /get/groups вам отправляют список групп в json и вы их оттуда заберёте. Так маппинг будет чище.
    Ответ написан
    1 комментарий
  • Как вызвать функцию n раз, где n задается пользователем?

    FanKiLL
    @FanKiLL
    how_many_times_run_func = int(input("Please enter how many timw you wont run formula: "))

    Надо только обернуть это в try except чтобы если введут не цифры то отловить исключение.
    Там же можно валидировать чтобы например вводили число не выше 1000

    если используете питон ниже 3 версии то вместо input используйте raw_input

    На питоне долго не писал, может кто подтправит
    class FormulaRunner:
    	def ask_user_run_times():
    		try:
    			how_many_times_run_func = int(input("Please enter how many timw you wont run formula: "))
    			return how_many_times_run_func
    		except ValueError:
    			print("Ooops value must be a number")
    			return FormulaRunner.ask_user_run_times()
    
    	def my_super_formula():
    		print("toster.ru")
    
    	
    if __name__ == "__main__":
    	run_times = FormulaRunner.ask_user_run_times()
    
    	for _ in range(run_times):
    		FormulaRunner.my_super_formula()
    Ответ написан
    Комментировать
  • Как настроить обработчик форм в bootstrap 3 ?

    FanKiLL
    @FanKiLL
    Я так в 2001 скомуниздил формочку с narod.ru там были форумы и удивлялся почему это формочка не добавляет сообщения на моей странице.
    Ответ написан
    Комментировать
  • Как правильно написать условие, используя params[params]?

    FanKiLL
    @FanKiLL
    Показывать посты из категории в которой человек создаёт пост?
    Post.where(category_id: params[:category_id]) #или откуда вы там получаете id категории
    Ответ написан
    Комментировать
  • Как вы контролируете удаленных разработчиков?

    FanKiLL
    @FanKiLL
    Смотреть по коммитам в гит, на общее выполнение задания. Аутсорс такая штука, что сегодня человек может написать 100строк, а завтра закончить почти 50% всего задания ещё и пофиксить какие-то баги.
    В любом случае надо смотреть по месячной активности а не каждодневной.

    Какие то странные вопросы, а вы в оффисе как контролируете работу? Вот так и контролируйте аутсорс.

    Я сейчас фрилансю и каждый день, заливаю то что сделал на тестовый сервер и показываю заказчику. Плюс отчёт на емэйл - что было сделано за день - пункты + планы на завтра.

    Например сегодня:

    Дата:
    1) добавил древовидные комментарии

    Планы на завтра - сделать оценку комментариев (лайк/дизлайк)

    Удалёнщики такие же люди и день на день не приходится.
    Ответ написан
    2 комментария
  • Почему не работает анонимный клас в джава?

    FanKiLL
    @FanKiLL
    Что именно не работает? В дебагере смотрели? Поставьте банальный System.out.println
    Больше информации дайте.
    //добавляем слушатель действий для альфа
    alpha.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent ae){
            System.out.println("В аннонимом классе");
            lab.setText("Нажата кнопка Альфа");
        }
    });


    ещё у вас опечатка вместо actionPerfomend должно быть actionPerformed
    Ответ написан
    Комментировать
  • Rails: как правильно разделить функционал разных ролей пользователей?

    FanKiLL
    @FanKiLL
    Чем вам не нравится проверка прав в котнролерах и вьюхах?
    Ответ написан
  • Как загружать несколько файлов Carrierwave/angular +rails посредством json?

    FanKiLL
    @FanKiLL
    Отвечая на ваш второй вопрос. Создайте полиморфную модель Image
    и крепите сколько захотите к Task через has_many. И не только к таскам - это же полиморфная модель.
    Например

    class Image < ActiveRecord::Base
      belongs_to :imageable, polymorphic: true
    
      mount_uploader :picture, ImageUploader #ваш аплоадер
    end


    class Task < ActiveRecord::Base
      has_many :images, as: :imageable, dependent: :destroy
    end


    миграция для Image
    class CreateImages < ActiveRecord::Migration
      def change
        create_table :images do |t|
          t.string :picture
          t.integer :imageable_id
          t.string :imageable_type
          t.timestamps
        end
    
        add_index :images, [:imageable_id, :imageable_type]
      end
    end


    Теперь к таскам вы можете прикреплять сколько захотите картинок например
    @task = Task.new
    @task.images <<  Image.new
    @task.images <<  Image.new


    И так далее.

    Насчёт первого вопроса посмотрите ответ тут - stackoverflow.com/questions/23899860/actiondispatc...
    Ответ написан
    Комментировать
  • Через вебсокеты делаются реалтайм приложения?

    FanKiLL
    @FanKiLL
    Или вебсокеты или https://ru.wikipedia.org/wiki/Server-sent_events SSE когда что то происходит на сервере вы отправляете эти данные на клиент.
    Ответ написан
  • Нужен наставник по веб-программированию, поможете?

    FanKiLL
    @FanKiLL
    Вы хотите найти человека, который пожертвует свои допустим 2 часа, вместо того, чтобы пойти в ту же качалку или потратить это время на свой личный проект - он будет обучать вас?
    То есть обучать вас по скайп показывать как делать? Такое дорого стоит.
    Но, если вы найдёте такого альтруиста - то ок.

    Могу предложить, раз вы знаете хорошо css, js, html - я вас беру в довольно таки большой проект - даю задачи, говорю какие фрейморки юзать например getbootstrap.com и fortawesome.github.io/Font-Awesome/icons - будете набивать руку на реальном проекте, будет редизайн - ваш дизайн если будет на уровне будет главным. Потом сможете указать проект в портфолио.
    Ответ написан
    Комментировать
  • Чем лучше всего читать закладки оффлайн?

    FanKiLL
    @FanKiLL
    Evernote? есть клиенты под все ось - если хотите они даже выдают специальный email - куда вы можете отослать ссылку на статью.

    Или воспользоватся сервисом который написал @umputun - www.ukeeper.com
    Суть сервиса проста, отсылаете ссылку на то что хотите почитать на специальный email - вам назад приходит статья - без лишних вещей только контент. Email вы уж точно не забудете прочитать.
    Можете посмотреть как это будет выглядит - www.ukeeper.com/screenshots
    Ответ написан
  • Авторизация пользователей Ruby on Rails: писать свою или использовать gem-ы?

    FanKiLL
    @FanKiLL
    А я считаю, что авторизацию и аутентификацию нужно писать под себя.
    Единственное что я бы не стал сам писать это аутентификацию по Oauth - и взял бы OmniAuth
    А так всё остальное пишется довольно быстро и главное что вы будете полностью понимать механизм того как работает по сути самая главная часть вашего приложения. Хотя если вы хорошо знаете gem допустим device и точно понимаете как он работает и если что то случится вы сможете всё поменять - берите его.

    В чём проблема написать это с нуля не понимаю, тем более например на railscasts есть скринкаст из 2-ух частей, где показывается как сделать это с нуля. Сделать потом табличку с ролями и метод проверяющий есть ли у юзера та или иная роль - тоже не так сложно.

    Я к тому, что это важная часть приложения - по сути это будущий костяк - по которому вы будите пускать в админку или давать - не давать что то редактировать или пускать в какую то часть сайта.
    Ответ написан
    Комментировать