Pull to refresh
Ivan Gavryushin @dcc0read⁠-⁠only

Пользователь

Send message

Мой опыт публикации книги на ridero.ru

Reading time2 min
Views2.8K

Недавно я решил собрать часть своих публикаций на habr.com и соорудить из них книгу - сборник статей. Поскольку часть моих заметок так или иначе связана с комбинаторикой, то навскидку у меня вырисовывалось вполне полноценное издание. Я быстренько скомпоновал PDF документ из 9 глав по одной теме, слегка подредактировав и добавив одну краткую главу. Составлением предисловия я себя утруждать не стал, сборник - это сборник, можно обойтись и без книжной формальной лирики. Хотя, конечно, - предисловие, - как говорил один очень умный человек, - это самое главное, что есть в книге. Ведь иногда достаточно прочитать предисловие, и саму книгу можно уже не читать. Руководствуясь и этой мыслью тоже, я собрал маленькую книженцию. Но встал насущный вопрос...

Читать далее
Total votes 21: ↑14 and ↓7+7
Comments7

Почему запись от руки остаётся лучшим способом запоминания информации

Reading time6 min
Views20K

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

Рукописные заметки дали бы мне множество осязаемых ресурсов, которые помогли бы найти критически важную отсутствующую информацию: более свежие воспоминания о митинге, пробелы в подробностях обсуждения да и простое чтение записей с бумаги помогло бы мне лучше вспомнить события. Подробные печатные заметки не помогают запоминать и удерживать информацию на совещаниях так же, как это могли бы сделать рукописные заметки, хотя всё равно были бы полезны.
Читать дальше →
Total votes 16: ↑14 and ↓2+12
Comments28

Охота за тараканами: как я ходил на групповую психотерапию

Reading time11 min
Views17K

90% проблем в нашей жизни — это проблемы во взаимоотношениях с другими людьми. Конфликты на работе, сложности в близких отношениях или одиночество из-за страха, что никто не примет тебя с твоими тараканами. И самое неприятное, что для этих проблем характерна бесконечная воспроизводимость.

Читать далее
Total votes 96: ↑85 and ↓11+74
Comments68

Tutorial по обмену с 1С. Часть пятая: Наш опыт настройки 1000 и 1 обмена

Reading time13 min
Views6.3K

В своей предыдущей статье я начала раскрывать тему того, как правильно настраивать обмен между крупными сайтами и B2B-системами на Битрикс с системами учета 1С:Предприятие. 

Если еще не читали — посмотрите, будет полезно, типовой модуль обмена многое умеет, а то, что не умеет — можно обойти и доработать

В этой статье коснемся кастомизации и отладки обмена, а также выгрузки оффлайн-заказов.

Читать далее
Total votes 5: ↑5 and ↓0+5
Comments1

О трехмерных шутерах на CSS +HTML [перевод]

Reading time3 min
Views15K
Привет, Хабр! Представляю вашему вниманию перевод статьи Building a 3D Game with CSS + HTML автора Michael Bromley.

Не так давно я изучал редко используемые функции CSS — функцию анимации и 3D, а после общения в конференции по JavaScript я собрал вот это demo. Пока я трудился над ним, мне стало любопытно, как далеко можно зайти в конструировании трёхмерной графики на чистом CSS.

image
(скриншот выполнен переводчиком)
Читать дальше →
Total votes 14: ↑12 and ↓2+10
Comments10

mov Программирование на Ассемблере без знаний Ассемблера, habr

Level of difficultyHard
Reading time4 min
Views3.7K

Пролог

Решил поделиться своими мыслями и кратким двухдневным опытом написания (собирания по частям) программы на Ассемблере без чтения учебников, больших статей и в целом без опыта программирования на этом языке. На одном из форумов я набрёл на задачу вывода десятичного числа в консоль. Если на языке C или PHP эта операция совершенно элементарна, то на Ассемблере всё не так просто, как может показаться на первый взгляд. Для решения задачи я выбрал nasm (правда, выбора и не было), немножко поигравшись предварительно с вставками nasm (синтаксис AT&T) в код C (ссылка на форум с моими опытами в конце статьи).

Философское отступление
Остановись, дорогой читатель! И прежде чем читать дальше, задай себе вопрос: возможно ли начать ковать без обучения кузнечному делу?!

Я оставлю этот вопрос без ответа. Только скажу, что в нём нет ни капли иронии, издёвки, намёка на назидательность и т.д. Это вопрос без какого-либо дополнительного подтекста.

