Обновить
14
0

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

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

Пять знаменитых цитат о программировании с объяснениями

Время на прочтение8 мин
Охват и читатели21K


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

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

Функциональное программирование — то, что вам (наверно) рассказывали. Если вы слушали

Время на прочтение16 мин
Охват и читатели32K
Мне нравятся разговоры на тему «мне раньше в школе/институте/родители говорили, а теперь я узнал». Если по счастливой случайности я оказываюсь хоть немного компетентен в обсуждаемом вопросе, то такие разговоры обычно сводятся к одному из трех вариантов: «где вообще ты раньше слышал такую чушь?» (если собеседник прав), «а с чего ты взял, что это так?» (если он не прав) и «ты прав, только это не противоречит тому, что тебе говорили раньше» (в подавляющем большинстве случаев). Нравятся такие разговоры мне по следующей причине: обычно их инициатор не обременен излишним предварительным знанием вопроса, что в некоторых случаях позволяет ему указать на некоторые моменты, которые принимались как очевидные, на самом деле таковыми не являясь. И одной из тем для подобных бесед оказалось функциональное программирование.

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

Насколько это соответствует истине?
Читать дальше →

Snoop Project невероятный инструмент интернет разведки, которого пользователи рунета ждали так долго — доступен

Время на прочтение5 мин
Охват и читатели91K
image

На Github-e выложен OSINT-инструмент, заточенный (в том числе) для поиска %username по СНГ локации


【Статья обновлена】в связи с развитием функционала Snoop Project.
Если вам до боли знаком такой софт, как namechk или spiderfoot, то «Snoop Project» вас явно порадует, он даёт «им» фору вместе взятым и это не желтый заголовок «Статья вечерняя» — это реальная «forensic-работа» по цифровым следам в киберпространстве…
Читать дальше →

Зависимые типы в Haskell: почему это будущее разработки программного обеспечения

Время на прочтение15 мин
Охват и читатели17K


В Serokell мы занимаемся не только коммерческими проектами, но стараемся изменить мир к лучшему. Например, работаем над улучшением главного инструмента всех хаскелистов – Glasgow Haskell Compiler (GHC). Мы сосредоточились на расширении системы типов под впечатлением от работы Ричарда Айзенберга "Зависимые типы в Haskell: теория и практика".


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

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

Забудьте о гомоморфном шифровании: теперь у нас есть функциональное шифрование

Время на прочтение6 мин
Охват и читатели12K


Слышали ли вы о функциональном шифровании (ФШ)? Возможно, вы слышали о нём, и для себя поставили его в один ряд с гомоморфным шифрованием, что не совсем неверно, но и не до конца правильно.

Давайте сегодня с вами посмотрим на то, что такое ФШ, разберём пару примеров и то, чем оно отличается от полностью гомоморфного шифрования (ПГШ).

Давайте для начала определимся, что мы имеем в виду, говоря про ФШ. Совсем недавно, в 2010 году, Дэн Боне, Амит Сахай и Брент Уотерс формализовали понятие ФШ. Примерно ФШ можно описать так: это схема шифрования с публичным ключом, где разные ключи для расшифровки позволяют пользователю узнавать об определённых функциях зашифрованных данных.
Читать дальше →

Быстрый поиск источника нежелательных мутаций свойства объекта

Время на прочтение4 мин
Охват и читатели2.3K
Привет! Cегодня расскажу, как можно с помощью отладчика решить, на мой взгляд, нетривиальную проблему JavaScript.

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

Часто такое поведение искажает данные пользователя, приводит к ошибкам и является нежелательным.

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

Почему я отказался от Google Maps API

Время на прочтение7 мин
Охват и читатели39K
TL;DR Недавние изменения в модели ценообразования, мягко говоря, безумны.

Когда я в 2012 году запустил NUKEMAP, у Google Maps были просто потрясающие программные интерфейсы. Абсолютно лучшие API для создания картографических мэшапов на JavaScript, практически бесплатные, с активным сообществом разработчиков, которое регулярно добавляло новые функции. На самом деле создавалось впечатление, что компания заинтересована в людях, которые используют их продукт для создания крутых, полезных инструментов.


