Search
Write a publication
Pull to refresh
2
0
Send message

Примеры кошмарного софта вокруг нас

Reading time5 min
Views56K
Источник: amansinghblog

В далёкие 90-е мы с нетерпением ждали релизов любимых программ с новыми фичами. Но с выходом MS Office 2000 (на скриншоте) стало ясно — что-то пошло не так. Оказалось, новые функции не только помогают, но и мешают…

И сейчас главная задача — отключить обновления во всех программах. Дошло до того, что приходится копаться в многолетних архивах того же uTorrent, чтобы найти версию без рекламы, которая работала нормально, пока не пришли бодрые менеджеры и не испортили программу на годы вперёд… То же самое по остальным инструментам, которые обрастают фичами и реально деградируют.
Читать дальше →

Таинственный мир информационной геометрии. Введение

Reading time8 min
Views7.9K


Изображение создано автором с помощью искусственного интеллекта


У многих из нас в старших классах отношения с геометрией напоминали несчастную любовь, переходящую в ненависть. Особенно нелегко было, когда речь зашла о координатах и объёме. Даже расчёты с использованием геометрии вызывали отторжение. А впереди ждал бум информационных технологий и шумиха вокруг машинного обучения, ИИ и науки о данных. Всё это побудило многих нырнуть в тёмные глубины математики, где среди прочих дисциплин нас снова ждала геометрия. Информационная геометрия применима в статистическом многомерном обучении (statistical manifold learning), которое недавно зарекомендовало себя в обучении на высокоразмерных наборов данных без учителя. Также информационная геометрия позволяет вычислять расстояние между двумя вероятностными мерами, что находит применение при подборе шаблонов, построении альтернативных функций потерь для обучения нейронной сети, сети распространения убеждений и решении задач оптимизации. Подробности — к старту нашего флагманского курса по Data Science.

Читать дальше →

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

Reading time2 min
Views7.2K

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

UPD1. Если вам нужно бесплатный распознаватель с листа бумаги, то смотрите мою статью.

UPD2. На базе механизма данного продукта проводится публичное бета-тестирование автокомпозитора и автоарранжировщика.

UPD3. Уже минимум год для ОС Windows сделана сборка для распознавания бумажных нот, которую удобно ставить даже неподготовленному пользователю.

Если же вам хочется петь со мной, прошу под кат.

Сейчас спою!

Boson — разработка СУБД «с нуля» (часть I)

Reading time9 min
Views20K

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

Каждый разработчик "кровавого" enterprise в своей работе использует СУБД (SQL/NoSQL) и меня всегда искренне интересовало как они устроены в самом сердце, на самом низком уровне. Почитав документацию и исходный код SQLite и MongoDB, про используемые в индексах и интерпретаторах запросов алгоритмы, осознал, что несмотря на широкую распространенность и некую привычность, системы управления базами данных (СУБД) - это сложные программные продукты, реализация которых не всем под силу. Отлично - как раз то, что мне надо. С мотивацией разобрались, перейдем к делу.

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

Читать далее

Приложение Хабра для Android и iOS

Level of difficultyEasy
Reading time2 min
Views23K

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

UPD: пост можно прикрепить к 5 хабам — как только выбрал «Разработка под iOS», сразу прошли ревью!

Читать далее

Розмыслы и их изобретения: истинный смысл привычных вещей

Reading time4 min
Views3.7K

В нашей Telegram-игре «Атомный Графъ» главный герой получил бионические протезы на самых передовых технологиях начала 19 века. Это стало возможным благодаря тому, что наша страна всегда была богата на изобретателей-самородков. Даже сегодня многие айтишники любят называть себя «инженерами». Наверное, почти во всех европейских языках так издревле называют технических специалистов, решающих всевозможные задачи по конструированию и строительству. А поскольку свет цивилизации в Европе распространил гладиусами и когортами Великий Рим, то термин «инженер» происходит от латинского ingenium, означающего «врождённая способность», «разум», «одарённость». Только Русь от Рима была шибко далеко, легионы до нас не добрались, и поэтому инженеров мы долго называли по-своему — розмыслами. Подробнее об этом термине можно почитать под катом. Если по-нашенски, то получается, что инженер — это смекальщик. Давайте вспомним несколько удивительных придумок наших розмыслов, изумивших современников. Эти изобретения мы сегодня используем совсем не так, как замышляли их авторы.
Читать дальше →

От n! до n^n всего n слагаемых, но это — не самое замечательное

Level of difficultyMedium
Reading time1 min
Views5.5K

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

Читать далее

Как из браузера открыть папку в проводнике Windows

Reading time2 min
Views27K
Представьте, что у вас возникла необходимость прямо с веб-страницы заказа в вашей CRM-системе открывать папку с файлами, которые к этому заказу относятся. Но не просто отображать содержимое папки, а прямо на компьютере открывать проводник с этой папкой.

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

Вы можете резонно предположить, что есть протокол file:// (я позволю себе использовать здесь и далее слово протокол, хотя правильнее, конечно, схема URI), который позволяет браузерам открывать локальные файлы, но с ним также есть две проблемы:

1) он не может отобразить список файлов в папке;
2) такие ссылки нельзя открывать с внешних (не локальных) веб-страниц.

Чтобы решить данную проблему, мы будем использовать свой протокол с собственным обработчиком. Метод будет работать в Windows и потребует некоторых (очень простых) действий на компьютере.
Читать дальше →