Поиски
Информации по Ассемблеру в Интернете очень много и заблудиться в разных видах Ассемблера (для различных систем) крайне просто. Я не единственный задавался вопросом в поиске «how to print a number in asm». Ответы на разных диалектах языка относительно легко можно найти на Stack Overflow, однако это совершенно не означает, что будет легко запустить найденный код на своей машине. Велика вероятность того, что что-нибудь не сойдётся. Научиться отличать синтаксис AT&T и intel можно за несколько минут, а вот с узнаванием tasm, fasm, masm, nasm - несколько сложнее. Единственное, что можно предположить и (почти) не прогадать: базовые инструкции во всех Ассемблерах имеют (почти) одинаковые мнемоники.

Читать далее
Total votes 10: ↑7 and ↓3+4
Comments0

Разбираемся в С, изучая ассемблер

Reading time11 min
Views89K
Перевод статьи Дэвида Альберта — Understanding C by learning assembly.

В прошлый раз Аллан О’Доннелл рассказывал о том, как изучать С используя GDB. Сегодня же я хочу показать, как использование GDB может помочь в понимании ассемблера.

Уровни абстракции — отличные инструменты для создания вещей, но иногда они могут стать преградой на пути обучения. Цель этого поста — убедить вас, что для твердого понимания C нужно также хорошо понимать ассемблерный код, который генерирует компилятор. Я сделаю это на примере дизассемблирования и разбора простой программы на С с помощью GDB, а затем мы используем GDB и приобретенные знания ассемблера для изучения того, как устроены статические локальные переменные в С.
Читать дальше →
Total votes 76: ↑70 and ↓6+64
Comments31

Как мы ищем дефекты оборудования ультразвуковыми микрофонами

Reading time6 min
Views9.7K
Бывает, чтобы заглянуть в подшипник, нужно разобрать полстанка, и всё это — ради профилактики дефекта. Зачастую бывает, что до того, как что-то реально поломается, узел начинает издавать определённый звук. Замечали, что опытные водители на любую нетипичную вибрацию реагируют чутко и с подозрением? Точно так же и сотрудники наших производств знают, как должен «звучать» станок. Ещё из далёкого прошлого нам достался вполне рабочий метод преобразования ультразвука в слышимый звук с помощью доски: бывает, рабочие со стажем лет так в 30 прикладывают обычный деревянный брусок на полметра к узлу и внимательно вслушиваются.

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

Решение выглядит вот так:



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



Результаты получились очень интересные.
Читать дальше →
Total votes 83: ↑82 and ↓1+81
Comments78

Пять экзистенциалистов заходят в бар: занимательные логические задачки

Reading time3 min
Views6.9K

Первое совместное фото Жан-Поля Сартра и Симоны де Бовуар – на ярмарке в Порт-д'Орлеане, июнь 1929 года, Париж, Франция.

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

1. Усопший Витгенштейн


Кто-то убил Витгенштейна. Преступником является один из четвёрки: Фридрих Ницше, Лу Андреас-Саломе, Карл Маркс или Людвиг Андреас Фейербах. В результате их допроса были записаны следующие заявления (причём известно, что убийца лжёт, а все остальные всегда говорят правду):

Ницше: убийца – Саломе.
Саломе: Маркс невиновен.
Фейербах: Саломе говорит правду.
Маркс: Ницше лжёт.

Кто убил Витгенштейна?
Читать дальше →
Total votes 12: ↑11 and ↓1+10
Comments23

Фразеологизмы в английском

Reading time15 min
Views29K

В каждом языке существуют фразы и выражения, которые просто немыслимо понять буквально, даже если вам известны значения каждого слова. Такие выражения имеют переносный смысл и как правило эквиваленты в другом языке, или же просто литературный перевод. Но русский язык тоже богат такого рода выражениями, фразеологизмами. Поэтому приготовьтесь освежить в памяти уроки литературы!

So, we are going to let the cat out of the bag today, guys! А мы сегодня «выпустим кота из мешка», что означает раскроем секреты употребления идиом в повседневной речи.

Что такое идиомы и как их употреблять?

Идиома – с греческого idiоma переводится как особенность, своеобразие, это оборот речи, присущий только данному языку и иногда не имеющий эквивалента в других языках.