Старые версии NUKEMAP: слева оригинальная версия от марта 2005 года на скриншотах MapQuest (она была чрезвычайно ограничена и никогда не публиковалась), полностью на PHP. Я разработал её для личного пользования и обучения. Справа переделанный NUKEMAP от 2012 года на Google Maps API и Javascript.

Сегодня изменилось почти всё. В кодовую базу API практически перестали добавлять реально полезные функции (многие классные фичи были удалены или тихо устарели; добавляемые новые функции, как правило, инкрементальные или примитивные). Это действительно весьма примечательный факт, поскольку на свой собственный веб-сайт Google Maps они добавили много классных штук, например, режим 3D. Но в API их не портировали.
Читать дальше →

Изучение нейтрино привело к неожиданному открытию в математике

Время на прочтение9 мин
Охват и читатели40K

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




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

Формула «выглядела слишком хорошо, чтобы быть правдой», сказал Тао, профессор из Калифорнийского университета в Лос-Анджелесе, лауреат Филдсовской премии, один из ведущих математиков мира. «Нечто настолько короткое и простое уже давно должно было оказаться в учебниках, — сказал он. – Поэтому сначала я подумал – нет, этого не может быть».

А потом он подумал ещё немного.
Читать дальше →

Новое достижение в криптографии — факторизация 795-битного числа RSA

Время на прочтение4 мин
Охват и читатели12K
2 декабря 2019 года в рассылке по теории чисел nmbrthry@listserv.nodak.edu сообщили о факторизации числа RSA-240 (240 десятичных знаков, 795 бит). Это новое достижение в криптографии и теории чисел и очередное выполненное задание из списка RSA Factoring Challenge.

Вот число и его множители:

RSA-240 = 124620366781718784065835044608106590434820374651678805754818788883289666801188210855036039570272508747509864768438458621054865537970253930571891217684318286362846948405301614416430468066875699415246993185704183030512549594371372159029236099
= 509435952285839914555051023580843714132648382024111473186660296521821206469746700620316443478873837606252372049619334517
* 244624208838318150567813139024002896653802092578931401452041221336558477095178155258218897735030590669041302045908071447

Исходя из текущего тренда можно примерно представить, когда будут взломаны RSA-1024 (309 десятичных знаков) и RSA-2048 (617 знаков).
Читать дальше →

Фрактальное сжатие изображений

Время на прочтение7 мин
Охват и читатели15K
image

Пару лет назад я написал очень простую реализацию фрактального сжатия изображений для студенческой работы и выложил код на github.

К моему удивлению, репозиторий оказался довольно популярным, поэтому я решил обновить код и написать статью, объясняющую его и теорию.
Читать дальше →

Функциональное программирование — это не то, что нам рассказывают

Время на прочтение17 мин
Охват и читатели133K

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



Хотя люди обычно признают удобства ФП фич, ведь намного приятнее писать:


int Factorial(int n)
{
    Log.Info($"Computing factorial of {n}");
    return Enumerable.Range(1, n).Aggregate((x, y) => x * y);
}

чем ужасные императивные программы вроде


int Factorial(int n)
{
    int result = 1;
    for (int i = 2; i <= n; i++)
    {
        result *= i;
    }
    return result;
}

Так ведь? С одной стороны да. А с другой именно вторая программа в отличие от первой является функциональной.


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

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

Применение зашифрованных данных для машинного обучения без их расшифровки

Время на прочтение17 мин
Охват и читатели12K

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

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

Прямой VPN-туннель между двумя компьютерами находящимися за NAT провайдеров с использованием UDP hole punching

Время на прочтение11 мин
Охват и читатели85K
Статья о том, как мне удалось организовать прямой (точка-точка) VPN-туннель между двумя компьютерами, каждый из которых находился за NAT'ом провайдеров, при помощи VPS и простых скриптов, используя стандартные утилиты Linux, без каких-либо настроек сетевого оборудования.
Читать дальше →

