TBBT

Nov. 14th, 2014 10:56 pm
crower: (Crower)
Девятая серия восьмого сезона. Шелдон подсчитывает вероятность смерти Леонарда… У него получается 1/300. Возникает смутное подозрение. Берусь проверять что там написано. В восторге. Ну ладно, посчитано грубо 40/100,000 × 1/365 = 1/910,000. Хотя делов-то было получить 912,500. Но от driving получено 8/1×10⁹×10×2 = 1/625,000 когда должно быть на порядок меньше. Кроме того вероятность от tension pneumotrax (1/3,500) в формулу не сведена, а 1/8,000 (pneumotrax) сведена дважды. Ну и, наконец, в итоге число должно получиться (даже при выписанных в формулу числах) раза в два больше (1/644). Если использовать более точный подсчёт, то хотя бы 1/478. :)
Интересно, они случайно так подставились или это такой намеренный прикол. И тогда вопрос - это троллинг зрителей или демонстрация Шелдовой небрежности/недобросовестности или даже намеренном желании преувеличить опасность. Впрочем, глядя как из 4/3,650,000 получают 1/910,000 склонен считать, что просто подсчёт там такой же ленивый делали. Произвольно.

PS. А какова корректность тех выкладок, которые изображались ранее и их я не проверял? ;)
crower: (Crower)
Раз четвёрый уже отключают.

PS. Хоббийная деформация? ;)
crower: (Crower)
Подсмотрено у @JRehling:

Fox: "Why did America waste money landing on a comet?"
Scientist: "This is a European mission."
Fox: "Why didn't America get there first?"
crower: (Crower)
С компа не вижу никакой рекламы, а с планшета - прёт всякая дрянь. Забавно, что через комповый веб-интерфейс в настройках нашёл возможности отключать тематическую рекламу, а на планшете, в андроидовом приложении ничего такого нет. Хотя ожидал, что экаунт-то и там, и там используется один и тот же и настройки должны быть общими. Получается - хрен. Более того, в андроидном приложении постоянно вываливаются в ленту старые твиты. Когда следил за посадкой Фил (#Philae, #CometLanding), очень раздражало появление всякой фигни, которая нафиг была не нужна.
crower: (Crower)
Я бы даже сказал, что интрига усугубляется: „В настоящее время мои приоритеты в прошлом, настоящем и будущем связаны с Ferrari…
crower: (Crower)
Классная интрига. Что может быть амбициознее, чем завести собственную команду? ;) Не-е-е! Не велогоночную, а F1!. ;)
crower: (Crower)
В результате перевода времени случилось два сюрприза.

  1. На одном компе (древний трастикс) время таки не перешло. Стал выяснять - обнаружил, что на нём /etc/localtime был не прилинкован, а скопирован. В результате новая информация в свежеоткомпилированном файле в /usr/share/zoneinfo не вошла в актуальный режим. Это я забегавшись между серваками, на которых всё чин-по-чину линками сделано, не обратил на это внимание. А с прошлой правки времени не вспомнил.

  2. Крутится на одном проприетарном серваке древний скрипт на php. Занимается утрамбовкой станционных данных. В исходном виде 200-350 мег, жмётся на порядок. Места на серваке не много, так что такое решение освобождает очень ценное пространство. Можно раз в год удалять устаревшую инфу, а не раз в месяц. Так вот на серваке время перевелось правильно. А внутри скрипта, который находится в бесконечном цикле время бежало по старой схеме. Стало быть и часы, и правила перевода времени у php-ового скрипта внутри задачи свои.

crower: (Crower)
Сидел давеча за кодом монитора станционных сообщений. Ничего особо сложного, но код отяжелён стремлением сделать его универсальным. Два режима, несколько параметров в разном сочетании. На основе этих данных формируется sql-запрос, запрашиваются данные и полученные отображаются. Засада в том, что с какого-то момента стал нещадно тормозить. Если дать sql-запрос компактненько, с указание всех интересующих критериев, то суточная сводка выдаётcя менее чем за секунду. Добавив "вкусную" таблицу получаю не более полутора секунд. В скрипте-же, с его универсально построенным запросом получается, блин, пол-минуты... Вот за что такое наказание? ;)