Термин "идиомы" впервые был введен английским лингвистом Л.П.Смитом. Он писал, что слово idiom используется в английском языке для обозначения французского термина idiotisme. А именно: для обозначения структуры сочетаний, характерных для английского языка, хотя очень часто значения этих сочетаний невозможно объяснить с логической точки зрения.

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

Особенность идиомы в том, что ее смысл не равен смыслу ее составляющих фразеологических единиц. Так, например, если переводить дословно идиому «bring home the bacon», то получится «приносить домой бекон», хотя смысл данной идиомы «обеспечивать семью».

Читать далее
Total votes 26: ↑23 and ↓3+20
Comments12

Самая маленькая система управления перезагрузкой для Linux

Reading time3 min
Views5K

Введение

После установки системы Gentoo Linux на свой нетбук я неожиданно обнаружил, что в системе нет штатного средства выключения и перезагрузки от обычного пользователя без использования sudo.

Защитное слово автора

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

История вопроса

После установки системы Gentoo Linux на свой неутбук я неожиданно обнаружил, что в системе нет штатного средства выключения и перезагрузки от обычного пользователя без использования дополнительных средств вроде программы sudo, а исследование файла /etc/group показало, что в нём нет группы operator. Любые попытки добавить эту группу и пользователя в неё не принесли желаемого результата - компьютер не перезагружался от простого пользователя.

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

Скрипт запускался раз в минуту от root, проверял файл в директории пользователя на наличие в нём управляющего символа и осуществлял перезагрузку или выключение, записывал в этот файл код 0 для бездействия, чтобы компьютер не начал перезагружаться бесконечно. Я и сам не заметил, что своими руками создал уязвимость в системе (хотя подозрения были). Спасибо участникам форума Linux.org.ru, которые вовремя указали мне на ошибки и дали ряд дельных советов по улучшению моей скромной системы.

Читать далее
Total votes 18: ↑2 and ↓16-14
Comments38

Gentoo на нетбуке, философия самоограничения и шахматы с системой

Reading time3 min
Views5K

Так сложилось, что с этим дистрибутивом я уже примерно 13 лет, с большими перерывами. Первый раз система мной была установлена на ноутбук Sony Vaio. Теперь это уже далёкий 2009 год. В сети где-то даже сохранилась моя шпаргалка об этом опыте. И вот в 2022-м, на пороге 2023-го, у меня появилась мысль поменять свой прекрасно работающий 32-х битный Calculate Linux на 64 бита. И всё задуманное было осуществлено в одночасье, за пару часов настроено до идеального состояния.
Нетбук у меня примерно 2009 года выпуска: hp mini с процессором Atom N570, 1.66GZ (2 ядра, 4 потока), 2GB DDR3RAM, графическим адаптером от intel и т.д., и т.п.

Когда я рассматривал вывод команды cat /proc/cpuinfo, у меня появилась ещё одна интересная мысль: а не установить ли мне на это железо Gentoo Linux?!

Как мне думается, у меня вышел интересный эксперимент по установке Gentoo в недельный срок классическим способом, - по Handbook - предварительно использовав для некоторых операций дистрибутив Calculate Linux.

Обо всём по порядку

Читать далее
Total votes 15: ↑10 and ↓5+5
Comments16

Звук. От механических колебаний до ALSA SoC Layer

Reading time8 min
Views9.7K


Мы в SberDevices делаем устройства, на которых можно послушать музыку, посмотреть кино и ещё много всего. Как вы понимаете, без звука это всё не представляет интереса. Давайте посмотрим, что происходит со звуком в устройстве, начиная со школьной физики и заканчивая ALSA-подсистемой в Linux.
Читать дальше →
Total votes 22: ↑22 and ↓0+22
Comments6

GCC x86, как уменьшить размер кода

Reading time4 min
Views31K
      Времена, когда программисты пытались выжать максимум из размера своего приложения, безвозвратно ушли. Основной причиной является существенное увеличение объемов оперативной памяти и дискового пространства на современных компьютерах. Немногие помнят, как при загрузке приложения с кассеты можно было пойти покушать. Или как можно было считать моргания дисковода, косвенно определяя размер приложения. Пожалуй, только разработчики програмного обеспечения под встраиваемые системы до сих пор заботятся о размере кода и потребляемой памяти. Могут ли таблетки и смартфоны вернуть разработчиков «назад в будущее»?
      Данная статья призвана помочь разработчикам програмного обеспечения, использующим GCC компилятор, уменьшить размер кода своих приложений. Все данные в статье получены при помощи x86 GCC компилятора версии 4.7.2 на операционной система Fedora 17 для архитектуры Intel Atom.