Обсуждаем PostgREST — open source веб-сервер на Haskell

Время на прочтение3 мин
Охват и читатели18K
Рассказываем об инструменте, который позволяет настроить API для работы с запросами PostgreSQL. Говорим о возможностях, достоинствах и недостатках утилиты, а также об альтернативных решениях.

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

Кейлоггер с сюрпризом: анализ клавиатурного шпиона и деанон его разработчика

Время на прочтение7 мин
Охват и читатели23K

В последние годы мобильные трояны активно вытесняют трояны для персональных компьютеров, поэтому появление новых вредоносных программ под старые добрые «тачки» и их активное использование киберпреступниками, хотя и неприятное, но все-таки событие. Недавно центр круглосуточного реагирования на инциденты информационной безопасности CERT Group-IB зафиксировал необычную фишинговую рассылку, за которой скрывалась новая вредоносная программа для ПК, сочетающая в себе функции Keylogger и PasswordStealer. Внимание аналитиков привлекло то, каким образом шпионская программа попадала на машину пользователя — с помощью популярного голосового мессенджера. Илья Померанцев, специалист по анализу вредоносного кода CERT Group-IB рассказал, как работает вредоносная программа, чем она опасна, и даже нашел ее создателя — в далеком Ираке.
Читать дальше →

Ваш выход, граф: как мы не нашли хороший сетевой граф и создали свой

Время на прочтение13 мин
Охват и читатели6.3K


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

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

Дмитрий Волков, CTO Group-IB и глава направления киберразведки
Читать дальше →

Вывод модели динамической системы дискретного фильтра Калмана для произвольной линейной системы

Время на прочтение8 мин
Охват и читатели7.2K
Фильтр Калмана (ФК) является оптимальным линейным алгоритмом фильтрации параметров динамической линейной системы при наличии неполных и зашумленных наблюдений. Этот фильтр находит широкое применение в технических системах управления до оценок динамики изменения макроэкономических ситуаций или общественного мнения.

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

Как вредоносы обходят песочницы с помощью Visual Basic

Время на прочтение5 мин
Охват и читатели11K
Мы в JSOC CERT ежедневно сталкиваемся с событиями из разных песочниц, которые функционируют в составе AntiAPT-решений наших заказчиков и пропускают через себя тысячи файлов из web- и почтового трафика. Стоит отметить, что современные Sandbox-системы в своем развитии ушли намного дальше, чем простой перехват системных вызовов в Kernel Mode и API-функций в User Mode. Все чаще в них используются собственный гипервизор, система эмуляции пользовательской активности, динамическая инструментация, хэширование и кластеризация по участкам кода, анализ покрытия кода и т.д. Такое разнообразие технологий создает иллюзию, что если какой-то файл не отработал в песочнице и не показал свое «истинное лицо», то это наверняка APT или инновационная технология обнаружения виртуального окружения, о котором ИБ-сообществу еще не известно. Но…

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

Решаем задачи Яндекс.Интервью в функциональном стиле

Время на прочтение12 мин
Охват и читатели26K

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


Зарегистрировавшись в системе, моё внимание сразу привлекла возможность решать задачи на Haskell. Дело в том, что я хоть и увлекаюсь программированием на этом языке, но не продвинулся дальше реализации задач из различных курсов образовательных on-line платформ. Решив, что их решение может оказаться интересным вызовом и повысит мой уровень, как разработчика, я приступил к их решению.


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

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

Алексей Савватеев: Модели интернета и социальных сетей

Время на прочтение8 мин
Охват и читатели14K
«Единственный смысл существование экономики — это воодушевление математиков на новые подвиги.»

image

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

И в интернете, и в биологии соцсети проявляют свойства, которые по отдельности описываются моделями, но все вместе — ставят в тупик современную математику. Савватеев утверждает, что «тот, кто с этим разберется получит Нобелевскую премию». Будущее будет зависеть от способности работать с сетями.

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

Информация

В рейтинге
5 606-й
Зарегистрирован
Активность