Как стать автором
Обновить
12
0
Александр Соловьёв @Dr_Dash

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

Отправить сообщение

Разбираемся в АА-деревьях (Python)

Уровень сложностиСложный
Время на прочтение7 мин
Количество просмотров6.3K

АА-дерево - это модификация красно-черного дерева с целью упрощения реализации

Как его реализовать и как оно работает на конкретных примерах - вот о чем эта статья

Читать далее
Всего голосов 3: ↑3 и ↓0+3
Комментарии10

Раскладываем Git по полочкам: терминология

Время на прочтение7 мин
Количество просмотров14K

Первый раз столкнулись с Git и не понимаете, что это такое?

Устали бездумно выполнять серию комманд чтобы закинуть свой проект на GitHub?

Хотите понять, чем отличается merge, rebase, push и pull?

Надоело видеть ошибку о non fast-forward merge и не понимать, что с этим делать?

Сейчас попробуем разобраться в этом всем.

Поехали!
Всего голосов 16: ↑16 и ↓0+16
Комментарии10

Дефективное управление временем

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров24K

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

Потратить время
Всего голосов 11: ↑10 и ↓1+9
Комментарии8

Когнитивные искажения, о которых стоит помнить

Время на прочтение15 мин
Количество просмотров77K

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

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

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

Читать далее
Всего голосов 95: ↑87 и ↓8+79
Комментарии36

О делителях чисел Мерсенна

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров2.7K

О делителях чисел Мерсенна

Некоторые размышления о числах Мерсенна и их делителях.

Введение

Число Мерсенна - это число вида M_n = 2^n -1 для некоторого натурального числа n . В этой статье я буду рассматривать только числа M_p, p - простое число, за исключением последнего размышления. Их делители имеют вид 2pk + 1 для некоторого

0 ⩽ k ⩽ \frac{M_p - 1}{2p} .

Эти числа интересны тем,что при некоторых p они дают простые числа. Например, некоторые простые числа Мерсенна: M_2 , M_3 , M_5 , M_7 , M_{13}, M_{17} , M_{19} ,M_{31 }, M_{61}, .... , M_{82,589,933} , ....

Читать далее
Всего голосов 5: ↑5 и ↓0+5
Комментарии6

Разворачиваем систему уравнений в граф

Время на прочтение6 мин
Количество просмотров7.1K

Как-то во время учебы на инженера-теплоэнергетика я наткнулся на одну книгу [Попырин Л.С. Математическое моделирование и оптимизация теплоэнергетических установок. М. Энергия 1978г.], в которой был описан алгоритм построения расчётных схем энергетических установок, разработанный в Сибирском энергетическом институте (ныне - ИСЭМ СО РАН). Этот алгоритм заложен в основу СМПП (система машинного построения программ) - кодогенератора, который используется в исследованиях в ИСЭМ и по сей день. Собственно алгоритм предназначен для решения систем нелинейных уравнений, и, условно говоря, обобщает метод подстановки, знакомый многим из школьной алгебры.

Зачем это нужно?

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

Читать далее
Всего голосов 10: ↑10 и ↓0+10
Комментарии6

Мат (часть 8)

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров11K

Что самое главное в шахматах? Конечно МАТ! Именно умение ставить его, искать в любой ситуации путь к мату – определяет способность выигрывать. Если игрок не умеет ставить простейшие маты, не видит их – он просто не сможет выиграть шахматную партию. А еще - у матов есть различные названия. И об этом я тоже хочу рассказать. Так что - запасаемся терпением, берем мышку в руки чтобы решать задачи и добро пожаловать во вселенную мата!

А забегая вперед - самое смешное название у мата — «Слепые поросята»... Но об этом уже в статье.

Мат в шахматах
Всего голосов 34: ↑31 и ↓3+28
Комментарии64

Закон больших чисел и закон больших грабель

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров11K

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

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

Бросать не будем, все брошено до нас
Всего голосов 45: ↑45 и ↓0+45
Комментарии35

Сложность алгоритмов. Разбор Big O

Уровень сложностиСредний
Время на прочтение14 мин
Количество просмотров37K

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

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

Читать далее
Всего голосов 27: ↑25 и ↓2+23
Комментарии17

Изучаем и парсим биржевую информацию Мосбиржи. Наш первый парсер на Python, разбор кода

Время на прочтение7 мин
Количество просмотров14K

Как устроен ISS MOEX (информационно-статистический сервер Московской Биржи) и как можно парсить с него биржевые данные. Разбор кода программы. Это первое знакомство с MOEX, дальше будем изучать куда как более актуальный для алготрейдинга продукт мосбиржи - ALGOPACK. Однако перед этим общее знакомство с архитектурой iss moex должно быть. Стратегическая задача - использовать данные для алготрейдинга (работы торгового робота) напрямую с московской биржи.

