Category: it

Category was added automatically. Read all entries about "it".

general

но черт возьми, как?

Интересно, а как удалось всё это положить так надолго?

Люди что-то пишут про DNS, но я человек тёмный и мне это о многом не говорит. Ну я понимаю там, слетела бы у них какая хитрая база, или какие-то бы там стойки серверов или свичей выгорели и резервирования внезапно не нашлось, но вот так просто DNS?
Положить всю эту хрень, которую обслуживают сотни инженеров НА ЧАСЫ?

А может, Цукер раскаялся за грехи свои многочисленные и просто дёрнул рубильник, а?
Crosspost: dreamwidth.org
general

(no subject)

Что мне нравится в программировании - это когда пишешь код, потом его слегка (или не слегка) доводишь, и вдруг появляется ощущение, что понимаешь как именно надо писать этот кусок, чтобы получилось идеально, ну или максимально идеально в объеме моих сил. И дописываешь именно так. Как будто формулу какую выводишь, только попроще. Или собираешь разобранный механизм, и вдруг опа - собрался как надо!

В мультитреде, пожалуй, это было чаще всего. Там, если не собрать как надо и математически точно, то и работать будет неправильно, скорее всего.
Crosspost: dreamwidth.org
general

VTune - полное удовлетворение

Профайлер VTune - забавная зверушка.

Обычный код он профалит сэмплингом. Уж не знаю, как они ставят эти хардверный прерывания, но результат - вроде бы очень надёжный, так как скорость работы кода и относительное время работы тех или иных участков кода сильно меняться не должно. Ну, майкрософт так тоже уже умеет, тут сегодня удивлять нечем.

Но в довесок они инструментируют некоторые Win API, в результате они нормально репортят и ожидание на всяких I/O операциях, мютексах итд.

Т.е. в раскладке можно увидеть вообще всё разбитое по категориям - сколько CPU времени потрачено (даже каким-то образом они профайлят спин-локи), и сколько времени портрачено на ожидание без задействования CPU.

Результаты выглядят ну очень аппетитно, это при том, что использую я этот профайлер для довольно мелких задач, а не для высокопроизводительного multicore сервера, где у VTune, видимо, есть множество дополнительных ништяков.

Ещё бы интересно выяснить, умеют ли они ещё и репортить время, которое готовые к исполнению треды были вытеснены. Т.е. некоторая метрика, означающая "если вы добавите ещё столько же коров, то у вас всё офигительно ускорится". В принципе, наверное, это не очень существенно, приличные девелоперы не должны создавать такую дичь, как большое количество лишних тредов, потребляющих CPU, тут сам факт наличия излишка интенсивно работающих тредов должен настораживать.

Но всё ж интересно посмотреть, как они с этим моментом разбираются. Вот, скажем, если 50 тредов сядет в wait, сколько времени wait зарепортится - по количеству тредов, по количеству коров, или как-то ещё? А если 50 тредов начнут жрать CPU? Вот и поглядим, как они сделали эту бухгалтерию, мне чисто интересно.

(Боже, как же давно я не писал настоящего мультитреда...)
Crosspost: dreamwidth.org
general

мелководье программирования

Послать сообщение нескольким подписчикам. Что можеть быть проще?

А вот если докопаться до деталей, то:

1. Сообщение генерим только найдя первого подписчика (не генерим, если подписчиков нет)
2. При посылке сообщения последнему подписчику, используем (если в этом есть смысл) разрушающие функции посылки, поскольку сообщение нам больше не нужно.

Всё это, конечно, морально устарело лет на 40, но забавно.
Crosspost: dreamwidth.org
general

(no subject)

Внезапно, проблема. Не пойму как решить в Win32.

Скажем, есть несколько сотен открытых файлов в которые пишут сторонние процессы.
Надо открыть эти файлы для чтения и реагировать на добавления новых байтов в конец этих файлов.

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

На linux, возможно, поможет select, впрочем, это ещё надо посмотреть, что будет, если его вызывать для файла, текущая позиция которого совпадает с концом файла. Возможно, select не будет ждать апдейта файла, а вернётся сразу...

По простому говоря, надо открыть файл так, как сокет или пайп, чтобы пока в него что-то не дописали, с другой стороны можно было просто ждать, без лишней траты процессорного времени. Crossspost: dreamwidth.org
general

(no subject)

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

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

Опомнился я довольно поздно, но силёнок, повода и желания учить что-то типа java/C# как-то не нашлось, хоть и пытался. Может это и к лучшему, вряд ли я смог бы тогда найти что-то столь же интересное, как то, чем я занимался на С++, но даже и та ж любимая мной синхронизация, даже и неблокирующие синхронизации, на java/C# писались бы тогда куда как веселее, чем на С++ под Виндами. Всё же потратил какое-то время на знакомство с Хасклем (до уровня junior-programmer, пожалуй, всё ж не дотянул, но идей поднабрался и даже раза три выучил и раза три забыл, что такое монады).

