Как стать автором
Обновить
17
0
Журат Максим @ChessMax

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

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

Транзакции PostgreSQL, Требования ACID, примеры. Подготовка к собеседованию, изучение

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

Приветствую тебя читатель, я решил написать про ACID и Транзакции PostgreSQL своим языком, с понятными примерами, эта статья ориентирована на людей готовящихся к собеседованию, кто захотел узнать нюансы транзакций в PostgreSQL или про ACID, а также для людей которые знают теорию, но сами ещё ни разу не писали транзакции. Я не ставил перед собой цели рассмотреть и объяснить работу транзакций на очень глубоком уровне. Была цель привести понятные примеры, дать макет работы с транзакциями, а также пощупать основные возможные проблемы при работе с транзакциями в PostgreSQL.

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

Упрощение управления формами во Flutter с помощью пакета FForm

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

FForm — это пакет Flutter высокого уровня, предназначенный для упрощения создания и управления формами с упрощенной проверкой полей. Он предлагает два основных компонента: FFormField и FFormBuilder, которые вместе обеспечивают простоту и гибкость обработки форм в приложениях Flutter.

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

Доктора Кнут, Моррис и Пратт, или Как я перестал бояться и полюбил префикс-функцию

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

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

Я прошел через череду осознаний и озарений, прежде чем достичь просветления, и теперь предлагаю вам пройти этот путь вместе со мной.

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

Как красиво писать формулы c LaTeX?

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

Привет, Хабр!

Меня зовут Шайдурова Арина, я Data Scientist  и участник профессионального сообщества NTA. Сегодня я поделюсь с вами своим опытом использования LaTeX для написания математических формул. Всё просто и с примерами, идеально подойдет для новичков синтаксиса LaTeX.

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

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

Симуляция ткани методом Стёрмера — Верле

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

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

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

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

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

Булевы операции двумерных тел

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

В детстве меня всегда завараживали игры с динамическим ландшафтом: The Castle и Worms Armageddon. В то время я не понимал, как реализована эта удивительная механика разрушения и изменения мира. Позже я узнал, что секрет заключался в использовании растровой графики, но интерес к теме не исчез. В этой статье я хочу рассказать о векторном решении аналогичной задачи.

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

Задача коммивояжёра в общем виде. Наибыстрейшее точное решение

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

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

Тут я хочу подытожить все опробованные подходы и выбрать лучший по моему мнению.

Читать далее
Всего голосов 36: ↑35 и ↓1+42
Комментарии29

Что не так со статьями о выгорании

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

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

Читать далее
Всего голосов 56: ↑52 и ↓4+58
Комментарии95

Самое сложное в программировании это…

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


Мне очень понравилась ветка обсуждений на Quora.com: What is the hardest part about learning to program? Все 87 ответов я так и не прочитал, но понравившиеся, выделил в отдельную статью из 10 пунктов. Это вольный пересказ мнений многих разных людей. Если читателям будет интересно, я продолжу.

1. Разница между высокими стандартами и своими низкими умениями


В статье «Никто не говорит об этом новичкам» рассказывается об общей проблеме людей, занятых творческим или интеллектуальным трудом. Программирование — сложный предмет, и обычно за него берутся способные, амбициозные и склонные к перфекционизму люди. На начальном этапе у них не будет хорошо получаться. Привыкшие к высокой планке, они будут расстраиваться. Внутренний голос будет постоянно нашептывать: “У тебя никогда и не получится, лучше оставь это дело”. В такие моменты думайте о том, что ваша самокритичность — это признак вашей экстраординарности, и верьте, что преодолеете этот “неумелый период”.

Что касается необычайных преимуществ программирования, то вот они:
Читать дальше →
Всего голосов 86: ↑83 и ↓3+80
Комментарии140

Гайд: создаем функционального Telegram-бота на Dart

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

Привет! Я Саша Омельяненко, тимлид в отделе Flutter в AGIMA. На одном из наших проектов нужно было сделать бота для Telegram. Я нашел инструкции, как создать только базового бота. Но как оформить его, добавить кнопки и повесить на них Listener, я не нашел.

Пришлось разбираться с документацией Telegram, а это занятие не из приятных. Чтобы избавить вас от этого удовольствия, я решил написать гайд по разработке функционального Telegram-бота на Dart. Мы пройдем весь процесс от регистрации бота до его развертывания на удаленном сервере. Эта инструкция будет полезна Flutter-разработчикам уровня Junior и Middle.

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

Отделяем стек от рекурсии

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

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

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

Почему работать в IT не так уж и классно

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


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

Я проработал в индустрии IT более десяти лет и скажу вам, это была сумасшедшая гонка, наполненная множеством взлетов и падений. Больше вниз, чем вверх, если я буду действительно честен с вами.
Читать дальше →
Всего голосов 96: ↑66 и ↓30+36
Комментарии311