Вспомнил старую систему. Много лет назад (лет, наверно, 15) был у нас слабенький (по теперешним меркам) сервак на шапке. Крутился там интербейз. В базах я тогда практически не шарил. И в вебе тоже. В общем, только-только разбирался как это хозяйство работает. И в частности строил интерфейс. В базу загружались данные станционной статистики. Приятель, для того чтобы отображать интербейзовские данные на веб, наваял програмку-гейт, которой скармливались html-заготовки, в которых специальный тег заменялся на результат запроса. Эдакий cgi/ssi в одном лице. Это позже уже были и php, и perl, а тогда это всё было в новинку. В общем то, что сейчас сделано на одной странце одним скриптом (толстым, конечно), тогда выглядело как несколько каталогов с парой сотней html-шаблонов и приблизительно столько же sql-шаблонов. Блин! И ведь это работало! Да ещё как! А интерактив? Понятно что если что-то в базе существенно менялось, то приходилось править во многих шаблонах. Но зато это как-то просто получалось. А сейчас гляжу и начинает доходить, что вместо прокариотно-подобного кода ранее получил теперь эукариотно-подобный. Например, с кучей альтернативного сплайсинга. Поэтому приходится снимать показания в промежуточных точках и смотреть что за запрос получается. Но беда ещё в том, что режимы эти могут оказаться несовместимыми... Не вернуться ли к старой методике? ;)
crower: (Crower)
Воодушевился прочитанным недавно "Перестаньте называть себя программистом". Вспомнил упавшее в почтовый ящик оповещение от корпоративного спамогенератора про то, что отныне заявки на внесение изменений в корпоратиную ЕСЭД будут рассматриваться придирчиво и не все будут выполнятся. Понятно что эффект от изменения может быть мизерным, а затраты - существенными.

А тут в очередной раз падает очередной спам от него мол тогда-то в такое-то время не будет работать (час) система самообслуживания. Полезная, конечно, штука.... Только будет это ночью, когда бодрствовать будут только единицы в ночные смены. А оповещение разослано всем.
Вопрос: а кто-нибудь посчитал, сколько затрачено усилий получается скрытых издержек за счёт того, что десятки тысяч (а может пара сотен тысяч?) работников должны отвлечься на этот спам чтобы хотя бы просто проверить что это за письмо пришло?
Такая технология сильно мне напоминает трупотурбовижин. Где он теперь. В нем тоже эвенты обходили всех подряд, чтобы обнаружить кому они нужны.
Думаете это только в централизованной рассылке такая хрень используется. Фигушки. У нас зачастую начальники вместо того чтобы выдать распоряжение по назначению, рассылают его всем своим подчинённым: пусть разбираются кому это надо. И помог этому прогресс: электронное письмо легче разослать всем, чем думать. Сделать такую-же пачку хардкопи сложнее и потому легче было подумать...

Так что любая оптимизация способствует том, что высвободившиеся ресурсы пожрёт бюрократия.
crower: (Crower)
Иду себе на работу, никого не трогаю. Краем глаза замечаю рекламный щит со слоганом, на который набрасывается моя любовь к играм физики открытых систем. Фишка такая, что берём какую-нибудь фразу, редуцируем её и любуемся новым смыслом, который иногда совсем-совсем другой, нежели был изначально. Ну для примера обычно привожу строку из песни: "Когда умолкнут все песни…". Откусываем последнее слово и получаем: "Когда умолкнут все". Согласитесь - метаморфоза довольно занятная. Хотя, конечно, в данном случае мы наблюдаем простое расширение определяемого сказуемым множества с множества "всех песен" на множество "всех". Но при этом подсознание услужливо подсовывает новый контекст. У меня абстрактное сказуемое "все" в данном контексте означает всех людей. Если покопаться, можно уточнить, что, скорее всего, имеются ввиду все говорящие (или поющие) люди. Впрочем, может означать и только поющих. ;) Т.е. когда все допоют, что с другой стороны синонимично изначальному смыслу, выраженному в метафоричной форме. Что по себе тоже очень занятно. Либо, в зависимости от обстоятельств, может включать и сейчас молчащих, но могущих заговорить, а значит перманентное умолкание. Вот такое получается доморощенное исследование контекстной зависимости и физики отрытых систем. :)

