RR3

May. 25th, 2017 10:00 am
sab123: (Default)
Найдена польза от смартфонов: Real Racing 3 - очень впечатляющая игра. Какая графика достижима нынче на телефонах - это уму нерастяжимо. Ну, и реализм физической модели - тоже, но это требует поменьше вычислений. Руль очень хорошо имитируется поворотом телефона, единственная проблема - газ и тормоз нелья регулировать плавно, они только или нажаты или отжаты. Для тормоза это не страшно, а вот для газа несколько неудобно.

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

На интернетах нынче есть источники мудрости про все, для этой игры - rr3.wikia.com.

Из интересных новых познаний, я теперь понял, зачем в Наскаре нужны периодические желтые флаги. Фокус в том, что когда на нормальной дорожной трассе делаешь ошибку, то она продолжает действовать до торможения для следующего поворота. А на быстрых наскаровских овалах типа Дайтоны торможения нет, разгоняешься до максимальной скорости машины. Причем в конце этот разгон уже идет очень медленно, но даже небольшая разница в скорости продолжает терять время. Более того, максимальная скорость получается ощутимо выше в драфтинге, поэтому если откололся от других машин с подобной скоростью, то все, пиши пропало - тех, кто продолжает идти в драфтинге, уже не догнать. А желтые флаги служат как аналог поворотов в дорожных гонках - на них действие ошибки прекращается, все машины опять собираются в кучу, и можно начинать сначала.

Еще я ощутил, что значит "легкая" машина (как-то на настоящих машинах не ощущал). Нынешний дорожный Корвет или Феррари быстрее Феррари Формулы-1 образца 1950-х годов, но управляется очень по-другому: нынешние быстрые дорожные машины имеют большую инерцию, и как бы требуют поанирования заранее, а та Феррари очень верткая, быстро реагирует на повороты руля.
sab123: (Default)
Я нынче внезапно оказался Программистом На Джаве (tm). Это, видимо, самый ужасный язык программирования в мире, еще даже хуже Питона. C# - гораздо, гораздо лучше (кстати, если кто не знает, он нынче есть даже для Линуксов в виде Core .NET). C# - это немножко странноватый, но вполне человеческий язык программирования. Джава - гнездо какого-то прямо скажем альтернативного мышления, в плохом смысле этого слова. В ней мало того, что все раком, но оно раком специально, и они этим раком гордятся.

fake news

May. 1st, 2017 02:40 pm
sab123: (Default)
Нет, не про то, что вы подумали, а совершенно отдельное явление:

Я тут обнаружил, что похоже есть сайты, которые освежают старые скандальные новости на предсказуемо популярные свежие темы. То есть вот конкретно про запуск ракеты Space X, вверху поиска висела новость про взрыв их ракеты, датированная "час назад". С популярной свежей темой поисковики регулярно обновляют поиск и выкладывают свежие источники сверху. Недавно обновленная скандальная статья вызовет большой приток трафика.

DKIM

Mar. 11th, 2017 11:53 am
sab123: (Default)
Оказалось, что подписание емейлов через корпоративный ключ, публикуемый в DNS, о котором я говорил наверное в примерно 2002 году, было реализовано в Яхе в 2004 году и стало стандартом DKIM. Ну, оно конечно очевидно по своей сути. Но радует, что очевидная вещь все же оказалась реализованной.
sab123: (Default)
Узнал про сайт, в который тычешь C++ный код, а он показывает, во что ассмеблерное оно компилируется, и типа можно не возиться вручную с objdump:

https://godbolt.org/
sab123: (Default)
Попытался нынче установить Федорный Линукс. Почему-то у них нынче нет установочного ISO, а есть только ISO, который качает пакеты с интернетов. Он их уже часа два качает и дошел только до примерно 30%. Ну, не говоря уже о том, что такой подход к установке совершенно непригоден для долговременного использования.

