Search
Write a publication
Pull to refresh
-2
0

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

Send message

Книга «Время UNIX. A History and a Memoir»

Reading time5 min
Views5.2K
image Привет, Хаброжители! Операционная система Unix завоевала мир, чего совсем не могли представить ее создатели, творя историю на последнем этаже Bell Labs в 1969 году. Идея этой ОС оказала колоссальное влияние на разработку программного обеспечения и развитие операционных систем. Вы узнаете о том, как зарождалась система Unix, чем она примечательна и почему занимает столь важное место в компьютерном мире, а также об удивительных людях, вложивших в нее силы и душу. Книга представляет собой честный и остроумный рассказ о жизни айтишного сообщества тех времен — никакой зауми, страниц кода и ссылок. Расслабьтесь и получайте удовольствие, погрузившись в историю, полную приключений и открытий.

Брайан Керниган — автор и соавтор дюжины книг по программированию, включая легендарные «Язык программирования Си» и «Unix. Программное окружение». На протяжении 30 лет был членом той самой группы UNIX в исследовательском центре Bell Labs и не только наблюдал создание UNIX.
Читать дальше →

Принципы объектно-ориентированного программирования

Reading time3 min
Views136K
Привет, Хабр! Меня зовут Владислав Родин. В настоящее время я являюсь руководителем курса «Архитектор высоких нагрузок» в OTUS, а также преподаю на курсах, посвященных архитектуре ПО.

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



Введение


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

Вообще устроено все следующим образом: есть само объектно-ориентированное программирование. У него есть принципы. Из принципов объектно-ориентированного программирования следуют разобранные нам шаблоны GRASP (как вариант — SOLID принципы), из которых, в свою очередь, следуют шаблоны GoF. Из них же следует ряд интересных вещей, например, enterprise паттерны.
Читать дальше →

Как украсть со счета деньги, которых у вас не было?

Reading time9 min
Views15K

Прошу не судить строго - ролик записывался на эмоциях, под влиянием разбудившего меня сегодня звонка от друга, чья семья попала более чем на 1 000 000 рублей кредита (его видимо придется отдавать), и которым я, как выяснилось, несмотря на место работы, вряд ли чем-то смогу помочь - и чтобы хоть как-то успокоить свою злость, я решил хотя бы предупредить других. Немного позже выяснилось, что потерпевших от это схемы, уже закрепившейся в анекдотах и казалось бы мелькающей на демотиваторах в соцсетях, только в среде моих знакомых несколько - и это только те, кто не стыдится рассказать об этом. Схема проста: звонок -> установка трояна -> получение кредита -> вывод денег через банкомат руками самого держателя банковской карты -> пересылка на "защищенный счет". Если вы считаете, что вы, ваши родители и близкие, на 100% защищены от данной схемы, дальше можно не смотреть.

Стенограмма

Небольшое вступление.

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

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

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

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

Читать далее

Цвет в современных фильмах

Reading time11 min
Views108K

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

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

Давайте разбираться, почему же в кино цветовая палитра сводится к нескольким конкретным цветам, а не представляет полный спектр. Хочу заметить, что всё нижеупомянутое применимо и к современным играм.
Читать дальше →

Разбираемся с системными вызовами в Linux с помощью strace

Reading time10 min
Views47K
Перевод статьи подготовлен специально для студентов базового и продвинутого курсов Administrator Linux.





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

В операционной системе можно выделить два режима работы:

  • Режим ядра (kernel mode) — привилегированный режим, используемый ядром операционной системы.
  • Пользовательский режим (user mode) — режим, в котором выполняется большинство пользовательских приложений.

Пользователи при повседневной работе обычно используют утилиты командной строки и графический интерфейс (GUI). При этом в фоне незаметно работают системные вызовы, обращаясь к ядру для выполнения работы.
Читать дальше →

Наследование реализации в С++. Реальная история

Reading time9 min
Views8.1K
Привет, Хабр!

В поисках вдохновения, чем бы пополнить портфель издательства на тему С++, мы набрели на возникший словно из ниоткуда блог Артура О'Дуайера, кстати, уже написавшего одну книгу по C++. Сегодняшняя публикация посвящена теме чистого кода. Надеемся, что вам будут интересны как сам кейс, так и автор.
Читать дальше →

Охотничьи зоонозы: когда утка опасней ружья