Но вернёмся к слогану. Из прочитанного "время может меняться" получаю "время может", медитирую на нём и понимаю, что это ещё лучший слоган, ибо открытый контекст заставляет каждого из ЦА адаптировать его (слоган) под собственный контекст, а значит "цеплять" он должен большую ЦА... Оборачиваюсь на плакат, читаю и не врубаюсь. Там написано "время меняться". Начинаю возмущаться что "время может" круче чем "время меняется", тем более что в "меняться" несогласованно со «временем». Думаю: "Ошибка что ли?", но в первую очередь думаю что так и задумано. Пытаюсь понять какой тогда хотели передать смысл и тут до меня доходит, что прочитанное мной предложение является на самом деле не сказуемым-подлежащим, а обстоятельством времени. То есть написано всё верно и смысл очень узкий и тривиальный. Расстроенный такой неинтересной рекламой пошёл дальше и стал размышлять над тем как подсознание надо мной прикололось, сначала подсунув то, чего в слогане не было, а потом мешая переключиться на верный смысл "времени". :)
crower: (Crower)
И что? Что Даня сможет выжать их машины, если она не едет? Что смог Феттель? А ведь он четырёхкратный чемпион. В принципе, да: он может быть и слабее, например, тех-же Льюса и Нандо, но на отличной машине делал всех. Что, может быть, подтвердил Риккьярдо, поехав лучше его. Но я бы так категоричен не был. Есть много нюансов. Но и Даниэль не смог серьёзно потягаться с Мерседесами. Хотя, конечно, три первых места - это тебе не хухры-мухры. Ну, да, Лотусы должны подтянуть двигатели. Хм. Если РБ не сменят их. А если сменят, то придётся адаптировать и, наверно, весьма серьёзно переделывать многое. Но самое главное - сможет ли РБ держать такую же высокую планку в отсутствии Ньюи? Вот чуть ли не самый главный вопрос. На отличной машине посредственный пилот вполне может сделать очень многое. А вот на посредственной машине даже отличный пилот вряд ли что сможет сделать. Достаточно посмотреть на Феррари. И, кстати, зря, на мой взгляд, они отказываются от услуг Алонсо. Впрочем, может они не в состоянии сделать машину ему, но смогут сделать для его сменщика? Но ведь и Кими не может ничего сделать? Выходит не в пилоте дело.

Исходя из вышеизложенного на следующий год не ожидаю чуда. Хотя, конечно, на подиумы рассчитываю. Может не с первых гонок - надо всё-таки теперь к новой машине приловчиться. Если её в отсутствие Ньюи не испортят. Но в первой-то пятёрке, надеюсь, должно быть среденестатистическое место.
crower: (Crower)
в корпорации, которой правят самодуры - самодурская.

Навеяно постом.

Можно было бы заявить что в корпорации, где правит бюрократия, корпоративная этика - бюрократическая. Но интересно когда и как она из бюрократической превращается в людоедскую. Может имеет смысл рассмотреть эдакую смену «биоценозов»?
crower: (Crower)
Увы. Не стал "каркать", но каркай-не-каркай, а если машина слаба, то подниматься выше "своего места" Квяту (и Верню) позволяют только разнообразные случайности. Когда ещё Петров в эфире высказался за четвёртое Данино место, подумал: "Да, было бы не плохо, но он скорее высказал желаемое". Трасса оказалась слишком быстрой и не сильно наказывала за ошибки. В результате всё утрамбовалось "как положено" и даже Жан-Эрик оказался непосредственно впереди Дани. Единственно что ласкало глаз - как на последних кругах Даня нагонял Льюиса. Да, на свежей резине уже изношенную, но всё-таки это был Мерседес! К сожалению, времени не хватило, а было бы здорово, если бы ему удалось вернуться в круг. Вроде бы ерунда, но обогнать Хэмилтона - это был бы приятный символ.
crower: (Crower)
С тоской глядя на то как медленно загружаются страницы всяких яндексовых, гуглёвых и мейлрушных почт подумалось, что в этом деле информация по запросу и тонкие клиенты сменились по сути софтом-по-запросу.
Ну, да, избалован. :)
5-6 секунд для яндексовой и мейлрушной. А яндексовое расширение для андроида после предыдущего обновления стало тоже долго грузиться и только секунд через пять отображается с фиксированной ориентацией.
18-23 секунд для гуглёвой почты - это вообще прикол. Как операционку с SSD. ;-)
crower: (Crower)
В продолжение реабилитации кактуса попытался всё-таки подсунуть правильные счётчики.