А что нынче есть человеческого? Вот скажем Ubuntu-MATE? У него ISO полтора гига. Что все равно выглядит как-то маловато. Есть ли нынче человеческий Линукс с нормальным полным дистрибутивом?
sab123: (face)
А вот есть у нас нейросети и байесианские сети. В байесианских сетях последовательно соединяются несколько уровней байесианского вывода. Но ведь и в нейросетях каждый нейрон - байесианская машина, вычисляющая одну гипотезу. Вот это сложение входных сигналов умноженных на коэффициэнты - это байесианское умножение верояности гипотезы согласно имеющимся событиям, только выраженное через логарифмы. Нелинейная функция в конце нейрона - это решение о том, принимаем ли мы гипотезу истинной или ложной исходя из того, преодолела ли вероятность некий порог. Разница между двумя сетями получается только в том, что в байесианских сетях гипотезы выбираются вручную, а в нейросетях - автоматически, в процессе обучения (начиная от случайных, и далее через backpropagation). Спрашивается, почему их все еще различают как два отдельных типа сетей?
sab123: (face)
Оказывается, односительно недавно была придумана более внятная альтернатива для Paxos (кстати, Ousterhout - это создатель Tcl), Raft:

https://raft.github.io/

А в Апаче есть еще один альтернативный алгоритм:

http://zookeeper.apache.org/
sab123: (face)
Когда это помнится Микрософт хвалился, что в отличие от Гугеля не читает почту? Уже читает. На хотмейле к письму про резервирование билетов показали рекламу с билетами в том же направлении (и что особо занимательно, варианты на соседние аэропорты тоже, то есть оконечные пункты были слиты к рекламодателю для более интеллектуального анализа). Впрочем, цены в рекламе оказались враньем.

Из поисков агентов помимо пожравшей все экспедии: vayama.com - говно; какая-то найденная тоже на skyscanner.com шведская контора gotogate.com - может и не говно как таковое, но платежи туда не проходят (сегодня меня еще и разбудили автоматическими звонками про возможный fraud с обоих опробованных карточек), да и вообще они берут только Визу и Мастеркард, а про Амекс и Дискавер они не в курсе.

P.S. Через Ваяму таки нашлась скидка в примерно 10% цены. Но с геморроем. С другой стороны, конечно, в Экспедии и всем ей пожранном нынче тоже такой же индусский сервис.

MOS

Sep. 21st, 2016 06:22 pm
sab123: (face)
В IEEEшном журнале прочитал статью про историю создания первых микропроцессоров. Примерно в одно и то же время их сделали Intel и TI - TI сделал свой TMX 1795 на пару месяцев позже, зато восьмибитный. Но пристроить его к коммерции так и не удалось (кроме получения патентов). интересно, что Интелу и 4004 и 8008 достались как разработки под заказ, от которых заказчик потом продал права на дизайн обратно Интелу.

Теперь самая интересная часть: собственно упихать схему размера процессора на один кристалл получилось только по технологии МОП (MOS). Которую к около 1967-1970 году как раз удалось сделать по скорости не хуже биполярных транзисторов, но все еще компактную и с гораздо меньшим энергопотреблением. А вот в совке еще до 1990-х годов МОП считалась тормозной технологией, и все "настоящие" машины делались как минимум на биполярной ТТЛ. От так от отставание. Хотя я поискал, например К1801ВМ1 делался таки на МОП технологии. Так что сделать ТТЛьный однокристальный процессор и в совке тоже не сумели, только секционные.
sab123: (face)
Уже наверное пару лет тому назад мне захотелось, чтобы интерпретируемый язык программирования мог взять да сгенерить из куска кода синтаксическое дерево, чтобы это дерево можно было потом программно поковырять, и результат скомпилировать уже в исполняемый код. Оно нужно чтобы писать обобщенные темплейты, которые будут связывать данные программистом аргументы в виде кусков кода с генерируемой темплейтом обвязкой. Ну вот например sql queries можно так изобразить. Но до того, чтобы прям что-то на эту тему сделать, я так и не дошел. Я ограничился передачей кусков кода в виде текста и манипуляцией с этим текстом перед вставлением этих кусков в общий шаблон.

А тут опа, и оказалось, что в C# оно уже есть. Называется Expression Trees. Как я понимаю, является тоже результатом их опыта с впихиванием кусков SQL (LINQ).
sab123: (face)
с подачи http://juan-gandhi.livejournal.com/3651456.html

The most epic ones I remember were:

1. My application crashed by jumping to a random address when I connected more than 1000 clients. Eventually I've traced it to some bits in the return address on the stack of an OS authentication function getting flipped at random. Which happened because the function did the NIS authentication and used select() to control the sockets. I've built my code with the definition that supported up to 10240 bits in FD_SET but the system library was built with the default settings with only 1024 bits in FD_SET, and allocated the FD_SET variables on the stack. So when more than 1024 sockets were open, it got a socket at index over 1024 and select() corrupted the random bits on the stack. Hm, don't remember how I fixed it or if I fixed it at all. Maybe I've moved the authentication into a separate process.

