Опубликован код проекта huje. Особенностью проекта является возможность публиковать исходный код с ограничением доступа к подробностям и истории для неразработчиков. Обычные посетители могут просматривать код всех веток проекта и скачивать архивы релизов. Huje написан на языке С и использует git...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=54784
"Хуже"?
хуже не будет
(голосом оптимиста) Да будет, будет!
В данном случае - идеальный "перевод".Хотя правильное название этой фигни, конечно - ненужное ненужно.
Если "история нахрен не нужна" - зачем ты вообще выложил свой гит? Чтобы мы могли полюбоваться на твой единственно-совершенный код, не нуждающийся в истории? Не хотел бы огорчать, но он нах никому не нужен, любоваться.А для сборки другими васянами - просто выкладывай .tar.Z, как тридцать лет назад делали. И старые версии не забывай удалять, а то ж кто-то может сравнить, и восстановить, о ужас! историю.
P.S. я-то уж подумал, кто-то сумел победить реальную проблему гита - неумение в авторизацию изменений. Но нет, куда там этим васянам.
>неумение в авторизацию измененийВ гите вроде бы давно уже есть gpg-подписи.
Это идентификация. А нужна - авторизация.И вот она - только костылями к подпоркам.
Кому нужна? Зачем нужна? Всяким зондостроителям, чтобы цвет трусов трекать? А софтина выглядит прикольно :P
Да ты гений, перечитай новость, речь идет о контроле пермишенов на просмотр истории
> "Хуже"?Может быть в следующих версиях оно достигнет уровня "лучше"? :о)
ху-е, хуже
что так, что не так - звучит для русского уха непотребно :)
отражает суть прожекта.
похоже, что какой-то нигга просто исковеркал слово huge
"нигга" это как пацан или бродяга, если ты не нигга, но используешь это слово, значит фрайер. Только ровные нигги могут его использовать
В мире 7 тысяч языков
Почти любое слово в каком-нибудь будет звучать «не так». Почему это должно волновать разработчиков?
Published under GNU GPLv2 by Svetlana Linuxenko
Вы используете этот проект ушами?
Ну, huje уже не будет и бац бац бац-бац-бац.
gitea сильно разжирела из-за джабаскриптов и в ней постоянно ломают уже работающие фичи, 'хуже' может стать лучшим выбором
Хьюджей, звучит хорошо.
Тогда уж Хьюджи
>huje-0.0.1.tar.xzНеужели нельзя было выложить код нормально?
>публиковать исходный код с ограничением доступа к подробностям и истории для неразработчиков
Это чтобы никто из независимых разрабов не узнал, кто же встроил бэкдор и когда. FOSS проекты должны быть максимум прозрачны в том, какой пользователь сделал коммит и какие коммиты были.
Без доступа к коммитам неинтересно.
Не исключу, что в самой программе может быть бэкдор, ради которого всё могло и городиться.
Самый дешёвый, быстрый, незатратный и не требующий никакого софта способ распространения исходников. Не надо лезть на жыдхаб и тыкать "скачать", не надо инсталлить гит и делать пулл. Просто скачал, открыл - и оно тут. Никаких блотов.
Особенно исходников предназначенных для любования исходниками без доступа к истории.
Зависит от величины/типа проекта.
devops.git || foreveralone.tgz
Прости пох, но я пару раз тоже так делал :). В внутренней версии может осесть много всякой странной фигни, не очень потребной для внешних ушей.Бывает так что штука делалась for internal use а потом вроде не так уж плохо получилось, чего только internal оставлять?
> Прости пох, но я пару раз тоже так делалдык я бывалоча и код без исходников выкладывал (и пользовались, кстати, не белки-истерички, конечно, а те кому надо было - результат).
Но тут все прекрасно и отвечает друг-другу - и обертка, и содержание.
> Бывает так что штука делалась for internal use а потом вроде не так уж плохо получилось, чего
> только internal оставлять?дык а git-то тогда зачем? В смысле - зачем давать возможность любования на исходники по отдельности, без возможности участия в разработке или изучения истории? Кому надо работать - скачивает tar.xz и работает. Может даже патч тебе прислать, без всякого гита.
>Для максимального ускорения не используется JavaScript и применяется минимум изображений.А дурацская мода на иконочные шрифты соблюдается?
Конечно соблюдается, но вроде бы как в планах поддержка net-surf и возможно links я так понимаю. Видимо есть куда расти.
Если кто не понял - net-surf не умеет в эти самые шрифты. Ктсати никаких шрифтов не замечено.
>Huje написан на языке С и использует git.Лучше бы на goвне написали. Или на любом другом memory-safe языке. Можно закапывать. Или оксидировать. Но ориг разраб видимо в этом не заинтересована.
Бинарник на го ни в один роутер не влезет
Памяти у роутера ни той что RAM ни той что ROM ни хватит чтоб шевелить этот самый го.
Стоило бы помимо фанбойских лозунгов привести хоть какие-то аргументы. Например, нижеследующий корректный код потенциально может (когда-нибудь потом) привести к порче стека:
struct block_line lines[MAXLINES + 2];/// ...
memset(&lines, 0, MAXLINES * sizeof(struct block_line));
Мимо. Б2 Е4 ?
> Мимо.Если изменить объявление lines
struct block_line lines[MAXLINES + 2];
размер объекта может измениться, но код оттранслируется без ошибок.
Вариант с
memset(&lines, 0, sizeof(line));
выглядит проще и потенциальной проблемы лишен.
Я бы инициализировал сразу в определении.
Правда, я не Си-разработчик, что бы на эту тему говорить всерьёз, не изучал код и не понял, зачем там финт с +2. Но есть вариант и с MAXLINES * sizeof(*line)> Б2 Е4 ?
Я не шахматист, видел лишь краем глаза FAQ про ТЛП. Насколько помню, он пошёл со Светочки.
Вот смотри, у тебя есть память, стековая, куча, не важно. Ты ее заполняешь, допустим инты - int a[16] , размер памяти которые ты должен заолнить ровна 16 * размер инта (в большинстве случаев 2 байта, иногда 4). Структура содержит в себе элементы, т.е число этих элементов умножаем на размер всех элементов струткуры, пусть там будет int int - 8 т.е структура твоя 8 байт умноженая на MAXLINES . Понимаешь ? И вот у тебя int int которые ты не знаешь сколько весят ты коговоришь sizeof int, это не может быть предустановленной константой никак.
Там выше у меня ошибка в имени, Вы её для второго варианта (MAXLINES * sizeof(*lines)) разглядели, но замечание и первого касается. sizeof(lines) это размер всего массива.
> sizeof(lines) это размер всего массиваНет, это не размер масива. Рекомендую освежить знания по сям.
>> sizeof(lines) это размер всего массива
> Нет, это не размер масива. Рекомендую освежить знания по сям.Давайте освежим.
6.5.3.4 The sizeof and _Alignof operators
7 EXAMPLE 2
Another use of the sizeof operator is to compute the number of elements in an array:
sizeof array / sizeof array[0]и вот свеженькое:
8 EXAMPLE 3
In this example, the size of a variable length array is computed and returned from a function
#include <stddef.h>size_t fsize3(int n)
{
char b[n+3]; // variable length array
return sizeof b; // execution time sizeof
}int main()
{
size_t size;
size = fsize3(10); // fsize3 returns 13
return 0;
}
Там берётся не размер массива, а размер указателя на него. Я даже не поленился пруф скрафтить.#include <stdio.h>
int a[15] = {1,2,3,4,5,6,7,8,1,2,3,4,5,6,7};
int main(void) {
printf("%d", sizeof(&a));
return 0;
}
> Там берётся не размер массива, а размер указателя на него. Я даже
> не поленился пруф скрафтить.
> printf("%d", sizeof(&a));"Там" -- это стандарт языка Си. Со стандартом спорить не принято. И там берётся размер массива. В так называемом "пруфе" действительно берётся размер указателя, но он мимо темы, поскольку зачем-то добавлен &
Но в примере выше по треду берётся размер именно указателя.
> Но в примере выше по треду берётся размер именно указателя.Я надеюсь, что Вы Алзим, запойный алкоголик из "Розалаб". В ином случае Вам следует сходить к окулисту: в моих примерах берётся либо размер массива (именно он процитирован в #62 рекомендатором освежений), либо размер его элемента.
Разве что не sizeof(line), а sizeof( * lines) и зачем утруждаться на заполнение заранее неиспользуемых + 2 ?
> Разве что не sizeof(line), а sizeof( * lines)Да, верно, я накосячил при копипасте. Такой вариант позволяет определить размер элемента в общем виде, не зная его тип.
> и зачем утруждаться на
> заполнение заранее неиспользуемых + 2 ?Вопрос в том, зачем вообще нужны неиспользуемые элементы.
Что касается утруждений, как раз при занулении части массива будет лишняя работа. Там же рядом другие данные определяются и ициализируются нулями. Дешевле (и по объёму машинного кода, и по времени исполнения) занулить вообще все их скопом.
На сколько я вижу - это какой-то парсер, наверняка на всякий случай да и правильно, на 8 байт не обеднеем и за границы ничего не полезет. Впринципе - вот теперь я точно одобряю этот вариант, хотя нулить можно по такой логике и все подряд. Но т.к это просто парсер на секунду - наверное эти 8 байт я щедро одолжу программе на пару наносекунд :D
> Вопрос в том, зачем вообще нужны неиспользуемые элементы.В Сишном мире так принято из соображений безопасности. Явно, четко, выразительно.
Если Вы это заметили - значит цель 100% достигнута.
>> Вопрос в том, зачем вообще нужны неиспользуемые элементы.
> В Сишном мире так принято из соображений безопасности. Явно, четко, выразительно.Будьте так любезны, разверните мысль. Эти два лишних (судя по MAX перед LINES) элемента массива от чего конкретно защищают? Или какой вектор атаки перекрывают? Я пока не смотрю код, что бы у меня осталась возможность сесть в лужу.
> Если Вы это заметили - значит цель 100% достигнута.
Я заметил, что какой-то фанбой публикует фрактальные мантры, но ничем их не обосновывает. Посмотрел несколько файлов, вот за это глаз зацепился. Значит и член секты Свидетелей Сишных Дыр тем более мог это найти и подкрепить свои мантры. Меня такие вещи малость напрягают, поскольку если у меня косяк с граничными условиями, значит потом оказывается, что я не понял что написал. Такое решение возможно и ради упрощения алгоритма, но это не очевидно. Как бы то ни было, ошибок я не нашёл, только придирка, а это хороший показатель, от проекта одного человека нельзя многого требовать.
> Правда, я не Си-разработчик, что бы на эту тему говорить всерьёз,Та я тоже , это так из керигана и ричи что-то помню
Я вот помнил, что про sizeof(*lines) должно быть у Ален И. Голуб, но почему то там не нашёл.
> Лучше бы на goвне написали. Или на любом другом memory-safe языке.Тормозных энтерпрайзных убл*дков требующих скачать полинтернета для сборки и так валом. Только на роутер они вообще совсем никак, да и на одноплатник - так себе.
А если кому сыкотно, sanitize=address еще не отменяли. Тормознется, конечно, малость, но вы настолько охренеть нагруженые? :)
> Но ориг разраб видимо в этом не заинтересована.
Отлично, вменяемый человек который делает мелкие клевые штуки вместо хайпожорства с энтерпрайзными монстрами, где безопасТники делают пайп с ремотного сайта в браузер. Гении секурити от хруста, пля, таким никакой яп не поможет.
на javascript, не на С :)
прям ностальгия от скринов
> А нагрузку на клиента и задержки на стороне клиента увеличивает в десятки разВот тут время для пруфов.
>Для максимального ускорения не используется JavaScript и применяется минимум изображений.если запилит поддержку Gemini будет вообще конфетка
Gemini нужно переименовать в Guano
Чем оно huje pijul
Сравнил зеленое с теплым
Пипец бездельники анонимы налетели как коршуны. Особенно доставляют феноменально безграмотные комментарии.Автор, расслабься - твой проект вполне интересный и однозначно нужный. А учитывая что он без жабоскрипта и отлично будет доступен через линкс, так вообще респект.
А я зашёл чисто петросянов почитать - не разочарован
Коментаторам по нозванию как-то должно быть стыдно от не понимания обычной игры слов. При этом довольно мастерской.Как вы на английском общаетесь - не представляю. С такими то скудными знаниями.
Вы на чём исходники держите?
На huje'ях.
Простите, вертите, а не держите.
Вот это вот хорошая шутка :D
Кто помнит цитату про зайца из фильма "такси" ? Там где Даниель немцев трольнул
huje-huje и в продакшн
Будет пользоваться спросом в этих ваших торах
>libjsonc.arОпустились до поставки всякого говна в дереве исходников.
>* Written on C and web part was made using some kind of ecmascript 5 (js). *WRITTEN IN C*
Вот тут вы ошиблись. Written in JavaScript with C bugs.
>JS
>4Mb of memory
>about 1Mb disk of disk space.
>*CAN BE INSTALLED ON A HOME ROUTER*Даже если вы и втиснете его на роутер модели "калькулятор" (что сомнительно при флешке на 8, из которых 3.5 раздела под пакеты уже заняты), то для работы там вряд-ли хватит оперативы, так как на openwrt и так всё еле ворочается и падает по оом.
На роутерах lua более уместна, ибо она там уже есть и тащить свою не надо.
>* Invite based user registration system. *GOOD FOR TOR*
Не вижу связи. Вообще Tor и good несовместимы.
>* Has restrictions that protect your code from analyzation technics that became
very popular this days. Protects itself, your code, your users. *PROTECTS YOU*
Нет, код оно как раз не защищает.
> SUM_PROGRAM: 'md5sum',
Давно взломан.
>### DEPENDENCIES:
>* git (obvious)
>* json-c
>* sqlite3
>Not a so many, huh ?Забандлованные в этом списке не перечислены.
Перечислены в другом месте, где менее заметно:
>Huje uses discount, mustach, kat and mujs applications. They are located inside of separate folders.
Сразу видно пользователя винды.
это гитхаб?
Будем честны, сервер работает на JavaScript, точнее его подмножестве. Судя по версиям библиотек и изменениям с upstream, там довольно старые версии. Исходя из этого и самопальной реализации http наверняка можно легко найти дырки.postjs, который там — это MuJS. Как и во всех включенных библиотеках, можно найти авторство, но с трудом. На стороне клиента действительно мало js, потому что рендеринг на стороне сервера. Это и хорошо и плохо.
Единственно, что заслуживает внимания из всего кода — каталог js, который с лёгкостью переносится на другие языки, которые обслуживаются по крайней мере.
Коду и автору я бы не доверял, хотя можно сделать аудит и может быть из этого что-то выйдет. Но закрытая модель разработки этого не предполагает :)