Читать дальше →
Total votes 59: ↑54 and ↓5+49
Comments43

Что нам стоит полином Жегалкина построить…

Reading time2 min
Views148K
Думаю, каждый, кто изучал или изучает в университете дискретную математику, знаком с понятием многочлена Жегалкина.

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

Чаще всего для построения полиномов Жегалкина студентам предлагаются два метода построения таких полиномов: метод неопределенных коэффициентов и метод эквивалентных преобразований.

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

Под катом приведен один удобный алгоритм, для построения полиномов Жегалкина, который студенты воспринимают «на ура», т.к. требует только выполнение «механических действий» без применения каких-либо умственных усилий. Краткое описание метода можно найти в Википедии, но на мой взгляд по нему не совсем понятно, как быстро проводить вычисления. Мне метод известен под названием «метод треугольника Паскаля».
Читать дальше →
Total votes 31: ↑30 and ↓1+29
Comments20

Дайджест KolibriOS #1: ввод в курс дела

Reading time3 min
Views22K
Если вам интересна KolibriOS и её развитие, но вы не имеете возможности следить за нововведениями на форуме (что бывает иногда трудно, особенно если вы только недавно начали интересоваться), то эта статья именно для вас. Это первая статья из серии ежемесячных дайджестов, направленных на освещение событий в сообществе ОС. Дайджесты будут выходить в последний рабочий день месяца. Поскольку это первая статья, то в ней, для налаживания линии информирования, будут рассмотрены изменения за промежуток времени более месяца. Хочу подчеркнуть, что особенно крупные изменения по-прежнему будут освещаться в отдельных статьях. Ну что ж, приступим.
Читать дальше →
Total votes 63: ↑58 and ↓5+53
Comments55

Светодиодная консоль для игры в Pong

Reading time7 min
Views3.2K

Появление игры Pong ознаменовало начало новой эры. И хотя это была не первая видеоигра, именно она породила ажиотаж в этой сфере развлечений. Впервые для потребителей это чудо игростроя стало доступно с момента релиза Magnavox Odyssey в 1972 году. Odyssey поставлялся с 12 играми, но настольный теннис (Pong) стал на тот момент самой популярной из них. Позднее в компании Atari доработали принцип виртуального настольного тенниса, выпустив тот самый Pong, который мы все помним и любим. В течение нескольких лет я даже был в некоторой степени одержим этой игрой. У меня была идея воссоздать её с использованием матрицы светодиодов. Эта идея показалась мне весьма занятной в плане реализации, и я решил создать такую вариацию, которая бы и отдавала дань корням, и несла в себе мои авторские штрихи.
Читать дальше →
Total votes 31: ↑31 and ↓0+31
Comments4

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

Reading time5 min
Views5.8K

Повозиться пришлось изрядно, но зато теперь «Норникель» стал первым в России обладателем беспилотных самосвалов, поднимающих полезные ископаемые с глубины 850 метров.

Меня зовут Андрей Дышлюк, я руководитель проектной команды по внедрению системы Sandvik AutoMine на нескольких автономных шахтных самосвалах, работающих на руднике «Скалистый». В этой статье расскажу, почему мы выбрали именно AutoMine, как строили сеть, ставили лазерные барьеры, обкатывали маршруты в часы пересменки и заставили технику работать безопаснее и дольше.

Читать далее
Total votes 29: ↑24 and ↓5+19
Comments22

Руководство по ассемблеру x86 для начинающих

Reading time16 min
Views146K
В наше время редко возникает необходимость писать на чистом ассемблере, но я определённо рекомендую это всем, кто интересуется программированием. Вы увидите вещи под иным углом, а навыки пригодятся при отладке кода на других языках.

В этой статье мы напишем с нуля калькулятор обратной польской записи (RPN) на чистом ассемблере x86. Когда закончим, то сможем использовать его так:

$ ./calc "32+6*" # "(3+2)*6" в инфиксной нотации
30

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

Начнём с написания базовой программы Hello world! для проверки настроек среды. Затем перейдём к системным вызовам, стеку вызовов, стековым кадрам и соглашению о вызовах x86. Потом для практики напишем некоторые базовые функции на ассемблере x86 — и начнём писать калькулятор RPN.
Читать дальше →
Total votes 51: ↑48 and ↓3+45
Comments26

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity

Specialization

Редактор
From 80,000 ₽