Решение одной из задач по реверс инжинирингу сишного бинарника.
Code for Bro
Code for Bro
Графики
📊 Средний охват постов
📉 ERR % по дням
📋 Публикации по дням
📎 Типы контента
Лучшие публикации
20 из 20https://habr.com/ru/articles/758542/
Реализацию интерфейса для перечисления и зацикленного перечисления на Rust: // Объявляем модуль cursor, что бы скрыть лишние подробности реализации. mod cursor { // Характеристика Bounded вводить 2 функции, которые позволяют понять какие // максимальные и минимальные значения могут быть у типа. pub trait Bounded where Self: Sized, { fn max_value() -> Self; fn min_value() -> Self; } // Характеристика Enumeration, которая вводить функции получения следующего // и предыдущего значений. pub trait En...
Я сегодня понял, что такое HKT (high kind types). Вот представь, у нас есть Functor (математическая абстракция) - это что-то вроде интерфейса, который описывает, как конкретному типу нужно реализовать функцию fmap (часть этого функтора), что бы всё работало: instance Functor f where fmap :: (a -> b) -> f a -> f b Тут нужно понять, что есть некий тип f, который реализует Functor и у него надо реализовать функцию fmap, которая принимает на вход 2 аргумента: 1. функцию из a в b (a -> b). 2. собстве...
Сижу, читаю книгу Брагилевского "Haskell in Depth" и вот он предлагает самостоятельно разобраться в такой функции rotateMany: -- Сам пример показывает, как могла бы выглядеть -- программа для управления радаром. -- Есть тип Direction, описывающий на какие стороны -- может быть ориентирован радар. data Direction = North | East | South | West deriving (Eq, Enum, Bounded, CyclicEnum, Show) -- Поворот Радара: -- TNone - нет поворота -- TLeft - налево -- TRight - направо -- TAround - вокруг, два раза...
Зацени модуль. Он предоставляет абстрактный класс, читай интерфейс, который обязывает дочерний класс реализовать метод _get_pagination, который выполняет основную логику по получению из СУБД данных об объектах, при этом есть публичный context, который использует _get_url для формирования URL и _get_pagination для получения объектов: from abc import ABC, abstractmethod from typing import Dict, Any, Optional from flask import url_for from flask_sqlalchemy import Pagination Settings = Dict[str, Any...
Смотри, какую прелесть получилось реализовать: #[derive(PartialEq, Eq, Clone, Debug)] pub struct ListNode { pub val: i32, pub next: Option<Box<ListNode>> } type PackedList = Option<Box<ListNode>>; impl ListNode { #[inline] fn new(val: i32) -> Self { ListNode { next: None, val } } } pub fn merge_k_lists(mut lists: Vec<PackedList>) -> PackedList { if lists.len() == 0 { return None; } while lists.len() > 1 { let list1 = lists.pop().flatten(); let list2 = lists.pop().flatten(); let list3 = merge_2_l...
Программа на Хаскелл, которая генерирует список в обратном порядке, а потом сортирует его с помощью быстрой сортировки и печатает на экран: main :: IO () main = putStrLn . show . qsort $ [10,9..0] qsort :: (Ord a) => [a] -> [a] qsort [] = [] qsort…
Как взглянуть на композицию функций по другому? Представим, у нас есть http запрос, который с сервера возвращает JSON и нам надо этот json проверить в рамках тестирования и получить конкретные данные из него. Предположим, что конвейер будет такой: request | expect | get_data Такую конструкцию можно изобразить с помощью декоратора Python: - Внизу будет функция show_data_from_server_by_id, которая будет принимать объект HTTP клиента и идентификатор объекта и возращать JSON. - Следующий декоратор e...
Как повысить надёжность этого кода: soar_api = SOARAPI("$<api_proto>", "$<api_ip>", "$<api_port>", "#<token>", "$<api_system>") Если у нас в "$<api_system>" ничего не будет, значит это пустая строка "", что, как мне кажется, приведёт к ошибке создания объекта. Можно воспользоваться функцией-фабрикой и аргументами с дефолтным значением и контроллировать, какие аргументы ты передаёшь: # т.к. не знаю API, то подставляю значения на угад. def create_soar_api(ip, port=443, pro...