Атрибут charset и важность его использования

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

Какие предположения можно сделать относительно следующего HTTP ответа сервера?

Глядя на этот небольшой фрагмент HTTP ответа, можно предположить, что веб-приложение, вероятно, содержит уязвимость XSS.

Почему это возможно? Что обращает на себя внимание в этом ответе сервера?

Вы будете правы, если сомневаетесь насчет заголовка Content-Type. В нем есть незначительный недостаток - отсутствие атрибута charset.  Это может казаться неважным, однако, в этой статье мы объясним, как злоумышленники могут использовать этот недостаток для внедрения произвольного JavaScript кода на веб-сайт, сознательно изменяя набор символов, который ожидает браузер.

Читать далее
Всего голосов 26: ↑25 и ↓1+32
Комментарии6

В сотый раз об эргономике рабочего места (на личном опыте)

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

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

Читать далее
Всего голосов 55: ↑53 и ↓2+60
Комментарии115

Подборка игр с низкоуровневым программированием

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

TL;DR

Игры от Zachtronics:

TIS-100, EXAPUNKS, SHENZHEN I/O

Про создание процессора от логических элементов и до написания кода на ассемблере: браузерная бесплатная nandgame.com, более продвинутая Turing complete.

Если Вам нравится какая-то игра из перечисленных - наверно, и остальные тоже подойдут. В каждую из них я наиграл по 30+ часов, получил кучу удовольствия и научился чему-то новому.

Подробности
Всего голосов 67: ↑66 и ↓1+79
Комментарии26

Использование алгоритма бинарного поиска для нахождения квадратного корня числа на Java

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

Наткнулась на leetcode на задачку с нахождением квадратного корня из неотрицального числа.

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

Итак, условие задачи здесь: https://leetcode.com/problems/sqrtx/description/

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

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

Акцентирую внимание еще раз: массив должен быть отсортирован по возрастанию.

Если массив не отсортирован, то сортировка потребует минимум O(log n * n) временной сложности, что нужно учитывать.

Поэтому, если массив небольшой и неупорядоченный, то, скорее всего, лучше будет линейный поиск со сложностью O(n).

Итак, теперь вернемся к нашей задачке. Нужно найти квадратный корень из неотрицательного числа, где само число может быть любым от 0 до 231 - 1. Если корень из числа извлекается с остатком, например, корень из 8 это 2.82842…, то нужно округлить в меньшую сторону до целого, т.е. в данном случае до 2.

Начнем, по порядку, ограничив краевые случаи. Так, если х = 0, то можно сразу вернуть 0.

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

Имплементация чисел с фиксированной точкой (часть 2)

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

Итак, в прошлый раз я представил базовую идею как можно реализовать Fixed-point arithmetic, а так же набросок кода на C++, в котором в комментариях нашли довольно много проблем (а я сам нашёл ещё больше). В этот раз хочется представить улучшенную реализацию, разбор тонких моментов в коде и провести более детальный анализ получаемых результатов.

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

Как работают изоляты в Dart?

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

При разработке Dart изначально была заложена идея полной независимости динамической памяти (objectstore / heap), снимка кода и event loop между изолятами. Одним из сценариев использования такой изоляции является разделение сервисного процесса виртуальной машины (vm-service, используется в том числе в DevTools) и основного кода, но также API для изолятов позволяет создавать собственные независимые процессы для выполнения кода с автономной памятью. Но как на самом деле работают изоляты сейчас и почему порты на самом деле существуют в модели «плоского мира», попробуем разобраться в этой статье.

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

Как программные ошибки приводят к катастрофическим последствиям

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

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

В этой статье речь пойдёт о нескольких ярких случаях, когда сбои ПО серьёзно отразились на подобных критических средах, в которых ошибки недопустимы.
Читать дальше →
Всего голосов 56: ↑48 и ↓8+59
Комментарии45

Expression Problem и Объектные алгебры

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

Expression Problem (EP) — это классическая задача в программировании на совмещение несовместимого.

Автор задачи (Philip Wadler) формулирует следующие цели: создать такую абстракцию, что позволяла бы расширять иерархию в двух направлениях: добавлять новые классы и добавлять новые методы для обработки иерархии, сохраняя при этом строгую статическую типизацию и не требуя изменений существующего кода.

В динамически типизируемых языках мы бы могли добавить или переопределить метод на лету с помощью трюка, ставшего известным под неказистым названием monkey patching (хоть первоначально речь шла совсем не про обезьян, а про партизан — guerrilla).

А вот какие трюки применяют в статически типизированных языках рассмотрим под катом.

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

Информация

В рейтинге
4 168-й
Откуда
Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Mobile Application Developer
Senior
Flutter
Flutter Bloc
MobX
Mobile
Development of mobile applications