LINUX.ORG.RU

Сообщения cdshines

 

БД с поддержкой версионности

 , ,

У нас есть свой велосипед, который умеет «умно» апдейтить сущности, при необходимости создавая новые версии с сохранением отношений между ними (если B как-то связана с A и потом A апдейтится в A', связь между A' и В автоматически хендлится в заисимости от типа апдейта).

Время от времени я прикручиваю к нему какую-то функциональность и, поскольку это велосипед, изредка приходится лезть в кишки и менять там что-то. В такие моменты возникает желание заменить велосипед чем-то, что умеет само так менеджить версии (+/-, доменно-специфичные штуки допишем сами), чтобы сосредоточиться на своей логике.

Что есть такого, чтобы можно было из джавы юзать? Или хотя бы по ресту, если оно будет достаточно производительное.

cdshines
()

Swift IDE

 ,

В связи с большим открыванием, хотелось бы иметь IDE или хотя бы какой-то блокнот с кнопкой для запуска/компиляции и автодополнением. Гуглятся какие-то заброшенные плагины для sublime и все. Если есть не-мертвые проекты по созданию плагинов для idea/sublime, могу присоединиться. Даже что-то для vim или emacs подойдет.

cdshines
()

True multiple dispatch!

 

[слоупок][капитан][anonimous-на-связи]