Как можно ускорить Python сегодня

Reading time10 min
Views24K

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

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

  1. Почему столь важно думать о «будущем разнородных вычислений».
  2. Две ключевых сложности, которые необходимо преодолеть в открытом решении.
  3. Параллельное выполнение задач для более эффективного задействования CPU.
  4. Использование ускорителя для дополнительного повышения быстродействия.

Один только третий пункт позволил увеличить быстродействие в 12 раз притом, что четвёртый позволяет добиться ещё большего за счёт ускорителя. Эти простые техники могут оказаться бесценными при работе с Python, когда требуется добиться дополнительного ускорения программы. Описанные здесь приёмы позволяют нам уверенно продвигаться вперёд без длительного ожидания результатов.
Читать дальше →

Как перестать отвлекаться, работая в IT

Reading time11 min
Views22K

Цель этой публикации — помочь всем ищущим стать эффективнее и улучшить собственные результаты за счет организации своего рабочего пространства.

Речь пойдёт о следующих вещах:

· Смартфоны и популярные приложения — в чем их проблема и почему они мешают фокусироваться.

· Рабочий стол и текстовый редактор — как лучше настроить, чтобы улучшить свою результативность.

· Метод помидора — что с ним не так и мой опыт его использования.

Читать далее

Пишем FastAPI с нуля на python

Reading time19 min
Views112K

FastAPI — это современная, быстрая (высокопроизводительная) веб-инфраструктура для создания API-интерфейсов с Python 3.7+ на основе стандартных подсказок типов Python.

В этой статье мы рассмотрим как написать его с нуля.

Читать далее

Учёба — это запоминание

Reading time4 min
Views7.2K

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

Начинаем читать страницу Википедии о квантовой механике

Столкнувшись с непонятной нам концепцией, (назовём её Концепцией 1):Переходим на страницу Википедии о Концепции 1Читаем о Концепции 1, пока мы не поймём её. Затем возвращаемся к статье о квантовой механике и продолжаем с того места, на котором закончили

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

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

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

Вся информация есть в Википедии, так почему же такое изучение не работает?

Читать далее

Поверхность по сети кривых

Reading time11 min
Views3.1K

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

Заранее предупреждаем. Дальше вам встретится множество геометрических терминов и формул. А кто говорил, что будет легко?!

О различных аспектах построения поверхности по сети кривых, а также полезных для ее практической реализации тонкостей, рассказывает Павел Егоров, математик-программист в C3D Labs.

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

Читать далее

Как отрефакторить 2.5 млн строк кода

Reading time18 min
Views6K

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

Читать далее

Задача коммивояжера (TSP) точное решение — метод ветвей и границ

Reading time17 min
Views20K

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

Я говорю про NP-трудные задачи (NP-трудность - недетерминированная полиномиальная трудность по времени) и на одной из данного класса хочу акцентировать ваше внимание. Задаче коммивояжера.

Мы не будем рассматривать эвристические алгоритмы, нам нужно точное решение.

Читать далее

Совмещая несовместимое: клавиатура с дисковым номеронабирателем

Reading time6 min
Views6K

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

Читать далее

Паттерны отказоустойчивости приложений в Kubernetes

Reading time22 min
Views20K
Балансировщики падают, контроллеры зависают, а дата-центры атакуют экскаваторы. Это нормальная история. Мы живём в мире, где нет ничего надёжного на 100 %, а любой бит в планке оперативной памяти может внезапно перещёлкнуться из-за пролетевшей космической частицы.

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

По роду деятельности мне постоянно приходится сталкиваться с проблемами отказоустойчивости, так как я руководитель разработки в отделе Газпромбанка, обеспечивающем эксплуатацию ML и Big Data-решений. Поэтому сегодня я хочу рассказать о нескольких паттернах отказоустойчивости и типовых решениях при эксплуатации приложения в кластере Kubernetes. Разберём основные паттерны, ну и, конечно, рассмотрим варианты, при которых неправильные настройки прострелят вначале одну ногу, а потом — другую, потому что она слишком медленно стала шагать.


Читать дальше →

Cтандартизированные методики исследования UX

Reading time6 min
Views2.4K

Несмотря на разнообразие подходов к UX (статья 1, статья 2, статья 3), в научной и практической среде за последние два десятилетия сформировались стандартизированные методики изучения пользовательского опыта. Объединяет их то, что все они основаны на теоретических предпосылках, разработанных в рамках относительно новой дисциплины Human-Computer Interaction (HCI). При этом четко прослеживается тенденция на расширение факторов, входящих в UX. Сегодня я расскажу о трех самых распространенных опросниках: AttrakDiff, UEQ и meCUE. 

Читать далее

У вас нет причин использовать alpine для python-проектов

Reading time9 min
Views15K

По мотивам моего доклада на PyCon "Контейнеризация Python без боли". На своей практике я постоянно сталкиваюсь со спорами какой базовый образ лучше использовать для проектов: alpine или debian. Аргументы есть и у той, и у другой стороны, но мне это настолько надоело, что я решил сам разобраться и наконец-то поставить точку. В конце концов "В наше время верить нельзя никому, даже себе. Но мне - можно." (с)

Читать далее

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

Level of difficultyHard
Reading time4 min
Views4.7K

Пролог

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

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

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

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

Читать далее

Information

Rating
6,518-th
Registered
Activity