Pull to refresh
2
0
Александр Карамах @Karamax

Программист

Send message

Битва кодеров: я против того парня с VNC

Reading time6 min
Views14K
В этом блоге опубликовано немало программистских баек. Мне нравится вспоминать о своих старых глупостях. Что ж, вот ещё одна такая история.

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

После школы (в возрасте около 16 лет) британские дети обычно идут в колледж, там выбирают для изучения три-четыре предмета, прежде чем поступить в университет. Учитывая свою любовь к бежевой коробке и магнитофону дома, я решил, что изучение «информатики» в колледже — правильный выбор.

Курс понравился мне больше, чем я ожидал; там я впервые познакомился с Паскалем и Дельфи.
Читать дальше →
Total votes 30: ↑29 and ↓1+37
Comments10

#03 — И целого байта мало… | 2B or not 2B

Reading time5 min
Views6.4K
Итак, друзья, 1-е апреля прошло, пора раскрывать карты, что же такое "2B or not 2B" на самом деле. Это совместный текст от автора работы jin_x и уже знакомого вам деда unbeliever

image

Обязательно скачайте архив с работой на Pouet и прочитайте вводную (первоапрельскую) статью, а так же комментарии к ней. Посмотрите первое видео с практической демонстрацией того, как работает код из «двух байт» на x86. И вот уже потом попробуйте осилить весь текст ниже.


Да, 2B or not 2B — это действительно среда для запуска различных sizecoding-работ, очень простая и, пожалуй, самая маленькая из существующих. При этом она имеет свои требования и ограничения.

Если кто-то ещё не уловил, тул 2b.com запускается из-под DOS (DOSBox, FreeDOS, MS-DOS) и осуществляет прыжок в область командной строки (по смещению $82* сегмента PSP), запуская на исполнение код, который передан в командной строке в двоичном виде. Собственно говоря, код этот вполне может иметь вид строки, которую можно набрать на клавиатуре (т.е. состоять из ASCII-символов с кодами от 33 до 126), но об этом немного позже.
Total votes 20: ↑20 and ↓0+20
Comments14

Принцип подстановки Лисков

Reading time6 min
Views52K

Всем привет, меня зовут Константин. Я занимаюсь разработкой на Java в Tinkoff.ru и люблю SOLID. В этой статье мы сформулируем принцип подстановки Лисков, покажем его связь с принципом Открытости-Закрытости, узнаем, как правильно формировать иерархию наследования и ответим на философский вопрос о том, является ли квадрат прямоугольником.


Читать дальше →
Total votes 43: ↑33 and ↓10+30
Comments76

Реализация поискового движка с ранжированием на Python (Часть 1)

Reading time5 min
Views34K
Просматривая ленту новостей я наткнулся на рекомендацию от Типичного Программиста на статью «Implementing a Search Engine with Ranking in Python», написанную Aakash Japi. Она меня заинтересовала, подобного материала в рунете не очень много, и я решил перевести её. Так как она довольно большая, я разделю её на 2-3 части. На этом я заканчиваю своё вступление и перехожу к переводу.

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

Но в то время как Google является невероятно сложным, основная концепция поисковой системы, которые ищут соответствия и оценивают (ранжируют) результаты относительно поискового запроса не представляет особой сложности, и это может понять любой с базовым опытом программирования. Я не думаю, что в данный момент возможно превзойти Google в поиске, но сделать поисковой движок — вполне достижимая цель, и на самом деле это довольно поучительное упражнение, которое я рекомендую попробовать.

Это то, что я буду описывать в этой статье: как сделать поисковую систему для локальных текстовых файлов, для которых можно обрабатывать стандартные запросы (по крайней мере, одно из слов в запросе есть в документе) и фразу целиком (появляется вся фраза в тексте) и может ранжировать с использованием базовой TF-IDF схемы.

Есть два основный этапа в разработке поискового движка: построение индекса, а затем, используя индекс, ответить на запрос. А затем мы можем добавить результат рейтинга (TF-IDF, PageRank и т.д.), классификацию запрос/документ, и, возможно, немного машинного обучения, чтобы отслеживать последние запросы пользователя и на основе этого выбрать результаты для повышения производительности поисковой системы.

Итак, без дальнейших церемоний, давайте начнем!
Читать дальше →
Total votes 17: ↑15 and ↓2+13
Comments4