Оказывается, у нас благодаря MethodHandles еще с 7 йавы можно было не городить простыни из инстансофов (https://en.wikipedia.org/wiki/Multiple_dispatch#Java).

Вместо тысячи слов: https://ideone.com/4qdGV5

[1] https://docs.oracle.com/javase/8/docs/api/java/lang/invoke/MethodHandle.html#...

Давайте ваши ненужно. И заодно хотя бы один пример IRL, когда вам этого не хватало.

cdshines
()

Почему во многих плеерах такой убогий шафл-режим?

 , , ,

Есть такие плееры, что если у тебя 1000 музыки, они будут играть от силы 100 в режиме случайного воспроизведения, причем одно и то же.

Если бы вы писали рендомайзер, как бы вы закодили случайный выбор песни и почему такое случается? Есть какие-то неочевидные подводные камни?

cdshines
()

Равномерный, быстрый, короткий (до 64 бит), криптографически несекьюрный хэш

 ,

Есть что-то быстрее Адлера-32? Ссылки на вайтпейперы приветствуются.

cdshines
()

Как бы отрефакторить свое собственное говнецо?

 , , , ,

Когда я был молодой, мне поручили написать важную хрень, и я начал писать, и написал. Мы использовали embedded-базу (если интересно - neo4j), и я тогда плевался от паттернов, поэтому сейчас по всему проекту иногда сквозь все слои абстракции прорывается низкоуровненая хрень.

Есть один класс-менеджер, который отвечает за инициализацию/конфигурирование базы и индексов. Из него наружу торчат методы для создания классов, которые оборачивают сущности базы и позволяют сверху налепливать свою логику. (делал тогда еще по этому ману: http://neo4j.com/docs/stable/tutorials-java-embedded-entities.html), оказалось, что зря.

Еще такая особенность - база вся дофига ACID, поэтому все операции нужно оборачивать в транзакции (которые никак особо не упрятать), а также все сущности (их там, грубо говоря, два типа) - ноды (вершины) и отношения (ребра) содержат ссылки на инстансы базы, которая их породила.

Если база падает, можно ее перезапустить и все будет в порядке, казалось бы, но! Поскольку каждый наш объект внутри держит какой-то примитив базы, после перезапуска эти примитивы будут ссылаться на старую базу, и, соответственно, весь перезапуск бесполезен.

Теперь я рву на себе волосы от отчаяния и пытаюсь подумать, как бы переписать это так, чтобы реинициализация базы влекла за собой каким-то образом «освежение» ссылок на ее инстанс. (Просто подменить на лету ссылку не катит, да.)

Можно было бы сделать все на исключениях (типа словить что-то в стиле «БазаВыключенаИсключение» и отрефрешить объект), но из-за того, что нет единой точки оперирования хренями, пришлось бы это совать всюду, где может быть взаимодействие с примитивами базы.

Прямо-таки уверен, что у нормальных пацанов есть нормальные решения. В этом треде можно меня говнить, но хотелось бы потом что-то увидеть полезное.

cdshines
()

leave, уходи

 

Есть ли что-нибудь тонкое и длинное, что может извиваться?

Чем ответ «тентакли для анимешниц» в ответ на вопрос про что-то такое:

начинает мягко подталкивать руки в нужное положение.

лучше, чем мой удаленный пост? Может, это потому, что я сказал, что среди модераторов есть тупицы и петросяны? Вношу поправошку: непоследовательные вахтеры тоже присутствуют.

cdshines
()

Помогите повысить производительность MySQL

 , ,

Пишу игру суть токова

Нужно много (~120KK записей) сдампить в MySQL, железо - 32ГБ RAM/Core i5 какой-то на 2 ядра + ssd. Кода под рукой нет, описываю суть: в тредпуле открывается 8(или 16) соединений, из файла читается построчно инфа, парсится и суется в БД. Загрузка CPU 25-60%, iostat показывает, что на диск пишется 16MiB/sec, загрузка 80%+. Дело в том, что я нубло еще то, и не понимаю, что тюнить. Нашел что-то здесь (https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_...), увеличил размер буфера - не помогло. Прошелся по опциям, запутался, попробовал комбинировать что-то - не помогает, все та же фигня. Сейчас происходит запись в 2 таблицы (в одну - 2К строк, во вторую - 15-20K в секунду, по грубым оценкам). Я так понимаю, мне нужно сделать так, чтобы оно писалось реже, но большими порциями, ибо база расположена на ссд и скорость записи не должна быть ботлнеком. Вопрос в том, почему увеличенный размер buffer pool (еще поднимал к-во самих buffer_pool_instances) не привел к ожидаемому результату.

Что читать, что пробовать, что крутить?

Может, уменьшить кол-во конкурентных тредов? (они читают все из разных файлов (как раз 16 файлов), т.е. по треду на файл, но могу сделать что-то вроде по 1 треду на 2-4 файла, хотя вряд ли в этом дело, да и задержка должна увеличиться)

cdshines
()

Дерево с быстрым доставанием родителей ноды

 , , математика.,

Дерево произвольного количества нод на каждой ветке. Допустим, у каждой ноды есть какой-то набор какого-то добра, т.е. добро ноды на уровне k + 1 состоит из ее добра и добра всех ее предков.

Еще нужно эту структуру хранить как какую-то персистентнуюю опердень, но нет условия на конкретную реализацию - т.е., если будет удобно в mysql, то mysql, если имеется какое-то дерево, которое может быть персистентным, было бы отлично. Еще (опционально) было бы неплохо иметь возможность шардить.

Важно вот что - в любой предложенной реализации должна присутствовать возможность получить для ноды список всех предков при уловии, что у каждой ноды один родитель, что очевидно, до корня. (банально записать просто плоской структурой в sql не катит, ибо если у дерева высота 1к, то это 1к запросов - ну его). И второй ключевой момент - оязательна возможность перекидывать ноды (как по соседству, так и с уровня на уровень), и чтоб при этом их добро менялось в соответствии с новым положением, в т.ч. и добро их детей.

(добавил в теги «математика», ибо математики обычно и подстказывают годные идеи, но если вас зацепило - простите)

cdshines
()

\[уймись, болезный\] Хочу написать виджет для KDE на Java

 , ,

В /девелопмент kde все ссылки на тулчейны для джавы мертвы. Кто-то занимался еще таким извратом? СтОит ли пробовать?

Перемещено mono из desktop

cdshines
()

Micro$oft толсто тр-лит Google

 , ,

http://www.scroogled.com/

http://www.microsoftstore.com/store?Action=cat&Locale=en_US&Scroogled...

Ъ: на чашках и кепках, которые выпускает и продает МС в своем магазине - логотип Хрома и надписи типа KEEP CALM WHILE WE STEAL YOUR DATA.

P.S. Ставим ставки на параноиков ЛОРа: кто первым поставит себе это в качестве аватарки? http://dri1.img.digitalrivercontent.net/Storefront/Company/msintl/images/Engl...

cdshines
()

лор, объясни мне

 , ,

Я иду по улице с линейкой длиной 2 метра и ценой деления 1мм. Смотрю - на стене кто-то написал «Ваня лох» и наприсовал квадрат. Я померял сторону квадрата, оказалось, что ее длина составляет ровно 1 метр (моя линейка измеряет невероятно точно, равно как и я снимаю показания). Я решил померять диагональ. Приложил линейку, но край диагонали оказался между двумя миллиметровыми черточками. На следующий день я пришел с линейкой с ценой деления 0,1мм. Все равно не вышло. Я так ходил-ходил и у меня ничего не получалось долгое время. Вопрос (здесь все уже поняли, что я хочу поговорить про иррациональные числа): если так дробить деления на линейке, то рано или поздно мы получим размер деления, сопоставимый, а затем и меньший, чем величины, с которыми имеет дело квантовая механика. У меня от этого когнитивный диссонанс. Я понимаю, что все логично - это же иррациональное число, в конце концов, но вот когда начинаешь представлять себе все это деление шкалы и оказывается, что _вообще_ не существует физической возможности хотя бы приблизиться к такому понятию, то прямо как-то неудобно становится.

P.S. drBatty, зная твою любовь к объяснению всем принципов деления на ноль с ИСПОЛЬЗОВАНИЕМ вот такого ЗАБОРА, вангую твое непременное участие в треде. Так вот, не пиши ЗДЕСЬ хотя бы В ТАКОМ стиле. И в «как бы», «хотя бы» не лепи дефис.

cdshines
()

Посоветуйте книжек по ...

 , ,

(можно просто какие-то курсы или маны разного рожа сложности и длины)

1. распределенным системам (общее: архитектура, best practices etc)

2. sql: основы для нуба, и чтоб потом про всякие транзакции и т. д. (транзакции - обязательно)

3. что-нибудь вроде effective java на ваш вкус.

Навскидку: sudo cast vertexua, stevejobs, maxcom.

cdshines
()

Как в Openbox сделать такое?

 ,

Сменил тут тормозное кде на openbox, все летает, все хорошо, только скучаю по таким действиям - когда таскаешь мышью окно и подтягиваешь к краям экрана, оно тайлится, а если к верхней кромке - максимизируется. Как сделать?

cdshines
()

ужу, get a life

cetjs2, зачем многим из нас приходят уведомления о тредах полугодовалой давности уже второй день? cetjs2, успокойся, пожалуйста, и без твоего энтузиазма все хорошо. Займись чем-нибудь приличным, cetjs2.

Да, такие теги нарочно.

cdshines
()

Как канонічно-функционально это пишется?

 ,

  def foo(thisSet: BitSet, thatSet: BitSet): BitSet = {
    var ts = thisSet
    while (!ts.isEmpty && ts.max >= thatSet.max) {
      ts = ts ^ thatSet.map(_ - thatSet.max + ts.max)
    }
    ts
  }

Я имею в виду не рекурсию (ну, с хвостовой оптимизацией можно, на крайняк), а flod/map/etc.

Если что - это я так в полиномиальном базисе собираюсь производить редукцию многочлена. Если есть менее костыльные способы, прошу их в студию. Про ОНБ знаю, это не считается.

cdshines
()

{пропаганда добра} {a monad is just a monoid in the category of endofunctors}

 , , , баззворды

Если кто-то пропустил, напоминаю на всякий случай, что на курсере начался курс по reactive programming, где вам расскажут такое. Ведут Одерский (Scala), Кан (Akka tech lead) и Мейер (до-диез, собственно reactive buzzword etc.). Нужно уметь писать на каком-угодно ФЯП, желательно на скале. Первая неделя вроде несложная.

P.S. Не прошло и полгода, как я узнал, что у идеи тоже есть worksheets для скалы :( :( :( а я-то все ручками :( :( :(

cdshines
()

Крикуны в advisory board :(

 ,

Все помнят эту Сару Шарп, которая пыталась качать права в лкмл? Кто-то ее выбрал в technical advisory board: http://lwn.net/Articles/571999/rss

Полный состав:

Elected to the TAB for a two year term at the National Museum of Scotland event were:

Greg KH <greg@kroah.com>

Thomas Gleixner <tglx@linutronix.de>

Jonathan Corbet <corbet@lwn.net>

Sarah Sharp <sarah.a.sharp@linux.intel.com>

Matthew Garrett <mjg59@srcf.ucam.org>

Вопрос: как?!

p.s. Запилите новость.

cdshines
()

Не превращаю лор в филиал stackoverflow, поэтому все под кат!

 , ,

Кто-то может высказаться по делу? http://stackoverflow.com/questions/19589002/how-can-i-keep-record-of-individu...

cdshines
()

Что, частота зависит еще и от объема?

 , ,

В общем, есть тут древний компьютер позапозапрошлого поколения, там было 2х256МБ памяти ддр-400 (т.е. 200МГц), но я в биосе ставил множитель fsb на 240 и процессор работал на 2ГГц вместо 1.6. А потом я купил две планки по 1ГБ, и множитель не поднимается. То есть при подъеме множителя не проходится post. Тайминги те же (CL3), ничего больше не трогал. Можно ли что-то покрутить?

cdshines
()

RSS подписка на новые темы