?

Log in

No account? Create an account

[sticky post] Верхний пост

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

Обо мнеCollapse )
Мои публикации на хабре/ГТCollapse )
Правила блога:
1. Без политики.
2. В этом блоге обращаются на "ты". Но вежливо и без фамильярности.
3. Троллей баню сразу.
4. Часть постов представляет собой краткие описания разных технических проектов и их частей. Подробные описания будут видны только френдам. К сожалению, в наше время иначе нельзя, вежливых и вообще разумных людей остаётся всё меньше и меньше.

Всегда рад новым френдам и комментариям от старых!
Извиняюсь, — перебил его Швондер, — вот именно по поводу тестировщика и дизайнера мы и пришли поговорить. Руководство компании просит вас добровольно, в порядке трудовой дисциплины, отказаться от тестировщика. Тестировщиков нет ни у кого в Москве.



— Даже у ВКонтакте, — звонко взвизгнула женщина.
Read more...Collapse )

Tags:

Стартапы

Прочитал вот этот текст от создателя стартапа "Бесконечная флешка": http://flashsafe.ru/.

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



Краткий пересказ, кому лень читатьCollapse )

Но наш стартапер не унывает, Россия велика, лохов много, что-нибудь ещё замутит.

Я тоже знал пару стартаперов, и с одним из них даже немного поработал. Но там я сразу жёстко поставил условие: оплата налом, помесячно. Никакой "работы на результат", никакого "вот сделаем и раскрутимся, тогда заживём". Только нал, только за время.

Но даже на этих условиях я затрахался, мягко говоря. Стартаперы непрерывно говорят, у них фонтан вообще не затыкается никогда. Они могут три часа обсуждать то, что мне ясно как б-жий день за пять минут. Они фонтанируют идеями, и каждая идея ведёт к переделкам проекта. И здесь я сделал другую правильную вещь: я потребовал, что вся работа будет только на основании письменного ТЗ. В результате за год работы было выпущено шесть вариантов ТЗ, и они хотели опять переделать всё с нуля, когда я сказал "с меня довольно", и расстался с ними. Был даже заказчик с деньгами, он терпеливо ждал два месяца, пока я переделывал проект под очередные безумные хотелки стартаперов, и на протяжении этого времени у них возникали всё новые и новые гениальные идеи, что работу не ускоряло. В результате клиент ушёл в закат, естественно.

Весь этот праздник жизни был за счёт инвесторов, и все эти переделки, и офис в БЦ, и маки, на которых эти ребята писали бэкенд, всё. Где-то через полгода инвесторы вызвали директора-стартапера и поставили ему ультиматум: либо ты выдаёшь результат, либо давай досвиданья. Но он не растерялся, и быстренько перепродал стартап другим инвесторам, на этот раз средних размеров компании, имеющей своё производство, что должно было помочь. И всё продолжилось по новой: трёхчасовые обсуждения, гениальные идеи каждый день, бесконечные переделки всего по кругу и т.п.

Были и другие стартаперы, с которыми я разговаривал, но они обычно отваливаются сразу после слов "оплата помесячно" и "техзадание". Техзадания они вообще ненавидят, любые бумаги мешают полёту стартаперской мысли, душат софтскиллы, нетворкинг и тимбилдинг. К тому же они хотят заражать всех энтузиазмом, чтобы сотрудники работали по 16 часов и без выходных, и не думали о такой низменной вещи, как деньги. Сами же деньги очень любят, также любят айфоны, макбуки, офисы в БЦ, и т.п.

Короче, встретите стартапера, гоните его прочь.
Батя рассказывал, что в СССР не было фейсбука. Чтобы попасть на фейсбук, нужно было за полгода подать заявление в КГБ, и если очень повезёт, запускали в небольшую тёмную комнату и давали посмотреть в узкий глазок ровно три минуты. А пока ты стоял в наклоне и смотрел в эту щель, за твоей спиной стоял чекист и мерзко так хихикал.

Вместо фейсбука в СССР пользовались старым ВК-47 ижевского производства, работал как часы, чинился ударом ноги, только счетчик лайков на стене постоянно отваливался.
Read more...Collapse )

Tags:

Меняется ли ассеблерный код, если вы напишете не (a + b), а (b + a)?

Давайте проверим.

Напишем такой код:

__int128 add1(__int128 a, __int128 b) {
    return b + a;
}


и скомпилируем:

add1(__int128, __int128):
.LFB0:
  .cfi_startproc
  add a0,a2,a0
  sltu a2,a0,a2
  add a1,a3,a1
  add a1,a2,a1
  ret


А теперь такой код:

__int128 add1(__int128 a, __int128 b) {
    return a + b;
}


Получаем:

add1(__int128, __int128):
.LFB0:
  .cfi_startproc
  mv a5,a0
  add a0,a0,a2
  sltu a5,a0,a5
  add a1,a1,a3
  add a1,a5,a1
  ret


Как говорится, найди отличия.

Это был risc-v gcc 8.2.0

Теперь clang (rv64gc trunk). В обоих случаях получаем одинаковый результат:

add1(__int128, __int128): # @add1(__int128, __int128)
  add a1, a1, a3
  add a0, a0, a2
  sltu a2, a0, a2
  add a1, a1, a2
  ret


Результат похож на то, что сгенерировал gcc в первом случае. Вывод: компиляторы сейчас умные, но не все и не всегда.