Корковые по дескриптору, как и говорил, прицепились без проблем.

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

Попробовал ещё раз, при этом внимательно разглядывая логи и экпериментально пытаясь понять где можно подкрутить чего.

И "о чудо!" - всё заработало.

Результат.

1. Так и не уловил откуда берутся дескрипторы. Перешерстил liblmsensors, snmp - пусто. Нигде не нашёл "CPU Temperature". Может в ядре? ;)
2. Если задать в кактусе Data Sources по имени, то он сам ресолвит номер сенсора и опрашивает счётчики по полученному номеру.
3. Поскольку в этот раз он по дескриптору выбрал первый (и правильный) счётчик, то лезть в исходники не понадобилось. Может потом как-нибудь, если заглючит.

Итого, пара вопросов остались не раскрыты. Но сейчас времени нет - ковыряю обновление реестра по приходу нового реестра. Давно была мысль такую штуку построить, когда нужно было вести актуальный реестр, закрывая устаревшие объекты, добавляя новые и апдейтя обновлённые. А тут попалась под руку национальный план нумерации и принялся кодировать эту задачу.
Наивняк. :)
Не то что бы это была супер сложная задача. Простая, в общем-то и нетрудная. Но требует очень высокой сосредоточенности при построении алгоритма. Одно дело обновлять объекты, которые суть точечные, а совсем другое - диапазоны, т.е. линейные объекты, которые нужно проверять на пересечения.
А правила при пересечении могут быть тоже разные. Может считаться что новый источник приоритетнее и просто закрывать перекрыващиеся. Но выцепить их не очень просто. Много критериев, которые нужно все держать в голове и поэтому легко что-нибудь упустить или запутаться. Сделал сначала пару индексируемых массивов, по которым и гулял. Всё бы хорошо, но где-то промахнулся и забыл сменить принцип закрытия (по уиду заменил на индекс) и в результате стал оживлять сплайснутые элементы массива. Пока искал где я из оживляю, и думать как избежать оного, пришла в голову мысль, а нахрена я использую индексный подход? Тут же в чистом виде получается стек. Собственно сам стек - это массив, который сортирую (из файла) или получаю (из базы) сразу сортированным. Но дальше индекс на элементы нафиг не нужет.
Сказано - сделано.
В итоге алгоритм существенно упростился, стал более наглядным и работает более эффективно. И кстати, без глюков.
На счёт того, что я учёл все состояния и правильно обрабатываю их - не уверен. В реальных данных этого может не оказаться. Поэтому придётся генерировать тестовые наборы и на них проверять корректность алгоритма.
В итоге прога работает довольно шустро, генерит офигительный sql-скрипт и скармливает в базу. И вот тут-то получаются сущие тормоза. Исходный реестр содержит чертверть миллиона записей, трамбующий алгоритм склеивает смежные однотипные записи ужимая реесть процентов на десяток, а трамбущий скрипт получается на 29 тысяч апдейтов (закрывающих обновлённые записи), и на 8.3 тысячи из длинног инсерта. Дольше всего выполняются апдейты. Их бы пооптимизировать надо. Чтобы сразу пачками... О, есть мысль... Пошёл делать...
crower: (Crower)
Описанная ранее проблема повторилась. Но на этот раз я был готов и теперь готов предъявить улики. Перед сегодняшним рестартом (после обновления) было:
iso.3.6.1.4.1.2021.13.16.2.1.2.1 = STRING: "Core0 Temp"
iso.3.6.1.4.1.2021.13.16.2.1.2.2 = STRING: "Core1 Temp"
iso.3.6.1.4.1.2021.13.16.2.1.2.3 = STRING: "CPU Temperature"
iso.3.6.1.4.1.2021.13.16.2.1.2.4 = STRING: "CPU Temperature"
iso.3.6.1.4.1.2021.13.16.2.1.2.5 = STRING: "CPU Temperature"
iso.3.6.1.4.1.2021.13.16.2.1.2.6 = STRING: "MB Temperature"
iso.3.6.1.4.1.2021.13.16.2.1.2.7 = STRING: "MB Temperature"
iso.3.6.1.4.1.2021.13.16.2.1.2.8 = STRING: "MB Temperature"