Читать далее
Всего голосов 13: ↑12 и ↓1+11
Комментарии9

Модель мира

Уровень сложностиСредний
Время на прочтение26 мин
Количество просмотров6.8K

Наша реальность — это упрощенный, субъективный вариант более значительного, но менее доступного для нас Мира

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

Читать далее
Всего голосов 26: ↑11 и ↓15-4
Комментарии78

Удивительные клеточные автоматы: обратные и расширенные поколения

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров3.2K


👾, Хабр!
Давно не виделись.

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

В первых статьях цикла мы познакомились с поколениями, одной из базовых и простейших модификаций стандартной конфигурации клеточных автоматов. До этого дополнения наши клетки могли находиться лишь в двух логических состояниях – пустая и живая (0 и 1, соответственно). После же, с новым параметром G, мы добавили третье положение – старение, что значило, что клетка, после выхода из состояния 1, начинала отмирать, доходя до состояния G-1, и только после возвращая состояние к 0. Во время старения клетки не влияют на соседей, не проходят проверки выживания, увеличивая собственный счётчик состояния с каждым шагом, но они и не позволяют новым клеткам рождаться на их месте.

Дополнение поколений является самым популярным, среди всех модификаций стандартной модели, и даже, фактически, оно стало частью правила по умолчанию, наравне с B/S, используясь практически во всех прочих расширениях, хотя использование поколений, конечно, опционально.

Со временем участники сообщества начали предлагать дополнения и к этому варианту конфигурации. На поверхности лежали многие вариации, как ещё возможно изменить или переставить состояния клеток. Одним из них были и обратные поколения, a.k.a. snoitareneG, с которых мы и начнём.
Читать дальше →
Всего голосов 39: ↑39 и ↓0+39
Комментарии10

И снова о генеалогических деревьях

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров11K

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

Итак, мне захотелось визуализировать каким-то вменяемым образом свое генеалогическое дерево, включив туда всех прямых и непрямых родственников, о которых хоть что-нибудь известно. Данная статья описывает подходы к этой задаче, полученные результаты и ряд интересных вопросов, которые возникают при более глубоком погружении в эту тему. Все алгоритмы и отрисовка были реализованы на python из-за удобства работы со списками и словарями. Код носит базовый характер, связанный со структурами данных, их обработкой и самой простой визуализацией. Конечно же, изложенный подход можно упаковать в интересный продукт, о чем также пару слов будет сказано в конце статьи. Поехали.

Читать далее
Всего голосов 7: ↑4 и ↓3+1
Комментарии14

Пакуем весь трафик в Ping message, чтобы не платить за интернет | ICMP NAT traversal

Уровень сложностиСложный
Время на прочтение29 мин
Количество просмотров85K

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

Так вот, переходя ближе к теме. Вы можете воспроизвести подобное поведение очень просто прямо сейчас при помощи вашего мобильного телефона и ноутбука. Я в своём конкретном кейсе буду пользоваться услугами оператора красного цвета, однако проблема актуальна для всех текущих 4 монополистов рынка сотовой связи. Как вам, скорее всего, уже известно, они около года меняют свою политику, внедряя одно интересное нововведение — с вас требуют дополнительной платы за раздачу интернета поверх основного пакета. То есть вы не можете взять и использовать свои 7 гигов на месяц как ресурс для раздачи при помощи точки доступа. Для точки доступа вам предлагают отдельный, зачастую совсем невыгодный тариф. Конечно, можно сменить основной тариф на специальный «тариф для раздачи» и платить втридорога, но, как вы понимаете, сегодня мы в потребителя будем играть совсем недолго. Сейчас по пунктам нужно доказать нечестность подобной политики и с чувством завершённого введения перейдём к непосредственно технотексту.

Подобные условия пользования, само собой, порождают внутреннее недовольство пользователей:

За интернет они платят? — Да.

Раздача как-либо использует ресурсы провайдера сверх нормы? — Нет.
Читать дальше →
Всего голосов 298: ↑296 и ↓2+294
Комментарии91

Русские шашки: реализация минимакса с альфа-бета отсечением в Golang

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров2.4K

В предыдущих записях блога мы обсудили, как эффективно генерировать ходы и представлять шашечную доску в Golang. Теперь мы углубимся в сердце нашей игры в шашки: ИИ, который принимает решения. ИИ будет использовать алгоритм Minimax с Alpha-Beta отсечением, популярный метод принятия решений в настольных играх.

Читать далее
Всего голосов 4: ↑3 и ↓1+2
Комментарии3

Свой VPN сервер дома

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров48K

Последнее время вижу очень много статей на тему vds с впн для тех или иных задач.

В основном людям нужен такой сервер для обычного неторопливого серфинга.

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

Читать далее
Всего голосов 22: ↑13 и ↓9+4
Комментарии54

Моделирование большого количества взаимодействующих друг с другом частиц