Давайте попробуем понять, что здесь происходит и почему. Аргументы функции __int128 add1(__int128 a, __int128 b) передаются в регистрах a0, a1, a2, a3, в следующей последовательности: a0 - младшее слово операнда a, a1 - старшее слово операнда a, a2 - младшее слово операнда b, a3 - старшее слово операнда b. Возврат результата - в той же последовательности: a0 - младшее слово, a1 - старшее слово.

Далее мы складываем старшие слова операндов и помещаем результат в a1, и младшие слова, помещая результат в a0. Далее мы сравниваем результат с a2, т.е. с младшим словом операнда b. Это делается для того, чтобы выяснить, был ли перенос при сложении. Если перенос имел место, то результат сложения будет меньше любого операнда. Так как операнда в a0 уже нет, мы используем для сравнения a2. Если a0 < a2, то перенос был, и в a2 записывается 1, иначе 0. Далее прибавляем перенос к старшему слову результата и получаем окончательный результат в (a1, a0).

Здесь можно увидеть небольшую возможность для оптимизации микроархитектуры ядра. Согласно стандарту, микроархитектура может (необязательно) детектировать пары команд (MULH[[S]U] rdh, rs1, rs2; MUL rdl, rs1, rs2) и (DIV[U] rdq, rs1, rs2; REM[U] rdr, rs1, rs2), и обрабатывать эти пары как одну команду. Аналогично можно детектировать пару (add rdl, rs1, rs2; sltu rdh, rdl, rs1/rs2) и сразу производить запись разряда переноса в rdh.

Полностью аналогичный код формируется clang-ом (rv32gc trunk) для 32-битного ядра, если в функции используются 64-битные аргументы и результат:

long long add1(long long a, long long b) {
    return a + b;
}


Ассемблер:

add1(long long, long long): # @add1(long long, long long)
  add a1, a1, a3
  add a0, a0, a2
  sltu a2, a0, a2
  add a1, a1, a2
  ret


Всё абсолютно аналогично. К сожалению, компилятор для 32-битного ядра не поддерживает типа __int128, а жаль.

Но это ещё не вся история...
Пост на хабре: https://habr.com/ru/post/454226/



Плюсуйте и пишите комменты, там или здесь (можно и там, и здесь, конечно).

Это, кстати, 50-я публикация на хабре. Своего рода юбилей.

Стол

Моё скромное место для всяких поделок и хобби. Кликабельно.

О паяльнике TS-100

Некоторое время назад я купил на али паяльник TS-100, про который было очень много хайпа в интернетах. Но только сейчас у меня "дошли руки" его включить и опробовать.

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

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

Главный недостаток паяльника в том, что он продаётся без источника питания, в коробке находится только сама ручка.

(Все картинки кликабельны)
1.


Сам паяльник

Read more...Collapse )
Прочитал книгу выдающегося российского математика В. И. Арнольда "Что такое математика", в которой он много рассуждает о математике, математиках, и о современном положении дел в науке и образовании.



Автор книги известен не только научными результатами, а также тем, что ещё в СССР он организовывал математические кружки и школы для одарённых детей и очень много сделал для развития математического образования. Правда, из этих школ по негласному распоряжению Садовничего (который сейчас ректор МГУ, а тогда был декан мехмата) не брали в МГУ, потому что якобы в этих кружках "неправильно" учили, и этих студентов придётся переучивать "правильно". На самом деле, причина была в другом.

Далее цитата:

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

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

Согласно той же легенде, в своей докторской Садовничий не понимал ни бельмеса. Будучи знаменитым на всю Москву антисемитом, он нанял для написания диссертации еврейскую девочку-аспирантку. Девочка вскоре после защиты садовничей диссертации эмигрировала в эрец-израель, и с тех пор на любые вопросы по этому научному труду Садовничий отвечал двусмысленно.

Кульминация наступила тогда, когда оказалось, что основной результат диссертации, из которого все выводится, банально неверен. Садовничий, согласно той же легенде, ответил так: "да, эта теорема неверна, но зато все другие результаты правильные", но в детали вдаваться отказался.

Кстати, на позицию следующего президента РАН есть две реальные кандидатуры - Фортов и Садовничий. Не знаю уж, кто из них хуже, но факт показательный.


На мехмате МГУ евреев и выпускников арнольдовских матшкол валили одним вопросом на экзамене: "дайте определение окружности". Абитуриент бодро отвечал на этот простой вопрос: "окружность - это геометрическое место точек, равноудалённых от центра", и получал два, с формулировкой "неверно, окружность - это геометрическое место всех точек, равноудалённых от центра".

Об уровне математической подготовки школьников матшкол можно судить по одной фразе из этой книги: "В 1963—64 гг. я читал лекции о ... топологической теории школьникам московской школы-интерната №18... Я воспользовался этой темой, чтобы за семестр рассказать школьникам с нулевыми начальными знаниями такие вещи, как комплексные числа, «формулу Муавра», фундаментальную группу, топологию римановых поверхностей, разветвленные накрытия, монодромию, группы преобразований и симметрий, группы перестановок, доказательство неразрешимости алгебраических уравнений высших степеней."

Вот так. Это вам не основы православия.

К сожалению, академик Арнольд умер в 2010 году во Франции.

Рекомендую книгу всем, кто интересуется популярной наукой, математикой и современными направлениями развития математики.

Tags:

Latest Month

June 2019
S M T W T F S
      1
2345678
9101112131415
16171819202122
23242526272829
30      

Syndicate

RSS Atom
Powered by LiveJournal.com
Designed by Tiffany Chow