есть Dell U2311H(b) (rev A02, 24/03/2011/) и Dell U2312HM(t) (rev A00, 07/2011). собираюсь один продать. какой себе оставить? визуально мне больше нравится 11й
В общем треды в Руби говно (1, 2). Пришлось заюзать процессы. Но процессам нужно между собой как-то общаться. Для этого в рубях придумалинаписали DRb. Такой себе IPC «для бедных» (c) для богатых(потому что есть небольшой overhead) неосиляторов как я (наверно здесь должен быть смайлик, но я не уверен какой лучше: грустный или веселый).
Хватит сказок, пора к делу. Если кто помнит у меня есть таски без и с зависимостями. Так вот таски без зависимостей мой велосипед щелкает как орехи, а как только встречает с зависимостями сразу же сыплет трейсами но не сдается^W^W^W и висит.
Еще ньюанс - если в предыдущей «сессии» «удовлетворить» все зависимости таска, а в следующей запустить только его то все ОК. Но это ничего не значит ибо проверка зависимостей, выполненых в предыдущей сессии и выполняемых в поточной происходит в разных методах (prev vs curr)
Как-то так. Если что-то непонятно, то спрашивайте ибо я мастер объяснить что-нибуть простое архи запутанно.
Сама ошибка в примере когда запускаются таски с 1 по 4; №1 и №2 есть зависимостями №3
vv@vv-Latitude-E5520 ~/work/own/ruby/portage3/bin $ ./03_fill_db.rb -u 4
/usr/lib/ruby/1.9.1/drb/drb.rb:585:in `load': incompatible marshal file format (can't be read) (/usr/lib/ruby/1.9.1/drb/drb.rb:573:in `load'TypeError)
: format version 4.8 required; 0.0 giventoo large packet 67654656
(DRb::DRbConnError from /usr/lib/ruby/1.9.1/drb/drb.rb:585:in `block in load'
)
from <internal:prelude>:10:in `synchronize'
from /usr/lib/ruby/1.9.1/drb/drb.rb:632:in `recv_reply'
from /usr/lib/ruby/1.9.1/drb/drb.rb:581:in `load'
from /usr/lib/ruby/1.9.1/drb/drb.rb:918:in `recv_reply'
from /usr/lib/ruby/1.9.1/drb/drb.rb:632:in `recv_reply'
from /usr/lib/ruby/1.9.1/drb/drb.rb:1197:in `send_message'
from /usr/lib/ruby/1.9.1/drb/drb.rb:918:in `recv_reply'
from /usr/lib/ruby/1.9.1/drb/drb.rb:1088:in `block (2 levels) in method_missing'
from /usr/lib/ruby/1.9.1/drb/drb.rb:1197:in `send_message'
from /usr/lib/ruby/1.9.1/drb/drb.rb:1172:in `open'
from /usr/lib/ruby/1.9.1/drb/drb.rb:1088:in `block (2 levels) in method_missing'
from /usr/lib/ruby/1.9.1/drb/drb.rb:1087:in `block in method_missing'
from /usr/lib/ruby/1.9.1/drb/drb.rb:1172:in `open'
from /usr/lib/ruby/1.9.1/drb/drb.rb:1105:in `with_friend'
from /usr/lib/ruby/1.9.1/drb/drb.rb:1087:in `block in method_missing'
from /usr/lib/ruby/1.9.1/drb/drb.rb:1086:in `method_missing'
from /usr/lib/ruby/1.9.1/drb/drb.rb:1105:in `with_friend'
from /home/vv/work/own/ruby/portage3/lib/common/runner.rb:34:in `initialize'
from /usr/lib/ruby/1.9.1/drb/drb.rb:1086:in `method_missing'
from /home/vv/work/own/ruby/portage3/lib/common/scheduler.rb:218:in `new'
from /home/vv/work/own/ruby/portage3/lib/common/runner.rb:34:in `initialize'
from /home/vv/work/own/ruby/portage3/lib/common/scheduler.rb:218:in `block in run_task'
from /home/vv/work/own/ruby/portage3/lib/common/scheduler.rb:218:in `new'
from /home/vv/work/own/ruby/portage3/lib/common/scheduler.rb:216:in `fork'
from /home/vv/work/own/ruby/portage3/lib/common/scheduler.rb:218:in `block in run_task'
from /home/vv/work/own/ruby/portage3/lib/common/scheduler.rb:216:in `run_task'
from /home/vv/work/own/ruby/portage3/lib/common/scheduler.rb:216:in `fork'
from /home/vv/work/own/ruby/portage3/lib/common/scheduler.rb:79:in `block in run_specified_tasks'
from /home/vv/work/own/ruby/portage3/lib/common/scheduler.rb:216:in `run_task'
from /home/vv/work/own/ruby/portage3/lib/common/scheduler.rb:76:in `map!'
from /home/vv/work/own/ruby/portage3/lib/common/scheduler.rb:79:in `block in run_specified_tasks'
from /home/vv/work/own/ruby/portage3/lib/common/scheduler.rb:76:in `run_specified_tasks'
from /home/vv/work/own/ruby/portage3/lib/common/scheduler.rb:76:in `map!'
from ./03_fill_db.rb:100:in `<main>'
from /home/vv/work/own/ruby/portage3/lib/common/scheduler.rb:76:in `run_specified_tasks'
from ./03_fill_db.rb:100:in `<main>'
Вопрос к maxcom`у: почему блок с тегами был перенесен из конца сообщения в начало? есть ли сему какое то логическое обьяснение (или пример извесного сайта, где такой же подход)?
Мне, (верю что не только мне) как пользовательлю ЛОРа, думается что прежний вариант был лучше
Ну и чтобы «добить» так сказать: а почему же на главной все осталось по прежнему? или здесь действует такой принцип: на главной все должно быть ОК, а что там в середине не так уж и важно
Есть следующая задача: нужно написать программу (для заказчика все есть «программа»), которая по сути есть редактором неких табличных данных (как пример - база городских телефонов). Но есть несколько «но».
в 1-й версии это должна быть host only программа
в 2-й версии некая часть фунциональности, должна быть доступна его сотрудникам (работа по сети)
«в 3-й версии» база должна стать еще и частью сайта (поиск) для клиентов.
Клиент сказал что каждую версию готов оплачивать отдельно
С моей стороны тоже есть пара «но»:
нет много времени
нет знаний по 9к+ технологиях/фрейворках/ЯП
хочется перестаховатся на случай если клиент все таки окажется «редиской»
Тоесть мне нужно быстро и качественно наваять солюшен, который бы легко можна было «разширить» до следующей версии
я прикинул что у меня есть следующие варианты (забыл сказать что «приложение"должно быть под оффтопик :( )
.net/mono (ни то ни другое ни разу не использовал) + sqlite/mysql
qt + ruby(js) + sqlite/mysql. (надеюсь что хоть чтото из пары ruby/js возможно заюзать с qt под оффтопик)
RoR(или другой web-фреймворк для руби) + sqlite/mysql. наверное самый простой вариант. Но меня смущает то что я ни разу не щупал этот RoR. Вот если бы найти для мого кейса такой же скрипт, было бы конечно неплохо
В общем я продолжаюбороться с мельницамитредами. Опять все переписано, опять код мне нравится (теперь еще больше :) ). Да еще и task'и выполняются в тредах. Тоесть все должно быть супербыстро :)
Но есть одно «но». Есть task'и, которые можна выполнять только если все его task'и-зависимости выполнены. Сейчас я делаю так: по окончанию поточного task'а перезапускаю все task'и, которые зависят от него. Все вроде ок, но в 1 случае(запуске) из ~9 я получаю облом
Правильно ли понимаю что мне в данном случае должно помочь выставление приоритета для тредов? То есть нужно построить граф зависимостей, расставить приоритеты (чем «важнее» зачада - тем больше приоритет) для задач и запускать тред с task'ом с соотвествующим приоритетом. Может есть какая то либа для сего чтобы не плодить велосипеды? У меня сейчас зависимость задается в лоб
Задача: у меня есть некоторое количество «задач», которые можно выполнять параллельно. Описание задачи являет собой модуль с методами и константами. Есть клас-враппер, который собственно и запускает задачи.
Проблемма: я не нашел (хорошего) способа как «inject`ить» все внутренности модуля в свой отдельно взятый инстанс враппера.
Я перепробывал
class_eval(«include ..»)
instance_eval(«include ..»)
Object.extend()
Но ни один не помог. Наиболее близко ктому что мне надо был extend. Но он к сожалению не «копировал» константы. А документация по этому поводу разходится
extend(module, ...) → obj click to toggle source
Adds to obj the instance methods from each module given as a parameter.
extend_object(obj) → obj click to toggle source
Extends the specified object by adding this module’s constants and methods (which are added as singleton methods). This is the callback method used by Object#extend.
Сейчас я вижу 2 возможных костыляworkaround`а:
возвращать каждую константу в отдельном методе
в инстансе работать на прямую с методами/константами
Код прототипа (я надеюсь гуру понимают почему он работает правильно)
#!/usr/bin/env ruby
# encoding: UTF-8
require 'thread'
require_relative 'module_a'
require_relative 'module_b'
class TaskRunner
def initialize(_module)
print "#{self.__id__}:#{_module.name.to_s}\n"
self.class.class_eval("include #{_module}")
process_test_method
end
def process_test_method
print "#{self.__id__}:#{test_method}\n"
end
end
scheduled_tasks = []
Module.constants.select { |module_name|
module_name.to_s.start_with?('Module_')
}.each { |name|
scheduled_tasks << Thread.new do
TaskRunner.new(Kernel.const_get(name))
end
}
scheduled_tasks.each { |task| task.join }
модуль №1
#!/usr/bin/env ruby
# encoding: UTF-8
#
module Module_a
PROVIDES = 'architectures'
def test_method
'I am from Module_a::method'
end
end
модуль №1
#!/usr/bin/env ruby
# encoding: UTF-8
#
module Module_b
PROVIDES = 'platforms'
def test_method
'I am from Module_b::method'
end
end
В общем я продолжаю мучатьтестить различные конфигурации сабжа и у меня возникли следующие вопросы.
Ах да, мой минимальный use case такой: нужно соеденить 2 клиента/PC (допускаю что 1 из них на шиндовсе; во избежания казусов в будущем), у которых есть инет, но нет белого IP.
Пока что остановился на связке udp+tun. Все работает (в тестовом режиме), клиенты подключаются к сервачку, пакетики ходят. Все довольны. Но..
Вопросы:
для каждой (под)сети нужен свой порт. ну как-то так
port 1194
server 10.0.0.0 255.255.255.128
Вопрос: это что же получается что на одном хосте я не запущу одновременно больше чем ~2**16-2**10 «впн сетей»? Или все-таки есть какой то trick? А может можна юзать только один порт? а то держать все открытым наружу как то стремно..
для каждой (под)сети нужен свой tunX. Здесь говорится что все должно быть OK. Но у меня опять чтото не вяжется
vs tmp # ifconfig | grep -A1 tun
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.254.254.129 P-t-P:10.254.254.130 Mask:255.255.255.255
--
tun1 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.0.0.1 P-t-P:10.0.0.2 Mask:255.255.255.255
vs tmp #
Вопрос: так можна как нибуть обойтись одним tun-девайсом или нет? Если нет, то есть ли какой-то лимит на количество этих «нод»?
Допустим у меня в «сети» есть 2 клиента + «сервер». Вопрос: сколько таких «сетей» потянет например Amazon Extra Large Instance? Может нужно что-то «подкрутить» в конфиге OpenVPN (и не только OpenVPN) чтобы выжать максимум?
В процессе гугления нашел такой конфиг. В нем все включено. Вопрос: какие видите +/- этого подхода?
Сервер как правило получает первые 2 IP в соответстующей сети (10.0.0.1, 10.0.0.2). Вопрос: есть ли смысл это менять? Если да — то как (гугл не колется)?
В сети есть куча вопросов об auto reconnect после обрыва связи. Как я понял есть вариант с пингом и жонглирование keepalive/ping/ping-restart и тому подобными опциями? Вопрос:а у Вас есть годная success story по этому вопросу?
У меня в тесте сервер в обоих конфигах юзает тот же ключ
Вопрос: это правильно или нужно генерить отдельные ключи?
Допустим ноут с настроеным OpenVPN и ключами (без пароля(-ей)) попадает в руки плохому, технически обученному человекузлобному хакеру. Ключи все еще валидны так как хозяину ноута пофих на ключи ведь у него пропал ноут. Вопрос: что он может сделать с остальной инфрастуктурой (одна сетка уже ему доступна)?
1. Какой тип флагов может быть указан в этих файлах? Только глобальный? или глобальный+локальный? А если локальный то к какому пакаджу тогда он применяется? Еще какой нибуть вариант?
В каждой из этих тем идет тотальная война фанбоев и хейтеров. тем кому наср@ть/пофиг - допольнительно «кормлят» представителей обоих сторон.
Посему предлагаю следующее: завести на гитхабе репо. «писать» все туда. фанбои свои аргументы отдельно, хейтеры - отдельно. Если будут еще категории - пожалуйста. отдельно организовать еще овер9к опросов/предсказаний о том взлетит/не взлетит/etc в Слаке/Дебиане/на эмбеде/etc итд итп.
Потом любой сможет проверить
что медуза был/оказался школото или нет
почему пупкин так фанатеет (любит красноглазить, или все что б работало без костылей
и еще миллион других опровежений/подтверждений о кажом участнике.
Почему гит - «что написано пером - не вырубиш топором» (с)
Если кто знае лучший тулзу - вперед!
обсудим?
PS: медуза, пупкин не обижайтесь. Вы здесь просто как пример. Я вас не игнорил и не собираюсь. Надеюсь на тоже самое
Если кишка не тонка^W^W^W не лень, уверены в своем мнении, и хотите потом доказать собеседнику что были правы - присылаем pull request`ы или постим в тред (желательно, в виде, удобном для copy/paste)
Linux build-server 2.6.34-xen-r4 #1 Sat Apr 2 15:04:50 Local time zone must be set--see zic manua i686 Intel(R) Core(TM) i5-2540M CPU @ 2.60GHz GenuineIntel GNU/Linux
Я знаю что большенство установленного софта в ней немного протухло (обновлять не предлагать), но дело не в этом (я надеюсь на это).
Есть фирма «Рога и Копыта». У нее есть серверок на котором крутится нужная им фигня. Также у них есть несколько компов с клиентским гуем для «фигни» :) Компы и сервер находятся в разных физических сетях
Здесь вроде все просто. Нужен VPN. Но.. задача усложняется :)
Фирма «Рога и Копыта» растет и развивается. Теперь она уже корпорация и имеет в своем составе несметное количество отделений. Каждое отделение имеет такую же структуру как в первом сценарие. Главный админ решил сделать на базе одного запущеного openvpn-сервера всю эту «кухню». Тоесть для каждого отделения своя отдельная сеть (с непересекающимися IP)
Задача
один openvpn-сервер
несметное количество отделенийдествительно много отделений. Вполне возможно что будет нужен такой трюк
каждое отделение - отдельный VPN
динамическое добавление/«отключение» отделения(-й) (и юзеров)?
Вопросы
Возможно ли это в принципе?
openVPN подойдет или нужно смотреть на чтото другое (PPTP, L2TP/IPsec, SSTP или $ВАША_ПОДСКАЗКА)?
нужно ли для каждого PC в отделении свой ключ/cert для коннекта или достаточно одного на все отделение?
я так понимаю что при большых количествах отделений(и юзеров) нужно какое-то хранилище. LDAP подойдет здесь или чтото другое?
PS: в сетевой терминологии не силен. переспрашивайте если что
Most ebuilds are for software which is released under a single license. In these cases, the current LICENSE variable can remain as is. For example:
LICENSE="single-license"
However, there are several ebuilds for software which is released under several licenses, of which the user must accept one, some or all [2]. To complicate this, some ebuilds include optional components which fall under a different license.
To accomodate these cases, LICENSE syntax should accomodate all functionality offered by a DEPEND string. To keep things simple, this GLEP proposes that the syntax be identical. For example: