Home
codingteam
codingteam@conference.jabber.ru
07.09.2013< ^ >

Тема: C/С++, Haskell, Ruby, Python, Perl, Lisp, Erlang, OCaml, JavaScript, Scala, Nemerle, F#.
Код выкладывать на http://dumpz.org
Вопросы задавать в чат, а не в личку.
Логи: http://tinyurl.com/ctcjr-logs
Упоминания о Flash, Java, .NET, PHP, Pascal/Delphi/Borland, 1С караются съеданием поциента.
Личкрафты: http://leechcraft.org и git://github.com/0xd34df00d/leechcraft.git
Horta Hell: https://github.com/ForNeVeR/horta-hell
Проблем решено: 0x15
Говорящих демонов: 0x1

=> Объявляется неделя народного дивана.
[00:13:45] ranita зашёл в конференцию
[00:13:57] <InuYasha> кто?
[00:14:12] <InuYasha> я уже сплю морально
[00:14:15] <InuYasha> т.е. ментально
[00:14:22] <InuYasha> т.е. нунахуйвсеэтикомпьютеры
[00:19:31] <emu-nero~> InuYasha: уходишь в аналоговые панки?
[00:19:43] <InuYasha> в синопсис
[00:19:44] <InuYasha> блдвад
[00:19:55] <InuYasha> в этот.. как его... короче, standby
[00:20:04] <InuYasha> мне мозг вынесли
[00:20:09] <InuYasha> говноделы.
[00:22:32] ranita вышел из конференции
[00:51:48] пкщгяут[slacktop] зашёл в конференцию
[01:44:06] yesyes вышел из конференции
[02:31:12] m4n71k0r вышел из конференции
[02:33:59] magog вышел из конференции
[02:40:57] Glorious Chaplain of the Hortamarines вышел из конференции
[04:33:00] Rainbow Spike зашёл в конференцию
[04:37:44] Rainbow Spike вышел из конференции: http://comicslate.org
[07:58:33] emu-nero~ вышел из конференции
[08:00:24] emu-nero~ зашёл в конференцию
[08:20:57] <ForNeVeR> .ping
[08:20:59] <DeadBot> ForNeVeR: понг от тебя 1.29 секунды
[08:21:03] <ForNeVeR> o_0
[08:40:17] <j123123> .ping
[08:40:17] <DeadBot> j123123: понг от тебя 0.04 секунды
[08:40:21] <j123123> .ping
[08:40:21] <DeadBot> j123123: понг от тебя 0.03 секунды
[08:40:22] <j123123> .ping
[08:40:22] <DeadBot> j123123: понг от тебя 0.04 секунды
[08:48:31] <InuYasha> .dong
[08:48:50] <InuYasha> ForNeVeR goo'morn
[08:51:54] Александр Николаевич зашёл в конференцию
[08:56:02] <emu-nero~> G-ning
[09:22:17] InuYasha вышел из конференции: ATH0+++
[09:29:34] kactpatop зашёл в конференцию
[09:31:18] kactpatop вышел из конференции
[10:16:15] Glorious Chaplain of the Hortamarines зашёл в конференцию
[10:17:53] <j123123> Странно получается, что на этих бенчмарках, хачкель на одноядерной конфигурации примерно на уровне с жабой по скорости http://benchmarksgame.alioth.debian.org/u64/benchmark.php?test=all&lang=ghc&lang2=java&data=u64 но вот например на многоядерной, хачкель сливает жабке http://benchmarksgame.alioth.debian.org/u64q/benchmark.php?test=all&lang=ghc&lang2=java&data=u64q
[10:19:02] <j123123> Является ли акторы, или что там в хачкеле используется для распараллеливания более медленным механизмом, чем обычные треды и всякие сопутствующие мьютексы шмутексы?
[10:26:12] <emu-nero~> пользовательская реализация всегда тормознутее будет
[10:26:14] <emu-nero~> чем ядерная
[10:36:14] m4n71k0r зашёл в конференцию
[10:53:52] rexim зашёл в конференцию
[10:59:08] Александр Николаевич вышел из конференции: Я использую Miranda IM Freize Pack (http://freize.ru/)
[10:59:57] <ForNeVeR> j123123: как ты в контексте этих соображений объяснишь более высокое быстродействие веб-серверов на х-ле?
[11:02:23] <ForNeVeR> http://www.yesodweb.com/blog/2012/10/measuring-warp - пруфы по поводу скалируемости warp'а, если что.
[11:07:54] <emu-nero~> веб-сервера редко теперь крутятся на машинах с одним ПУ
[11:08:14] rexim вышел из конференции
[11:08:16] <emu-nero~> бл.
[11:08:46] <ForNeVeR> С одним ПУ?
[11:08:50] <ForNeVeR> ПУ == Путин?
[11:09:27] <emu-nero~> ды
[11:09:57] <emu-nero~> CU всмысле, вычислительная еденица
[11:10:06] <emu-nero~> блок.
[11:12:32] <emu-nero~> ForNeVeR: я просто тупой, ну :(
[11:31:04] <j123123> Насчет веб серверов, там ситуация более сложная. Там есть некие события, на которые этот самый сервер реагирует и генерирует ответ на него. А если все данные уже есть и нет необходимости как-то реагировать на некие внешние события и в ответ на них совершать некое действие, например если просто даны некоторые входные данные и из них надо получить некие выходные данные (пример - посчитать FFT, сжать файл, перекодировать фильм таким-то кодеком, при этом задействуя несколько ядер) - примеры превосходства хачкеля на таких задачах есть?
[11:33:22] <j123123> Кстати в nginx используются процессы, а не потоки
[11:34:55] <j123123> Да и вообще, там надо читать про архитектуру многопоточных серверов этих, как там нагрузка распределяется, это отдельная тема
[11:39:34] <j123123> http://habrahabr.ru/qa/11194/ пруф насчет того, что в Nginx процессы а не потоки
[11:49:25] magog зашёл в конференцию
[11:50:57] <j123123> Кроме того, суть тех сравнений в том, чтобы алгоритм был одинаков для всех решений. http://benchmarksgame.alioth.debian.org/play.php#implement
We are trying to show the performance of various programming language implementations - so we ask that contributed programs not only give the correct result, but also use the same algorithm to calculate that result.
[11:52:31] <j123123> Алгоритмы работы того веб-сервера на х-ле скорее всего сильно отличаются от nginx
[12:31:19] rexim зашёл в конференцию
[12:31:32] <rexim> .ping
[12:31:33] <DeadBot> rexim: понг от тебя 0.08 секунды
[12:31:35] <rexim> .ping
[12:31:35] <DeadBot> rexim: понг от тебя 0.09 секунды
[12:31:36] <rexim> .ping
[12:31:36] <DeadBot> rexim: понг от тебя 0.09 секунды
[12:31:39] <rexim> Пингх!!1
[13:05:50] <emu-nero~> гхн
[13:13:08] <rexim> emu-nero~: нет ты!
[13:13:59] sss|zombie зашёл в конференцию
[13:17:23] Graf зашёл в конференцию
[13:19:25] <emu-nero~> rexim: ты.
[13:20:21] Graf вышел из конференции
[14:06:19] moonhawk зашёл в конференцию
[14:36:21] O01eg вышел из конференции: Replaced by new connection
[15:11:23] eaeee зашёл в конференцию
[15:20:16] O01eg зашёл в конференцию
[15:29:34] yesyes зашёл в конференцию
[15:30:20] myzone зашёл в конференцию
[15:31:04] <myzone> приет
[15:32:29] <eaeee> myzone: здря
[15:33:31] <myzone> eaeee: тут же помогают решать проблемы чуть сложнее хелоуворлда?
[15:34:17] <eaeee> myzone: наверное
[15:36:42] <myzone> eaeee: ну смотри у меня задачка - написать простейшее транзакционное ДАО. проблема в том, что я не знаю, как можно обеспечить ролбэк состоянии мьютебл объектов при ролбэке транцакции, все утро пытаюсь что-то придумать и не получается (
[15:39:30] <eaeee> myzone: это не ко мне
[15:39:34] <myzone> могу подкрепить юнит-тестом, который показывает о чем я говорю
[15:39:42] <myzone> черт :((
[15:39:58] <myzone> правда он на джаве
[16:06:43] e2e2 зашёл в конференцию
[16:14:58] e2e2 вышел из конференции
[16:47:47] vertebra1 зашёл в конференцию
[16:48:07] <vertebra1> Привет всем
[16:49:40] <vertebra1> Кто нибудь знает как можно взломать впа2 быстро (брутфорс не приветствуется!)?
[16:55:49] eaeee вышел из конференции
[17:09:43] ilya01 зашёл в конференцию
[17:11:17] ilya01 вышел из конференции
[17:19:18] <emu-nero~> найти роутер
[17:19:24] <emu-nero~> воткнуться в езернет
[17:20:04] <vertebra1> Речь идет об удаленном доступе
[17:21:40] emu-nero~ вышел из конференции: Replaced by new connection
[17:21:42] emu-nero~ зашёл в конференцию
[17:43:57] magog вышел из конференции: Replaced by new connection
[17:43:57] magog зашёл в конференцию
[17:44:01] eaeee зашёл в конференцию
[17:54:17] emu-nero~ вышел из конференции: Replaced by new connection
[17:54:18] emu-nero~ зашёл в конференцию
[17:55:05] SolarRay вышел из конференции
[17:56:18] eaeee вышел из конференции
[17:58:50] PhoSor зашёл в конференцию
[18:02:23] emu-nero~ вышел из конференции
[18:02:38] emu-nero~ зашёл в конференцию
[18:05:31] <PhoSor> ForNeVeR: ты хуй
[18:06:52] <emu-nero~> удалённый доступ не существует
[18:06:59] <emu-nero~> всегда есть контакт.
[18:07:01] <ForNeVeR> myzone: а почитай про two-phase commit protocol.
[18:07:40] emu-nero~ вышел из конференции
[18:07:43] <ForNeVeR> Обычно его используют, когда нужна транзакционная работа группы атомарных операций.
[18:08:12] PhoSor вышел из конференции
[18:08:18] <myzone> ForNeVeR: спасибо сечас почитаю
[18:09:22] PhoSor зашёл в конференцию
[18:20:20] <myzone> ForNeVeR: кажется, это чуть-чуть не о том, в моем случае транзакции могут быть даже последовательными (захватили монитор в начале, отпустили в конце), но даже так остается проблема в том, как реализовать откат состояния изменяемых объектов в случае роллбэка
[18:20:47] <ForNeVeR> myzone: фишка в том, что в процессе транзакции ты не реализуешь "накат" изменений.
[18:21:08] <ForNeVeR> Пока транзакция не закоммичена - видимое для третьей стороны состояние системы не должно быть изменено.
[18:21:28] <ForNeVeR> Мы же говорим про самодельную реализацию ACID, так?
[18:21:38] <myzone> согласен, однако внутри транзакции все видно, верно?
[18:21:51] <ForNeVeR> Да, внутри транзакции видно изменённые объекты.
[18:22:03] <myzone> вот как это реализовать
[18:22:12] <ForNeVeR> Э, а в чём проблема, собственно?
[18:22:22] <ForNeVeR> Начнём с того, что у тебя уже есть. И что ты хочешь получить.
[18:25:37] <myzone> Хорошо. Идея моя заключается в написании ДАО, который поддерживает транзакционность на уровне графа объектов. Уже есть пару интерфейсов, которые должны реализовывать эту функциональность
[18:26:33] <ForNeVeR> А nhibernate чем-то не устраивает?
[18:26:43] <ForNeVeR> Ой, то есть просто hibernate.
[18:28:43] <myzone> меня он устраивает, но вот препод наш сказал делать все ручками, а я еще к тому же заболел, вот и решил провести время с пользой для себя )
[18:28:53] <ForNeVeR> Хм.
[18:28:57] <myzone> велосипедировать ведь полезно для здоровья )
[18:29:08] <ForNeVeR> Что такое ACID - знаешь?
[18:29:44] <myzone> да, знаю, правда не глубоко, ну что это значит знаю )
[18:29:52] <ForNeVeR> Для начала разберись, как оно работает в традиционных транзакционных системах. Щас найду хорошую статейку, минутку.
[18:30:16] <ForNeVeR> myzone: http://habrahabr.ru/post/181584/
[18:30:29] <ForNeVeR> А потом тебе будет нужно реализовать такое же, но на объектном графе.
[18:30:41] <ForNeVeR> Один из способов - это снапшоты.
[18:30:57] <ForNeVeR> Когда пользователь создаёт транзакцию, то у него создаётся полная копия всего графа объектов.
[18:31:21] <ForNeVeR> А когда он делает коммит - то изменения из его копии вливаются в общий граф, который виден всем.
[18:31:41] <myzone> вот я тоже про такое думал
[18:31:56] <ForNeVeR> Если никто не менял основной граф за это время - значит, мы просто заменяем основной граф на его копию, изменённую в транзакции.
[18:32:06] <ForNeVeR> А вот если менял - можно уже всякие стратегии выдумывать.
[18:32:08] <myzone> но снапшот == копия, а при копировании теряется идентичность объектов
[18:32:27] <ForNeVeR> Например, clojure предполагает повторение транзакции в таких случаях.
[18:32:47] <ForNeVeR> myzone: объекты, хранимые в БД, в терминах Java можно описать как POJO.
[18:32:55] <ForNeVeR> Они не теряют идентичность при копировании.
[18:33:19] <myzone> любой объект теряет идентиность при копировании
[18:33:29] <ForNeVeR> Нет, не теряет.
[18:33:36] <ForNeVeR> У тебя просто неправильное понятие об идентичности.
[18:33:44] <ForNeVeR> myzone: например, у меня есть int.
[18:33:47] <myzone> ну == между ними же уже не сработают )
[18:34:02] <ForNeVeR> int a = 100500;
int b = a; // копирование
a == b; // true
[18:34:13] <ForNeVeR> Видишь, уже начинаются интересности.
[18:34:25] <myzone> и если ты посмотришь выше, то я писал, что проблема эта связана с изменением мутэбл объектов
[18:34:27] <ForNeVeR> myzone: а в терминах Java идентичность - это всё-таки скорее equals, а не ==.
[18:34:30] <myzone> да с интами все лучше
[18:34:46] <ForNeVeR> equals вполне себе может сохраняться при копировании.
[18:34:56] <myzone> это очевидно
[18:35:14] <myzone> но вот == как бы не сломать
[18:35:27] <ForNeVeR> Ага, то есть у тебя есть по определению мутабельные, неоткатываемые действия.
[18:35:39] <ForNeVeR> Так?
[18:35:54] <ForNeVeR> А теперь рассмотрим классическую БД, типа SQLite.
[18:36:00] <ForNeVeR> У неё тоже такие действия бывают.
[18:36:01] <myzone> в той реализации которую я написал утром, да, и это не сок
[18:36:12] <ForNeVeR> Это действие - это запись на диск.
[18:36:35] <ForNeVeR> Как видишь, СУБД старается всеми силами отложить этот момент как можно позже.
[18:36:53] <ForNeVeR> И ни в коем случае не производит записи на диск до коммита транзакции.
[18:37:36] <ForNeVeR> Я полагаю, что если ты разрабатываешь какую-то свою наколеночную ACID-систему, то должен сосредоточиться на откладывании момента внесения изменений в общедоступный граф объектов.
[18:37:56] <ForNeVeR> А до того момента хранить эти изменения в виде какого-то диффа в отдельном хранилище.
[18:38:06] <myzone> я так и делал
[18:38:11] <ForNeVeR> Ну вот, ок.
[18:38:36] <ForNeVeR> Дальше, чтобы обеспечить атомарность транзакции, желательно уметь заменять старый граф на новый посредством замены одной ссылки в памяти.
[18:39:43] <ForNeVeR> Но сложно вот так абстрактно рассуждать в отрыве от конкретного ТЗ и кода.
[18:40:12] <ForNeVeR> myzone: коль так, попробуй посмотреть, как в clojure реализованы транзакции.
[18:40:21] <myzone> но, тут пришли мутэбл объекты и ве сломали, как решить проблему в случае получения объектов я придумал - отдавать прокси объект, который понимаю, что в текущей нити на него открыта транзакция и становится копи он райт
[18:40:54] <myzone> давай я покажу код
[18:41:09] <ForNeVeR> Ну покажи, если его не очень много.
[18:41:18] <ForNeVeR> Про пастбин ты в курсе?
[18:41:31] <myzone> гитхаб, надеюсь прокатит
[18:41:40] <ForNeVeR> Вполне.
[18:41:56] <myzone> https://github.com/myzone/archive-manager/blob/master/src/main/java/com/myzone/archive/data/DataAccessor.java
[18:42:07] <myzone> вот сам файлик
[18:43:03] <ForNeVeR> Stream - это ж Java8?
[18:43:10] <ForNeVeR> Какой затейник.
[18:43:25] <myzone> ну так, для универа можно и заюзать
[18:43:38] <myzone> и туда и JavaFx вместо свинга
[18:43:51] <myzone> и 1 раз монгу даже засунул, когда был шанс
[18:43:52] <ForNeVeR> Ну да, здорово.
[18:44:01] <ForNeVeR> Эх, мне бы в продакшене дали такое поюзать...
[18:44:12] <ForNeVeR> myzone: ок, и что с этим кодом? Это же, гм, интерфейс.
[18:44:14] <myzone> в продакшине я пишу на 1.6
[18:44:26] <myzone> вот это к ТЗ
[18:44:34] vertebra1 вышел из конференции
[18:45:04] <myzone> т.е. проблемное место это вообще метод update
[18:45:08] <ForNeVeR> Ну, вот это как угодно можно реализовать.
[18:45:14] <ForNeVeR> В чём проблема метода update?
[18:45:32] <ForNeVeR> Кароч, я бы сделал так.
[18:45:41] <ForNeVeR> Реализуем хранилище, ну, например, List<T>.
[18:45:50] <ForNeVeR> Отдаём юзеру объект.
[18:45:54] <ForNeVeR> Вернее, копию.
[18:45:55] <ForNeVeR> Клон.
[18:46:14] <ForNeVeR> А когда юзер дёргает update - заменяем объект в хранилище на переданный.
[18:46:20] <ForNeVeR> В хранилище ищем по equals.
[18:46:40] Graf зашёл в конференцию
[18:46:53] Graf вышел из конференции
[18:46:57] <ForNeVeR> Да, придётся всё-таки предъявить к объектам какие-то требования (кратко - поддержка идентификации по equals), хоть я и вижу, что ты этого не хочешь.
[18:47:16] <myzone> нда, действительно
[18:47:28] <myzone> https://github.com/myzone/archive-manager/blob/master/src/main/java/com/myzone/archive/core/JavaFxBasedCore.java
[18:47:48] <ForNeVeR> Ну вот и ок :)
[18:47:51] <myzone> вот тут самая наивная реализация, но это так, чтобы интерфейс работал :))
[18:49:30] PhoSor вышел из конференции
[18:49:32] <myzone> под интерфейсом имел ввиду гуй
[18:49:48] PhoSor зашёл в конференцию
[18:50:32] <myzone> ForNeVeR: слушай, а ты не знаешь, как себя хибернейты в таких случая ведут?
[18:50:44] <ForNeVeR> В каких - "таких"?
[18:50:55] <ForNeVeR> Они тупо создают кэш объектов для каждой транзакции.
[18:54:54] <myzone> т.е. объекты полученные из разных транзаций - не один объект?
[18:54:57] <myzone> так?
[19:10:21] <ForNeVeR> Смотря что ты понимаешь под "один объект".
[19:10:37] <ForNeVeR> Области памяти занимают разные, да.
[19:12:08] <myzone> ну вот, это как-то странно, мне кажется
[19:12:58] <myzone> делаем сэйв нового объекта, потом достаем его же, а потом оказывается, что это уже копия
[19:13:01] <myzone> как-то неайс
[19:13:43] <myzone> т.е. если бы это было инкапсулированно - все ок, а так это как-то по-уродски
[19:17:06] <ForNeVeR> Поиграл тут в Papers, Please. Хорошая игра, посаны. Атмосферная.
[19:30:47] eaeee зашёл в конференцию
[19:52:50] magog вышел из конференции: Выключил машину, дабы насладиться жизнью
[20:17:09] eaeee вышел из конференции
[20:20:29] PhoSor вышел из конференции
[20:22:44] sss|zombie вышел из конференции
[20:28:13] eaeee зашёл в конференцию
[20:42:17] <myzone> ForNeVeR: я придумал, как можно заставить объекты проявлять квантовые свойства
[20:43:04] <myzone> правда это может нарушить контракт equlas
[20:47:39] Myp зашёл в конференцию
[20:56:25] rexim вышел из конференции
[21:14:46] eaeee вышел из конференции
[21:15:50] sss|zombie зашёл в конференцию
[21:25:07] eaeee зашёл в конференцию
[21:30:36] magog зашёл в конференцию
[21:51:33] myzone вышел из конференции
[22:37:01] goodstuff зашёл в конференцию
[23:33:40] yesyes вышел из конференции
Powered by freQ Powered by Python Valid XHTML 1.0 Transitional Valid CSS!