2. The machines in a Veritas cluster committed suicide. The 2-node clusters are inherently unstable, trying to decide whether the other machine had failed or if the network got partitioned (in case of partitioning the master machine is supposed to continue and the slave machine is supposed to kill itself). The slave machine killed itself out of nowhere. It worked the worst when the master machine was getting stopped, so it would move the load to the slave machine, and that one would kill itself in the middle of fail-over. It took probably close to a year: they would send a dump, I would add more diagnostics and a potential fix, send them a patch, in a month or so they would have the problem reoccur and send another dump, I'll look at the diagnostics in it and do another iteration... Kind of spectacularly, I've solved the problem onsite: the customer wanted someone to be present and hold their hand while they have a service window and install the latest patch, and the support engineer had personal plans, so I went. This last patch contained the diagnostics to the point where it watched for the unusual timing between the events. So we've installed the patch, and it has turned out that once in a while the OS time just stopped for about 4 seconds. Which broke all the heartbeat algorithms. The weirdest part is that this timer bug was a known one, fixed in another edition of the OS but somehow it never occurred to them to port the fix to this one too. But while working on it , I think I've fixed a few genuine race conditions in the clustering code too :-)
sab123: (face)
Вот почему-то среди всяких этих Персональных Помощников с Искусственным Интеллектом популярна идея, что непременно надо голосовой интерфейс. Ну ладно, голосовое управление - еще туда-сюда в условиях когда нет доступа к более приличным средствам ввода. Но вот воспринимать информацию в голосовом виде ведь очень неудобно. В визуальном - гораздо проще и быстрее. Я вообще не могу представить себе, как в старые времена диктовали письма секретарше, не видя их текста. Я бы так не смог.
sab123: (face)
http://babkin-cep.blogspot.com/2016/06/adaboost-4-or-square-root-returns.html
http://babkin-cep.blogspot.com/2016/06/adaboost-5-square-root-and-confidence.html

Более внятно оознал, зачем и почему там возникают квадратные корни, как их можно употреблять в альтернативном варианте, и что там собственно минимизируется.
sab123: (face)
Я нынче прочухал, как АдаБуст выглядит с байесианской точки зрения:

http://babkin-cep.blogspot.com/2016/05/adaboost-3-and-bayesian-logic.html

Заодно и вроде прочухал принцип того, как работает бустинг вообще, изображенный на пальцах. Вот он, оттуда:

The premise of boosting is that we're able to find a number of methods (what they call "hypotheses" in AdaBoost) to predict the correct outcomes of the training cases, each method correctly predicting more than 50% of the training cases. Then if we collect a large-ish number of these methods, we can predict the correct outcomes of all the training cases simply by averaging the predictions of these methods. And the other cases will follow the training cases (unless an overfitting happens). Since more than 50% of the cases are correctly predicted by each method, after the averaging more than 50% of the votes for each training case will be correct, and thus the result will be correct too. Of course this depends on the correct predictions being distributed pretty evenly among the cases. If we have a thousand methods that predict correctly the same cases and incorrectly the other cases, obviously after averaging these other cases will still be predicted incorrectly. So the selection of methods must somehow shuffle the preference for the cases, so that the next picked method will predict well the cases that have been predicted poorly by the previous picked methods. That's it, that's the whole basic idea.
sab123: (face)
Догадался про связь между финальной формулой и весами, используемыми при ее получении:

http://babkin-cep.blogspot.com/2016/05/adaboost-in-simpler-formulas-2.html
sab123: (face)
Знаете ли вы, что правильный набор аргументов для виндовой команды xcopy, чтоб она работала более-менее по-человечески - "/e/h/y/i"? (Существует еще и более новая и умная команда robocopy, но до юниксных команд она тоже не дотягивает).

AdaBoost

Mar. 18th, 2016 02:06 pm
sab123: (face)
Читаю книжки про machine learning (как это по-русски?), нынче конкретно книжку про бустинг. Следить за изложением у меня получилось только после переписывания для себя главного алгоритма в более человеческой форме:

http://babkin-cep.blogspot.com/2016/03/adaboost-in-simpler-formulas.html

June 2017

S M T W T F S
    1 23
4567 89 10
11 12 1314151617
1819 2021222324
252627282930 

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 27th, 2017 02:00 pm
Powered by Dreamwidth Studios