Это я всё к тому, что недавно попробовал кой-что настрогать на Питоне (опять же стыдоба, не владеть хоть одним скриптовым языком нормально - я то, что мне надо, всегда писал на С++).

Поначалу впечатления самые приятные. Пишется легко, проблемы решаются элементарно гуглём, бежит сходу, проблемы чинятся элементарно. Через недельку вроде раскочегарился, стал писать всякие generator comprehension и в пару строк закрывать то, на что уходили до этого строк 10. Ну, конечно, это опять же уровень около джуниора, так как в два раза ужать весь свой код я вряд ли бы смог и в целом он был такой... без полёта фантазии и идейных наворотов.

А потом... потом наступило отрезвление, поскольку к моменту, когда программа наконец задышала, изрядно обросла фичами и даже оформилась во что-то вменяемое и легко читаемое, оказалось вдруг, что любое к ней ошибочное добавление потенциально её ломает и эта поломка в 50% случаев видна лишь в рантайме. Да, всё это по прежднему легко отлаживается в дебаггере, но вот, знаете ли, в некий момент, когда сам прогон начал занимать минут 10, мне это как-то надоело. Конечно, кто-то скажет, мол а где ж твои Unit-тесты, test-driven итд итп. Ну да, ну да. Но в языках со статическим типированием и с компиляцией подавляющая часть этих ошибок просто бы не случилась. А об одном годе, когда от меня требовали писать юнит-тесты, я вспоминаю с ужасом и слезами. И отнюдь не потому именно, что не могу и не умею их легко и хорошо писать, а потому, что под эти тесты приходилось прогибать весь девелопмент, и они вдруг начинали определять и (абсолютной порой безумный) дизайн классов, и даже возможность или невозможность добавить те или иные фичи и способ их добавления (скажем, соверешенно невинное и безопасное изменение интерфейса классов приводило к жуткому и абсолютно неадкватному перерасходу времени на переписывание тестов).

Короче, нахрен этот Пайтон. Следующий скрипт буду лабать на Скале или на Хаскеле, вот! Crossspost: dreamwidth.org
general

(no subject)

Выходит второе издание довольно сильной книги, с добавившимися авторами

"The Art of Multiprocessor Programming"
Maurice Herlihy, Nir Shavit, Victor Luchangco, Michael Spear

https://www.amazon.ca/Art-Multiprocessor-Programming-Maurice-Herlihy/dp/0124159508

В основном они там занимаются неблокирующими синхронизациями, что очень круто и интересно, но мало соответствует практическим реалиям промышленного программирования и имеет немалый риск написания ошибочного кода. Crossspost: dreamwidth.org
general

(no subject)

https://phys.org/news/2014-10-function-electron.amp

https://link.springer.com/article/10.1007/s10909-014-1224-3

Странная статья 5-летней давности с революционными выводами.
Авторы считают, что наблюдали действие, оказываемое "кусками" волновой функции электрона на жидкий гелий. Имхо, в нормальный фреймворк QM это не вписывается, независимо от интерпретации.

Crosspost: dreamwidth.org
general

Ещё и далее

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

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

Наверное, ошибка тут - подходить к вопросу "по джентельменски", т.е. снисходительно позволять женщинам делать то, что сам для себя или других мужчин считал бы поступком гадким и подлым. Ну хорошо, допустим не по джентельменски (джентельмен из меня, прям скажем, сомнительный), допустим, чисто в рамках равенства прав, сделаем также и мужские клубы по тем или иным интересам, вот скажем по тому ж Data Science. Суровые мужские клубы, чтоб не отвлекаться на девушек (а заодно и на несколько своеобразный образ мышления некоторых из них и на всякую прочую оффтопную пургу типа "женщины в науке", "угнетение женщин в науке", так актуальную в последнее время). И опять же, если женщины считают, что им как-то некомфортно с мужчинами дискутировать на программистско-математические темы, то кто я такой, чтоб иметь по этому поводу какое-то ещё мнение и решать за них, как им следует эту проблему решать вместо того, чтобы просто позволить им собираться так как они хотят, т.е. в ожидаемом комфорте?

Забавным образом идёт прогресс. Сначала угнетаемые и меньшинства требуют равенства и доступа туда, куда доступ им ранее был заказан. Ну а на следующем этапе им, внезапно, оказывается нужно уже и право на сегрегацию, в котором они раньше господствующей группе отказали.

Crosspost: dreamwidth.org