Геодезический купол. Об устройстве и моем опыте расчетов

Reading time6 min
Views27K
Пожалуй сложно назвать геодезические купола чем-то необычным или новым. В этой заметке я расскажу немного об этих конструкциях в общем, об их устройстве, а также покажу на примере как я кое что на эту тему считал. Код тоже будет.

Читать дальше →
Total votes 23: ↑23 and ↓0+23
Comments74

Короче, сделал столетний блокбастер цветным

Reading time22 min
Views44K

Синопсис

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


верни картинку взад
Читать дальше →
Total votes 162: ↑158 and ↓4+206
Comments73

Профсоюз программистов? Не смешите мои тапки

Reading time5 min
Views44K
Политики в этом посте не будет. Профсоюзы это не про политику, профсоюзы это про экономику. Так что будет только про экономику. Хотя ладно, чего я вру, будет политика, будет, профсоюзы хоть и про экономику, но неизбежно скатываются в политику. Так что будет про политику, но по минимуму и только для некоторых пояснений.

Глядя на очередную протестную вакханалию на хабре сорвался и не смог ей не увлечься. Сразу предупреждаю, что в профсоюзном деле практически полный ноль, но, похоже, чуть ли не все отписавшиеся в последних постах про Ngnix знают еще меньше.
Читать дальше →
Total votes 127: ↑101 and ↓26+120
Comments330

Как работают квантовые компьютеры. Собираем паззл

Reading time33 min
Views250K


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


А недавно ко мне подошли коллеги и спросили “Ты понимаешь как работает квантовый компьютер? Можешь нам рассказать?” И тут я понял, что проблема со складыванием в голове целостной картинки есть не только у меня.


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

Получилось или нет - решать, как обычно, вам.
Total votes 111: ↑111 and ↓0+111
Comments105

Шпаргалка по форматам файлов с данными в python

Reading time3 min
Views25K
Python понимает все популярные форматы файлов. Кроме того, у каждой библиотеки есть свой, «теплый ламповый», формат. Синтаксис, разумеется, у каждого формата сугубо индивидуален. Я собрал все функции для работы с файлами разных форматов на один лист A4, с приложением в виде примера использования в jupyter notebook.


Читать дальше →
Total votes 13: ↑10 and ↓3+9
Comments6

Схема разделения секрета Шамира

Reading time7 min
Views51K
Рассмотрим сценарий, когда необходимо обеспечить безопасность банковского хранилища. Оно считается абсолютно неприступным без ключа, который вам выдают в первый же день работы. Ваша цель — надёжно сохранить ключ.

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

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

Отчаявшись, вы уничтожаете дубликат и решаете разделить исходный ключ пополам. Теперь, вы думаете, два доверенных человека с фрагментами ключей должны физически присутствовать, чтобы собрать ключ и открыть хранилище. Это означает, что вору необходимо украсть два фрагмента, что вдвое труднее кражи одного ключа. Однако вскоре вы понимаете, что эта схема ненамного лучше, чем просто один ключ, потому что если кто-то потеряет половину ключа, полный ключ нельзя восстановить.
Читать дальше →
Total votes 72: ↑72 and ↓0+72
Comments22

Аппаратное шифрование DRAM уже близко. Чем оно грозит простым пользователям?

Reading time4 min
Views24K
Существует масса вариантов для шифрования дисков, разделов и отдельных документов. На случай компрометации одного устройства есть даже федеративное распределение ключа, где для доступа требуется участие нескольких сторон (см. схему разделения секрета Шамира). Опции шифрования файловой системы предлагают широкий выбор возможностей, которые можно считать стандартной практикой для защиты статичных данных.

Другое дело — данные в оперативной памяти. Они хранятся в открытом виде и так же открыто передаются между памятью и CPU. В виртуализированной среде, если злоумышленник нашёл способ считать память с соседних виртуальных машин, он может получить доступ к данным других VM на сервере. Физические атаки возможны путём копирования чипов памяти или перехвата данных на шине. Угроза ещё более серьёзная в случае постоянной памяти, где данные сохраняются даже после отключения питания.

Технологии шифрования RAM направлены на устранение некоторых из этих атак. Хотя есть опасения, что на персональных компьютерах проявятся неожиданные «побочные эффекты» — например, невзламываемый DRM.
Читать дальше →
Total votes 16: ↑15 and ↓1+21
Comments36