Время на прочтение6 мин
Количество просмотров30K
Рассмотрим ситуацию, когда необходимо обрабатывать столкновения между объектами. Как вы в этом случае поступите? Вероятно, самым простым решением будет проверить каждый объект с каждым другим объектом. И это правильное решение, и все будет замечательно до тех пор пока объектов не много. Как только их станет порядка нескольких тысяч, вы заметите, что все стало как-то медленно работать. А если частиц несколько десятков тысяч или сотен? Тогда все замрет. Вот здесь уже интересно, на какие хитрости и оптимизации вы пойдете, чтобы решить такую проблему.

Для простоты, будем рассматривать 2D случай, частицы круглые, радиус частиц у всех одинаковый.

Содержание


1. Обзор алгоритмов
1.1. Полный перебор
1.2. Sweep & Prune
1.3. Регулярная сеть
2. Некоторые оптимизации
2.1. Sweep & Prune
2.2. Регулярная сеть
3. Сравнение скорости выполнения
4. Приложение (программа и исходный код)
5. Заключение

Читать дальше →
Всего голосов 147: ↑145 и ↓2+143
Комментарии45

Неожиданная эффективность условных вероятностей

Время на прочтение11 мин
Количество просмотров8K

В последнее время я решил заняться задачами по теории вероятностей, потому что мне кажется, получение знаний в этой сфере принесёт большую пользу. Я нашёл ключ, часто использующийся для решения многих из них: накладываем условие на промежуточное состояние, а затем отдельно вычисляем значение этого промежуточного состояния. Это превращает очень сложные задачи в такие, где решение практически очевидно. [Однако в таком случае мы иногда обмениваем эффективность на простоту.]

Такой подход был полезен для решения задачи о днях рождения в очереди, и в статье я приведу ещё три примера, в которых это проявляется. Если задача покажется вам неинтересной, перейдите к следующей, они все разные.
Читать дальше →
Всего голосов 17: ↑17 и ↓0+17
Комментарии9

VPN Gate, или — неубиваемая Великим Китайским Файрволом распределённая сеть VPN

Время на прочтение3 мин
Количество просмотров69K

Сегодня речь пойдёт о технологии распределённой сети VPN Gate, своего рода недруга Поднебесной в области интернет цензуры. На Хабре много статей на тему SoftEther VPN (нижележащий слой VPN Gate), но нет ни одной технически всесторонней статьи про саму распределённую сеть и такое чувство, что в рунете про неё вообще забыли.

VPN Gate — академический эксперимент Дайу Нобори. Проект представляет собой интернет-сервис научных исследований в Высшей Школе Университета Цукуба, Япония. Цель данного исследования заключается в расширении знаний «Глобальных распределенных открытых ретрансляторов VPN».

Отличительной особенностью данной сети является её функционирование в виде роя. То есть каждый желающий пользователь может поделиться своей пропускной способностью с другими. Я знаю, что вы подумали, очередной неудачный dVPN пиар на основе блокчейна.

Однако это не так, данный проект уже насчитывает 8634 узлов и 534 петабайта трафика за всё время существования. К примеру даже у TOR-а узлов — 7 тысяч.

Читать далее
Всего голосов 81: ↑80 и ↓1+79
Комментарии101

Взгляд программиста на гипотезу Коллатца

Время на прочтение4 мин
Количество просмотров13K
Поделюсь интересными результатами анализа одной маленькой, но интересной теоремы, гипотезы Коллатца.

Формулировка такая: вам даётся натуральное число. Если оно чётное, вы его делите на два, а если нечётное, умножаете на три и добавляете единицу. И так по кругу. Гипотеза состоит в том, что для натуральных чисел иной судьбы, чем скатиться в цикл 1->4->2->1 нет. То есть, предположение состоит в том, что не появится других циклов — и тем более, таких чисел, которые при такой обработке в среднем всегда только возрастают.

Как бы на это посмотрел бы программист? Прежде всего, целое число для него это набор бит. Количество бит у числа подсчитывается логарифмом по основанию 2, с округлением в меньшую сторону, плюс единица. Семь это три бита «111», восемь это уже четыре бита «1000». Двоичная система счисления — как будто у вас отобрали все цифры с 2 по 9, а числа обозначать надо. Сперва трудно, но привыкнуть можно.

Деление в этой системе на два — это сдвиг всей расстановки в правую сторону. Но проще это назвать стиранием последнего нолика.

В цикле обработки числа именно это и происходит — если число чётное, то есть, последний бит нолик, то он стирается. Если не цепляться за отдельные циклы обработки, можно сказать, стираются сразу все завершающие нули.
Читать дальше →
Всего голосов 32: ↑30 и ↓2+28
Комментарии4

Информация

В рейтинге
Не участвует
Откуда
Челябинская обл., Россия
Зарегистрирован
Активность