Reading time19 min
Views35K
Представьте такую картину. Вы сезелень, гордый и своенравный, со своими планами на жизнь, женой-уткой, парой яичек там, парой сям (о которых жена не знает), и двумя своими под хвостом. Ваша жизнь это полеты, небо, пруды, бабульки, батоны и климат. Летом вы в Москве весело крякаете среди засранных лужиц, любуясь бордюрами, подбираете недоеденные жвачки, жрете на спор хот-доги в парках, охотитесь за рожками из-под мороженного и путаетесь в использованных тканевых масках. Осенью вы летите в Турцию через страны Восточной Европы. В Стамбуле гораздо теплее, чем в Москве, там можно нарезать круги вокруг донерных, летать среди окрестных холмов, нюхая запахи кебабов. У вас от такой жизни нет-нет, да и понос, паразиты, клещи, иногда вы кашляете птичьим гриппом на надоедливых туристов с детьми. Ну а что поделать — глобализация. Короче, вы виду не подаете, но в душе сами знаете, что вы птица уже давно помоечная, а никакая не гордая перелетная гусиная. И ладно вы тут, в центральной части России, а не за Уралом. Те вообще в Китай летают.

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

SQL HowTo: ломаем мозг об дерево — упорядочиваем иерархию с рекурсией и без

Reading time10 min
Views9.5K
Видимо, это осень так влияет, что за последний месяц на PostgreSQL уже и в «Морской бой» играли, и «Жизнь» Конвея эмулировали… Что уж оставаться в стороне! Давайте и мы потренируем мозг в реализации нетривиальных алгоритмов на SQL.

Тем более, сегодняшняя тема родилась из обсуждения моей же статьи «PostgreSQL Antipatterns: «Бесконечность — не предел!», или Немного о рекурсии», где я показал, как можно заменить рекурсивное чтение иерархичных данных из таблицы на линейное.

Прочитать-то мы прочитали, но ведь чтобы для вывода упорядочить элементы дерева в соответствии с иерархией, уж точно придется воспользоваться рекурсией! Или нет? Давайте разберемся, а заодно решим на SQL пару комбинаторных задач.

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

Всё, что вы хотели знать о безопасном сбросе паролей. Часть 2

Reading time11 min
Views8.2K

Двухфакторая аутентификация


Всё прочитанное вами в первой части касалось идентификации на основании того, что знает запрашивающий. Он знает свой адрес электронной почты, знает, как получить к ней доступ (т.е. знает свой пароль от электронной почты) и знает ответы на секретные вопросы.

«Знание» считается одним фактором аутентификации; двумя другими распространёнными факторами являются то, что у вас есть, например, физическое устройство, и то, кем вы являетесь, например, отпечатки пальцев или сетчатка глаза.


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

Как построить диаграмму на Python

Reading time6 min
Views24K

Каждый, кому хоть раз приходилось строить диаграммы в draw.io или Google Diagrams, помнит всю утомительность и медлительность этого процесса. Сегодня делимся с вами материалом, в котором шаг за шагом показывается, как можно строить красивые архитектурные диаграммы с помощью Python. Главное удобство — встроенные узлы для обозначения сервисов и языков программирования. Только код и никакой мыши.
Приятного чтения!

Думай как инженер: 4 способа находить нестандартные решения

Reading time8 min
Views25K

В работе и быту нам часто приходится сталкиваться с проблемами, которые заводят в тупик, хотя кажется, что их решение лежит где-то на поверхности. «Эх, мне бы сейчас чужие мозги», — думаете вы. К счастью, операция необязательна, достаточно использовать МФО, РВС, детский язык и маленьких человечков! Не переживайте, это научно подкрепленные методы, которые заставляют мозг работать иначе. Вместе с ведущими телеграм-канала Креативность 101 разбираемся с феноменом инерции мышления и преодолеваем психологические барьеры.
Вот как это делается

Сборка недорогой домашней NAS-системы на Linux

Reading time7 min
Views97K


Я, как и многие другие пользователи MacBook Pro, столкнулся с проблемой недостачи внутренней памяти. Если говорить точнее, то используемый мной ежедневно rMBP был оснащен SSD объемом всего 256GB, чего, естественно, надолго не хватало.

А когда я плюс ко всему стал записывать видео во время своих полетов, ситуация только усугубилась. Объем заснятых материалов после таких полетов составлял 50+ GB, и мой несчастный SSD на 256GB очень скоро заполнился, вынудив меня приобрести внешний диск на 1TB. Тем не менее, спустя один год, и он перестал справляться с генерируемыми мной объемами данных, не говоря уже о том, что недостаток избыточности и резервного копирования делали его неподходящим для размещения важной информации.

Итак, в один момент я решил собрать NAS большого объема в надежде, что эта система продержится хотя бы пару лет, не требуя очередного апгрейда.

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

Самый маленький офисный пакет в мире

Reading time8 min
Views36K