В сеть утекла документация по Windows 10X — новой версии ОС для устройств с двумя экранами

Reading time4 min
Views22K

Код операционной системы Windows 10X планируется дописать в начале 2020 года, а коммерческий запуск состоится осенью

Microsoft продолжает хранить в секрете подробности о Windows 10X — версии Windows 10, адаптированной для ноутбуков и планшетов с двумя экранами. Но теперь первая крупная утечка даёт общее понимание дизайна и цели разработки этой ОС, где будут на равных условиях работать нативные приложения Windows 10 и веб-приложения (PWA).

Скриншоты и описание опубликованы на сайте santorini-os.azurewebsites.net. Ссылку первым заметил пользователь WalkingCat aka @h0x0d. Информация с сайта уже удалена, но другой пользователь «Борис» aka @_milincic_ сохранил архив со скриншотами страниц.
Читать дальше →
Total votes 27: ↑26 and ↓1+25
Comments58

Самодельный ноутбук ZedRipper на шестнадцати Z80

Reading time11 min
Views44K
Статья с сайта безумного инженера-самодельщика Криса Фентона



Встречайте ZedRipper – 16-ядерного зверюгу, работающего на частоте 83 МГц на базе процессоров Z80 – настолько же портативного, насколько и непрактичного. Это моя самая свежая на сегодня попытка собрать компьютер ради прикола, причём удовлетворив сразу несколько желаний:
  • Использовать, наконец, гигантский FPGA, который валялся у меня без дела.
  • Поиграть в альтернативную историю создания компьютеров, подойдя к вопросу многозадачности с позиции железа.
  • Собрать компьютер, на котором я мог бы писать забавные короткие программки по пути на работу в поезде.
  • Собрать платформу, на которой можно было бы проводить относительно несложные эксперименты с компьютерной архитектурой.

Читать дальше →
Total votes 55: ↑53 and ↓2+75
Comments52

Как я на спор развернул двусвязный список за O(1)

Reading time7 min
Views71K

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

Вернее, не так.

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

  • Почему по умолчанию все решают задачу именно так?
  • Можно ли сделать лучше?
Читать дальше →
Total votes 157: ↑119 and ↓38+116
Comments125

Рукопожатие SSH простыми словами

Reading time7 min
Views40K
Secure Shell (SSH) — широко используемый протокол транспортного уровня для защиты соединений между клиентами и серверами. Это базовый протокол в нашей программе Teleport для защищённого доступа к инфраструктуре. Ниже относительно краткое описание рукопожатия, которое происходит перед установлением безопасного канала между клиентом и сервером и перед началом полного шифрования трафика.

Обмен версиями


Рукопожатие начинается с того, что обе стороны посылают друг другу строку с номером версии. В этой части рукопожатия не происходит ничего чрезвычайно захватывающего, но следует отметить, что большинство относительно современных клиентов и серверов поддерживают только SSH 2.0 из-за недостатков в дизайне версии 1.0.

Обмен ключами


В процессе обмена ключами (иногда называемого KEX) стороны обмениваются общедоступной информацией и выводят секрет, совместно используемый клиентом и сервером. Этот секрет невозможно обнаружить или получить из общедоступной информации.
Читать дальше →
Total votes 38: ↑38 and ↓0+38
Comments5

Опенсорсный чип OpenTitan заменит проприетарные корни доверия Intel и ARM

Reading time6 min
Views13K


Некоммерческая организация lowRISC при участии Google и других спонсоров 5 ноября 2019 года представила проект OpenTitan, который называет «первым опенсорсным проектом по созданию открытой, качественной архитектуры микросхем с корнем доверия (RoT) на аппаратном уровне».

OpenTitan на архитектуре RISC-V — микросхема специального назначения для установки на серверах в дата-центрах и в любом другом оборудовании, где нужно обеспечить аутентичность загрузки, защитить прошивку от изменений и исключить вероятность руткитов: это материнские платы, сетевые карты, маршрутизаторы, устройства IoT, мобильные гаджеты и др.