А стало:
iso.3.6.1.4.1.2021.13.16.2.1.2.1 = STRING: "CPU Temperature"
iso.3.6.1.4.1.2021.13.16.2.1.2.2 = STRING: "CPU Temperature"
iso.3.6.1.4.1.2021.13.16.2.1.2.3 = STRING: "CPU Temperature"
iso.3.6.1.4.1.2021.13.16.2.1.2.4 = STRING: "MB Temperature"
iso.3.6.1.4.1.2021.13.16.2.1.2.5 = STRING: "MB Temperature"
iso.3.6.1.4.1.2021.13.16.2.1.2.6 = STRING: "MB Temperature"
iso.3.6.1.4.1.2021.13.16.2.1.2.7 = STRING: "Core0 Temp"
iso.3.6.1.4.1.2021.13.16.2.1.2.8 = STRING: "Core1 Temp"


Таким образом кактус не виноват. Как я уже писал, из-за одинаковости дескрипторов счётчиков невозможно гарантировать правильность выдёргивания нужных. Кстати, ставил эксперимент: в кактусе оказывался последний счётчик, что в случае с "CPU Temperature" и "MB Temperature" бессмысленно. Вот c "Core0 Temp" и "Core0 Temp" это сработает, а процовая и мамкина температура будут постоянно уползать.
Теперь нужно либо найти где определяется порядок счётчиков и обеспечить их фиксированную позицию, или сделать уникальные дескрипторы и отлавливать счётчики по ним.
crower: (Crower)
В свете прочитанной уже части Кунина положительный отбор является второстепенным фактором, если не сказать, что он практически никакой роли не играет... Хе-хе. :) Делаем выводы.

Впрочем, весьма усложнившаяся и навороченная теория обрисовывает некоторые новые нюансы. Многие вещи являются следствием особенностей "биохимической вселенной". У киберморфов это может как не играть никакой роли, так и не позволять двигаться эволюции, ибо необходимых механизмов, которые присутствуют в молекулярной биологии, но не воспринимаются неотъемлемой частью, в киберморфовой вселенной отсутствуют.
crower: (Crower)
Как можно было бы избежать аварии?
Можно написать длинную портянку размышлений «почему». Но это будет длинно, занудно, запутано и...

В общем, что бы стоило рассмотреть:

1. На аварийном участке жёстко ограничивать скорость движения.
2. При аварии загонять машины на питлейн. Красные флаги? Может рестарт без сейфтикара, но на ходу? Первый круг для разогрева (с ограничением максимальной скорости?), и с ходу в бой?
3. Краны как в Монако вместо тракторов?
4. Регламентировать выход из разбитой машины?
crower: (Crower)
Идиотизмы, проявляющиеся в конторе в последнее время, и читаемая в настоящее время "Логика Случая" (после Маркова/Наймарк и Казанцевой) помогают взглянуть на происходящее с новой точки зрения.

Read more... )

Profile

crower: (Default)
crower

February 2018

S M T W T F S
    123
45678910
11121314151617
181920212223 24
25262728   

Syndicate

RSS Atom

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 28th, 2026 06:24 am
Powered by Dreamwidth Studios