Всем нам знаком традиционный офисный пакет — текстовый редактор, электронные таблицы, программа для создания презентаций, возможно, приложение для создания диаграмм или заметок. Всё это мы видим в Microsoft Office и в Google Docs. Все эти программы мощны и объёмны. Но каким будет минимальное количество кода, требуемое для создания офисного пакета?
Читать дальше →

Почему так сложно извлекать текст из PDF?

Reading time7 min
Views30K
Перевод статьи с сайта компании FilingDB, составляющей базу данных из документации европейских компаний

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

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

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

Linux kernel development для самых маленьких

Reading time9 min
Views39K


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

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

Приключение чисел в ASCII-ландии. Часть 0x01u. Беззнаковые целые числа

Reading time14 min
Views6.7K


Думаю, с переводом чисел в ASCII строки в своей жизни сталкивался каждый программист. В свое время для меня было удивительно узнать, что перевод десятичной цифры в равнозначный ASCII символ – операция сложения. С этим знанием я ложился спать, и с этим же знанием я бодро просыпался утром. Но однажды я задал себе вопрос – а как переводятся числа с плавающей запятой: Float или Double!? С этого момента, сна в моей жизни, а тем более крепкого и спокойного – стало меньше. Уверен, не я один задавался этим вопросом, и более того, не я один нашел ответ на оный. Но я думаю, есть те, кто заблудился, те, кто до сих пор неровно дышит от полного непонимания, что же происходит под капотом этих ваших трансляторов, компиляторов и прочего-прочего. Более того, не только полное отсутствие знаний в трансляции чисел нарушало мое психическое равновесие: люди, услышавшие мои душевные страдания, кидали сомнения в нужности и полезности этого знания. Мне говорили так: “Ну раскроешь ты завесу тайны, а дальше то что?! Напишешь свой велосипед, который будет работать в сто раз медленнее?! Иди ка ты, Ваня, асфальт укладывай, а мы тут великим займемся – вон, JSON пришел, надо еще подумать, как его переложить...”. Я же, парировал: “Нет, я напишу мотоцикл! Он будет быстр как Ямаха, а его рев будет устрашать даже матерых программистов!”.
Читать дальше →

Эффектное программирование. Часть 1: итераторы и генераторы

Reading time5 min
Views11K
Javascript на данный момент является самым популярным языком программирования по версиям многих площадок (например Github). Является ли при этом он самым продвинутым или самым любимым языком? В нём отсутствуют конструкции, которые для других языков являются неотъемлемыми частями: обширная стандартная библиотека, иммутабильность, макросы. Но в нём есть одна деталь, которая не получает, на мой взгляд, достаточно внимания — генераторы.

Далее читателю предложена статья, которая, в случае положительного отклика, может перерасти в цикл. В случае успешного написания мной этого цикла, а Читателем его успешного освоения, про следующий код будет понятно не только то, что он делает, но и как устроен под капотом:

while (true) {
    const data = yield getNextChunk(); // вызов асинхронной логики
    const processed = processData(data);
    try {
        yield sendProcessedData(processed);
        showOkResult();
    } catch (err) {
        showError();
    }
}

Это первая, пилотная часть: Итераторы и Генераторы.
Часть 2
Читать дальше →

Варианты аппаратной реализации USB Type-C, или Когда не требуется Power Delivery

Reading time6 min
Views29K


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

В своих устройствах мы не могли пройти мимо интерфейса USB-C. Помимо того, что он очень популярен в современных девайсах, он серьёзно расширил функциональность USB по сравнению со своими предшественниками. Давайте расскажу о нём поподробнее.
Читать дальше →

Системный таймер в Windows: большое изменение

Reading time8 min
Views39K
Поведение планировщика Windows значительно изменилось в Windows 10 2004 без каких-либо предупреждений и изменения документации. Вероятно, это поломает несколько приложений. Такое происходит не первый раз, но эта перемена посерьёзнее.

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

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

Сыграем в DOOM на серверах

Reading time4 min
Views15K


У меня возникла безумная идея – это сыграть в классический DOOM по сети установленный на VPS под управлением Windows. В целом, это задумывалось как тестирование новых фич, которые мы внедряем: клонирование серверов и разворачивание локальной сети. Да, и на самом деле, это круто сыграть в DOOM прямо на серверах, особенно после просмотра баек от Джона Ромеро было невозможно не поиграть в легенду компьютерных игр.
Давайте посмотрим, что же из этого получилось, с какими проблемами столкнулся и как их решили.
Читать дальше →

Information

Rating
Does not participate
Location
Томская обл., Россия
Registered
Activity