Конечно, подобные модули есть в современных процессорах. Например, аппаратный модуль Intel Boot Guard является корнем доверия в процессорах Intel. Он по цепочке доверия верифицирует подлинность UEFI BIOS перед загрузкой ОС. Но вопрос, насколько мы можем доверять проприетарным корням доверия с учётом того, что у нас нет гарантий отсутствия багов в дизайне, а проверить его нет возможности? См. статью «Доверенная загрузка Шрёдингера. Intel Boot Guard» с описанием того, «как годами клонируемая ошибка на производстве нескольких вендоров позволяет потенциальному злоумышленнику использовать эту технологию для создания в системе неудаляемого (даже программатором) скрытого руткита».
Читать дальше →
Total votes 35: ↑33 and ↓2+31
Comments10

Архитектурная шизофрения Facebook Libra

Reading time10 min
Views13K
Спустя два года я вернулся к блогу ради поста, который отличается от обычных занудных лекций о Haskell и математике. Последние несколько лет я занимался финансовыми технологиями в ЕС, и, кажется, пришло время написать на тему, которой технические СМИ уделили мало внимания.

Недавно Facebook выпустил то, что именует «новой платформой финансовых сервисов» под названием Libra. Она позиционируется как цифровая расчётная система, основанная на корзине международных валют, которые управляются на «блокчейне» и хранятся в денежном пуле, управляемом из Швейцарии. Цели проекта амбициозны и влекут масштабные геополитические последствия.

В Financial Times и New York Times много разумных статей о необоснованных денежных и экономических предположениях в основе предлагаемой финансовой системы. Но не хватает специалистов, способных на анализ с технической точки зрения. Не так много людей работают над финансовой инфраструктурой и публично говорят о своей работе, поэтому данный проект не слишком освещён в технических СМИ, хотя его внутренности открыты для всего мира. Я имею в виду открытые исходники в репозиториях Libra и Calibra Organisation.

То, что открыто миру — это архитектурно шизофренический артефакт с претензией на роль безопасной платформы для мировой платёжной инфраструктуры.
Читать дальше →
Total votes 32: ↑30 and ↓2+28
Comments38

Советские супергерои, чешские козявки и австралийский клон

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

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

image

У журнала есть четко фиксированный день рождения — 24 сентября 1956 года. В этот день увидел свет первый номер журнала «Веселые картинки» — первого советского журнала для дошкольников.

Счастливым (и многодетным) отцом было постановление партии и правительства «О развитии детской литературы и детской периодики», вышедшее в начале 1956 года. Через несколько месяцев после его появления количество детских журналов в стране удвоилось — уже в сентябре в компанию к «Мурзилке», «Пионеру» и «Костру» добавились «Юный техник», «Юный натуралист» и «Веселые картинки», выпустившие свои первые номера.
Читать дальше →
Total votes 133: ↑125 and ↓8+117
Comments96

Внедряем Sign in with Apple — систему авторизации от Apple

Reading time6 min
Views51K
Привет, Хабр!

Этим летом на конференции WWDC 2019 Apple представила собственную систему авторизации Sign in with Apple  и сделала ее обязательной для всех приложений в App Store, которые используют вход через соцсети. Исключение составляют образовательные, корпоративные, правительственные и бизнес-приложения, использующие собственную авторизацию. К Sign in with Apple Apple сделала качественную документацию, и в этой статье мы на примере ЦИАН расскажем, как внедрить ее в свой сервис.


Читать дальше →
Total votes 34: ↑34 and ↓0+34
Comments10

«Прочту потом»: трудная судьба оффлайновой коллекции интернет-страничек

Reading time9 min
Views25K

Есть виды софта, без которого одни люди жить не могут, а другие даже не представляют, что такое существует и кому-то вообще нужно. Для меня долгие годы такой программой был Macropool WebResearch, позволявший сохранять, читать и организовывать интернет-страницы в некое подобие оффлайновой библиотеки. Уверен, многие из читателей прекрасно обходятся коллекцией ссылок или комбинацией браузера и папки с набором сохранённых документов. Мне же хотелось бы иметь возможность хотя бы отмечать документы как "прочитанные" или "избранные", быстро переходить от одного текста к другому и не зависеть от доступности интернета или конкретного сайта. Бывает, что читать есть время ровно тогда, когда интернета нет (в дороге, например), да и ссылки, к сожалению, нередко оказываются недолговечными.

Читать дальше →
Total votes 68: ↑67 and ↓1+66
Comments113
1
23 ...

Information

Rating
Does not participate
Location
Екатеринбург, Свердловская обл., Россия
Date of birth
Registered
Activity