Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Идея создания операционной системы пришла как-то сама собой, и, недолго думая, я решил сделать несколько набросков иконок для будущей ОС
что в C#, что C++ отсутствует большинство необходимых мне функций для старта написания софта, а если они и есть, то реализованы не для людей.
Отсутствует сериализация массивов в строку
отсутствуют алгоритмы хеширования SHA2 и MD5
адекватное интегрированное Internet API для осуществления элементарных GET и POST запросов
Вы, наверное, JSON имеете в виду? JavaScriptSerializer (хотя Json.net лучше, не зря более поздние версии на него перешли).
Серьезно?
MD5, SHA256, SHA384, SHA512.
HttpClient.
Нет, я имею в виду именно массивы, а также сериализацию классов и функций.
Неадекватная библиотека
чтобы выполнить простую задачу, нужно проделать туеву хучу операций
Она имеет слишком много схожих методов с крайне непродуманными названиями и аргументами,
Если вам нужна сериализация в бинарный поток — то берите встроенную. Если в строку, то вам придется выбрать формат. Чем JSON хуже других?
Аргументы в студию
Не хочу я ничего выбирать, мне необходима функция toString(class/array/function), выводящая содержимое аргумента в строку C#-кода.
Я высказал свою позицию, что лично мне не нравится эта либа,
Зачем?
Это не «мне не нравится».
Вот же ж упорный человек, а? Потому что нужно.
Именно по перечисленным вами моим высказываниям данная либа мне не нравится.
Это неправильная постановка задачи.
Нет, не годится. Не либа (омг, в .net вообще нет такого понятия) сложна в освоении, а вы не осилили ее освоить. Чувствуете разницу?
Требуется функция, конвертирующая класс, массив или функцию в строку, и возвращающая эту строку.
Что ж тут неправильного и непонятного?
А разницы не чувствую, ибо не освоить что-то можно лишь по одной причине: осваиваемый объект создает искусственные трудности в освоении
Любой объект можно создать универсальным, чтобы его суть понял даже конченный дебил с задержками в развитии
Собственно, в случае с HttpClient мы имеем второй вариант. Говно-либа, неудобная в использовании.
Ох. Как вы себе представляете конверсию в строку класса или функции?
void funkcia()
{
print("bla-bla");
}
string stroka = toString(funkciya)
string stroka = toString(funkciya)
void funkcia() { print("bla-bla"); } string stroka = toString(funkciya)
А как именно? Что ж, меня это не особо волнует
Action funkcia = () => {Console.WriteLine("bla-bla");};
string stroka = funkciya.ToString();
в опенкомпах из поста есть стандартная либа для сериализации таблиц и функций
А примеры касательно Http мне лень приводить
А, это легко.
Кстати, а можно ссылочку на эту «стандартную либу»?
Подозреваю, что и с его освоением было то же самое — лень разбираться, проще говном назвать.
Что за глупости? Мне нужен не результат выполнения функции
Качайте мод на майн, ставьте OpenOS, смотрите апи serialization, находится в папке lib.
реализовать ее легко даже с базовыми знаниями Lua
Если либа трудна в освоении по сравнению с остальными либами, идущими вместе с данной либой в комплекте, то данная либа является говном.
вы про понятие essential complexity не слышали
Кому-то вот принципиально не даются указатели — это же не значит, что указатели говно.
забавная статья
Вам нравится этот HttpClient, мне нет. В чем проблема-то?
Я не знаю, о какой статье вы говорите
Вот в этом утверждении: «система является скучным говном, как правило, с кучей модульных функций». Вы продолжаете не видеть разницы между «я не осилил» и «система — говно».
Вы выписываете термин из довольно изестной статьи, и не знаете, о чем я говорю?
Мне она неудобна в использовании, поэтому перешел на более простую версию с двумя методами, соответствующую моим требованиям.
void funkcia() { print("bla-bla"); } string stroka = toString(funkciya)
Качайте мод на майн, ставьте OpenOS, смотрите апи serialization, находится в папке lib. Очень простая и лаконичная библиотека, проходящаяся через цикл по структуре массива или функции, реализовать ее легко даже с базовыми знаниями Lua, ну, и при условии, что вы умеете юзать регулярки. Правда, она не совсем оптимизирована в плане расхода на память, т.к. использует быдлокодерскую конкатенацию строк, но в целом понять ее суть легко.
serialization.serialize(value: any except functions[, pretty:boolean]): string
Эта реализация и есть то, о чем я говорю.
Ну, а если запихнуть в нее число или просто строку, то она выдаст nil, т. е. ничего.
elseif t == "number" then
if v ~= v then
return "0/0"
elseif v == math.huge then
return "math.huge"
elseif v == -math.huge then
return "-math.huge"
else
return tostring(v)
end
elseif t == "string" then
return string.format("%q", v):gsub("\\\n","\\n")
Функции также сериализуются в виде строки,
else --отдельного обработчика для function нет
if pretty then
return tostring(t)
else
error("unsupported type: " .. t)
end
end
tostring от функции, то есть строчка приблизительно вот такого вида: «function: 0xb0bf00» (или вы хотите сказать, что OpenComputers переопределяет tostring для функций?). Если pretty выключен, будет ошибка. Никакой сериализации тела функции в этом апи нет.В любом случае, эта либа — именно то, чего мне не хватало в шарпе, на этом и покончим.
Иными словами, если включен pretty, то вернется tostring от функции
{["privet"] = 123, ["hello"] = {["test"] = 12}}
{
["privet"] = 123,
["hello"] = {
["test"] = 12
}
}
Иными словами, если включен pretty, то вернется tostring от функции
Товарищ, вы хотя бы потестировали либу для начала вместо анализа ее кода. Аргумент Pretty сериализует массив не в таком виде
Вот и все. Не надо додумывать функционал на основе кода — поработайте с библиотекой сами, а потом уже пишите.
Иными словами, Pretty добавляет \n в конце каждого элемента для лучшей читабельности, вот и все.
Товарищ, вы бы хоть потестировали либу для начала вместо анализа ее кода.
Разумеется, все это легко исправляется поиском по гуглу и скачиванием сторонних библиотек, зачастую очень и очень неплохих, однако сейчас у нас 2015 год на дворе, и в современном языке я хочу видеть максимум удобства, благо не в пещерном веке живем.
в современном языке все должно быть интеллектуально, он сам должен понимать, где присвоение, а где проверка истины
bool a, b, c;
a = b = c;
В современном языке должны быть именно такие массивы, а то и еще лучше.
почему-то я до сих пор никогда не лажал на ровном мест
где мусолят лишь теоретическую часть, отдавая ей основное предпочтение — это устаревший и непродуктивный метод обучения.
На мой взгляд, у Вас есть элементы комплекса: «я так легко понимаю программы, но другие, плохо понимающие, успешны. Почему?»
Плюс, искусство искусством, а деньги деньгами, работодателя редко интересует, насколько искусно написан код — важен результат поставленной задачи в указанные сроки.
--Создаем массив говна
local govno = {}
алгоритм двойной буферизации изображения. Для тех, кто не в курсе, поясню вкратце его суть: в оперативной памяти у нас находятся два массива изображения: первый содержит информацию о пикселях, которые в данный момент отображены на экране, а второй — информацию о пикселях, которые мы хотим отрисовать. Затем при помощи вызова функции расчета алгоритм сверяет эти два массива и выводит на экран не все пиксели, а только лишь измененные. А затем присваивает первому массиву значение второго.
Тут можно было бы написать кучу текста, мол,
вы не имеете прав на использование этой бобони в
коммерческих целях и прочую чушь, навеянную нам
западной культурой. Но я же не пидор какой-то, верно?
Просто помни, сука, что эту ОСь накодил Тимофеев Игорь,
ссылка на ВК: vk.com/id7799889
Мне хотелось показать людям, что на любом языке и в любой среде можно создать маленький, не побоюсь этого слова, шедевр. Еще полтора года назад я крайне смутно представлял себе, что такое «функция», «массив» или «класс», а теперь мы с товарищами кодим собственную мини-ОС.
Просто помни, сука, что эту ОСь накодил Тимофеев Игорь,
ссылка на ВК: vk.com/id7799889
--Создаем массив говна
local govno = {}
История о том, как я ОС в Minecraft писал