Сообщество - Лига программистов

Лига программистов

2 387 постов • 11 995 подписчиков

Популярные теги в сообществе:

Продолжение поста про UIscript⁠⁠

Серия Мой UIscript, личный опыт

Ещё раз привет, друзья, не ожидал такого количества комментариев (как негативных, так и позитивных) — всем спасибо.

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

Калькулятор на UIscript. Русский и английский код - одинаковый результат

Также калькулятор с идентичным интерфейсом, но на HTML, CSS и JavaScript

Также калькулятор с идентичным интерфейсом, но на HTML, CSS и JavaScript

Во-вторых, я говорил, что делаю с ИИ, но чётко разграничил, что не «написал промпт дипсику и выложил на GitHub», нет, я придумал проект, синтаксис, общую архитектуру, все фичи (двуязычность, например), а также тестировал и исправлял баги, которые нашёл в коде. В-третьих, зачем ещё один язык? Как по мне для супер простого создания интерфейсов с лёгким синтаксисом (как по мне) языков либо нет, либо я не знаю, Yoptascript ну не приличный, как по мне, хотя крутой.

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

Ссылка на прошлый пост для тех кто не читал: Создал язык программирования на русском (и не только) для обучения детей и новичков. Оцените UIscript плиз

P.S. Старался ответить на каждый комментарий, даже негативный, но их набралось много, и поэтому решил сделать отдельным постом (этот пост)

Показать полностью 3

Ответ на пост «Создал язык программирования на русском (и не только) для обучения детей и новичков. Оцените UIscript плиз»⁠⁠2

Идея хорошая и интересная. С 90х не видел ничего приятного для лёгкого изучения программирования детям. И да, сам задумывался последние несколько лет об этом.

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

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

Ваша язык имеет задатки инициативности, но недочётов простого понимания и использования пока не меньше.

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

И да, нужно сделать все возможное, чтобы он не был похож на это 1Сное издевательство над языками программирования %))

Как криптографическое приложение писал, от школьного проекта до сегодня⁠⁠

Привет, Пикабу!

Ощущаете отсутствие конфиденциальности в мессенджере? Мое приложение не обещает анонимность в полном объеме, оно другого рода. Я создавал его изначально как инструмент шифрования переписки в мессенджере. Идея была проста: зашифровать текст перед отправкой в мессенджер, чтобы никто сторонний (например при утечке базы данных) не смог его прочитать.

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

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

Вот так выглядела версия 1.0 (Остальные к сожалению утеряны)

Вот так выглядела версия 1.0 (Остальные к сожалению утеряны)

Спустя время я оставил Паскаль и выучил C# и .NET Maui. Позже я вспомнил о приложении и решил - я сделаю полностью бесплатный ремейк без рекламы и с открытым исходным кодом!

Название я выбрал сомнительное - LOKI-Cryptographer, стоило подумать о нем лучше, ну да ладно. В приложении накидал простой интерфейс вдохновляясь другим приложением. Кстати - вот тут то была моя головная боль - вид кнопок, я тогда был неопытен и использовал ImageButton из за чего они выглядели огромными и размытыми. Позже до меня дошло использовать ttf кнопки.

К сожалению скриншота приложения с ImageButton я не нашел, зато есть ранний концепт интерфейса уже с ttf кнопками

К сожалению скриншота приложения с ImageButton я не нашел, зато есть ранний концепт интерфейса уже с ttf кнопками

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

Под капотом

Приложение кстати с открытым исходным кодом.

Вот метод шифрования на момент выкладывания статьи:

[RelayCommand]
private async Task CryptMessege()
{
try
{
if ( UserTextIn == null || UserTextIn.Length == 0) return;


byte[] MessegeToByte = Encoding.UTF8.GetBytes(UserTextIn);
byte[] CryptMessege = new byte[MessegeToByte.Length];
byte[] Nonce = new byte[12];//рандомное число
SecureRandom random = new SecureRandom();//рандомное число для кривой
byte[] RandomForBytes = new byte[32];


// Ассиметрия
random.NextBytes(RandomForBytes);
X25519PrivateKeyParameters MyPrivateKey = new X25519PrivateKeyParameters(RandomForBytes);// кривая X25519
X25519PublicKeyParameters MyPublicKey = MyPrivateKey.GeneratePublicKey();


string? a1 = await SecureStorage.Default.GetAsync("MyNowPrivateKey");// Приватный ключ
if (string.IsNullOrEmpty(a1))
{
await SecureStorage.Default.SetAsync("MyNowPrivateKey", Convert.ToBase64String(RandomForBytes));
}
else
{
SecureStorage.Default.Remove("MyNowPrivateKey");
await SecureStorage.Default.SetAsync("MyNowPrivateKey", Convert.ToBase64String(RandomForBytes));
}


if (string.IsNullOrEmpty(EphemeralKeyUser)) //если ключ пользователя null
{
byte[] MyEphemeralBytes = MyPublicKey.GetEncoded(); //промежуточный ключ пользователя
EphemeralKeyUser = Convert.ToBase64String(MyEphemeralBytes);
// сохранение своего первого ключа


string a = Preferences.Default.Get("MyEphemeralKey", string.Empty);
if (!string.IsNullOrEmpty(a))
{
Preferences.Default.Clear("MyEphemeralKey");
}


Preferences.Default.Set("MyEphemeralKey", Convert.ToBase64String(MyEphemeralBytes));
}

byte[] SomeoneEphemeralBytes = new byte[32]; // массив под чужой помежуточный ключ
if (!string.IsNullOrEmpty(SomeoneEphemeralKey))
{
SomeoneEphemeralBytes = Convert.FromBase64String(SomeoneEphemeralKey);
}
else
{// если не ввел ключ собеседника
return;
}


if (SomeoneEphemeralBytes == null || SomeoneEphemeralBytes.Length == 0) return; //подстраховка на промежуточный ключ собеседника
X25519PublicKeyParameters SomeoneRestoredEphemeral = new X25519PublicKeyParameters(SomeoneEphemeralBytes, 0);


byte[] GeneralKey = new byte[32]; // общий ключ
MyPrivateKey.GenerateSecret(SomeoneRestoredEphemeral, GeneralKey, 0);


//создание второго промеж ключа для следующего сообщения
SecureRandom random2 = new SecureRandom();
byte[] RandomForBytes2 = new byte[32];
random2.NextBytes(RandomForBytes2);


X25519PrivateKeyParameters MyPrivateKey2 = new X25519PrivateKeyParameters(RandomForBytes2);
X25519PublicKeyParameters MyPublicKey2 = MyPrivateKey.GeneratePublicKey();
byte[] MyEphemeralBytes2 = MyPublicKey2.GetEncoded();
EphemeralKeyUser = Convert.ToBase64String(MyEphemeralBytes2);

// Симметрия
try
{
RandomNumberGenerator.Fill(Nonce);
byte[] Gamma = HKDF.DeriveKey(HashAlgorithmName.SHA256, GeneralKey, MessegeToByte.Length, Nonce);


try
{
for (int i = 0; i < MessegeToByte.Length; i++)
{
CryptMessege[i] = (byte)(MessegeToByte[i] ^ Gamma[i]);
}
}
finally
{
CryptographicOperations.ZeroMemory(Gamma);
}
}
finally
{
CryptographicOperations.ZeroMemory(GeneralKey);
}


// Вывод инфы на интерфейс
try
{
string CryptMessegeBase64 = Convert.ToBase64String(CryptMessege);
string NonceBase64 = Convert.ToBase64String(Nonce);
string MyEphemeralBytes2Base64 = Convert.ToBase64String(MyEphemeralBytes2);
string Result = $"{CryptMessegeBase64}✶{MyEphemeralBytes2Base64}{NonceBase64}";


UserTextOut = Result;

}
finally
{
CryptographicOperations.ZeroMemory(MessegeToByte); // очистка остального
}


} catch (Exception) {}

}

Жаль что на Пикабу нет оформления под код. Если кратко о асимметрии:

  1. Генерация общего ключа реализована на базе эллиптической кривой X25519.

  2. Каждый раз генерируется новый промежуточный ключ для следующего сообщения.

Оперативная память зачищается от остатков ключей и гаммы сразу после использования.

О симметрии:

В коде используется HKDF (SHA256) для создания уникальной гаммы на основе общего ключа и одноразового числа (Nonce), а затем применяется XOR.

Открытый исходный код можете посмотреть на моей странице в GitHub

Я понимал что одних слов недостаточно чтобы добиться доверия, поэтому выбрал единственное верное решение, проект - Open Source, открытый исходный код здесь GitHub. Только лицензию прочитайте сначала.

О релизе и сторах

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

<ApplicationId>com.companyname.loki</ApplicationId>

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

Вывод

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

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

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

Кто хочет просмотреть фулл код сам GitHub (Там же можно скачать андройд и пк версию)

Страница в Rustore - Rustore (только андройд версия)

Мой тгк с техническими новостями - Telegram (Там дублировать пост не буду, только технические апдейты по коду)

Показать полностью 2
272

Создал язык программирования на русском (и не только) для обучения детей и новичков. Оцените UIscript плиз⁠⁠2

Серия Мой UIscript, личный опыт

Друзья, немного расскажу и начну с предыстории. Я решил создать язык программирования UIscript.

Думаю, многие спросят: зачем, неужели языков не хватает? Если кратко, то да — в нише, которую я выбрал, их действительно нет или они не совсем подходят. Хотелось создать такой язык программирования, в котором не придется заучивать тонны англоязычных команд и перегруженный синтаксис. Чтобы он идеально подходил для изучения детьми и начинающими программистами, и они могли сразу видеть результат своей работы — графический интерфейс с кнопочками. И чтобы можно было сразу сосредоточиться на понимании самой логики программирования. И еще — да, желательно на русском языке. (Позже я добавил для тех, кому нравится английский, двуязычную поддержку).

Пример простейшей программы на русском

Пример простейшей программы на русском

И на английском то же самое.

И на английском то же самое.

В общем, за основу я взял JavaScript (понятно, что HTML и CSS в придачу). Он работает под капотом, но синтаксис ещё раз уточню свой. Почему? Во-первых, он изначально понимается браузером и отлично подходит для создания интерфейсов. Где-то за месяц я разработал команды, синтаксис и отредактировал код. Признаюсь, делал UIscript я вместе с ИИ: на него переложил рутинное написание кода, а сам строил всю логику, синтаксис и архитектуру, а также исправлял ошибки и тестировал. И совсем недавно я наконец закончил эту разработку. Конечно недочётов ещё много, но не всё сразу...

Пример простейшей программы - викторины

Пример простейшей программы - викторины

Ещё добавил предпросмотр

Ещё добавил предпросмотр

Пишу сюда в поисках ответа на вопрос: реально ли полезную штуку я придумал или всё же где-то промахнулся? Фотку суперпростого синтаксиса прилагаю к посту.

Проект под свободной лицензией Apache 2.0

Код полностью безопасен и открыт на GitHub (если кого интересует, то там же можно и скачать)

https://github.com/gromhorse90022110-dot/uis_uiscript

И ещё, хочу сразу сказать: этот проект не приносит мне никакой коммерческой выгоды, денег или ещё каких-либо материальных благ, поэтому прошу не рассматривать как рекламу, это мой опыт и результат, если кому интересно - я рад!

Показать полностью 4

Как игрушка ребёнка стала моим талисманом, а мебель для квартиры — программой⁠⁠

Серия Panda Koder — истории разработки
Как игрушка ребёнка стала моим талисманом, а мебель для квартиры — программой

Днём я, как и все вы, обычный работник обычной рядовой работы. Вечерами и ночью — начинающий кодер. А зовут меня Panda Koder, и сначала — про панду.

Панда — это маленькая милая игрушка моего ребёнка. Когда-то давно она осталась далеко от дома, и стояла цель — вернуть её. Но впереди меня ждал довольно длинный путь домой. Вы не представляете, какие там были виды, — я до сих пор в восторге. И всё это время эта маленькая игрушка была со мной, крепко держась за мою руку, разделяя все радости и преодолевая преграды.

Я начал снимать короткие ролики для ребёнка, чтобы он не так сильно скучал по своей игрушке и переживал мои путешествия вместе с пандой. Так панда превратилась в мой маленький талисман: уже не первый год идёт со мной за руку, объездила многие страны и города. Так появились короткие истории о наших путешествиях и выходных — так появился Panda Koder. Целеустремлённости панды можно только позавидовать.

Теперь про мебель. Ещё год назад я собирал себе мебель. Магазины — и всё не то: здесь не встаёт, там не влазит, низкое качество и нереально высокая цена. Так я пришёл к тому, что делать надо всё своими руками.

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

И тут горькая правда: приносишь список из десятков деталей, а их начинают вручную переписывать и ошибаться. Кривые детали, которые не подходят, недособранная мебель, недостающие детали. Программы для рисования мебели в 3D — та ещё морока: недели на то, чтобы нарисовать тумбу. И вечное недоумение — зачем так усложнять?

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

Тогда и появилась идея простого конструктора — по принципу игры «собери сам» в три клика. Понятного даже ребёнку. Где решают чашка кофе и настроение. Так я начал делать «Мебель Клик» и свои первые шаги в коде. Сейчас это конструктор корпусной мебели прямо в браузере, бесплатный и без регистрации: размеры — шкаф в 3D — детали в пильных размерах в PDF.

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

Потом был отпуск, а вернувшись, я загорелся второй программой — Lang Switcher. Я знал, что есть аналоги, тот же Punto Switcher. Но! Чем я хуже? Я убираю всё лишнее, вкладываю своё видение и начинаю всё с нуля. Началось, втянулось — остановиться не смог. Набрали «ghbdtn» — нажали Pause — получили «привет»: программа исправляет слово, набранное не в той раскладке. Бесплатная, код открыт.

Но знаете, какой бы хорошей ни была программа, какой в ней толк, если она никому не известна? Обратная связь — это только мои мысли и действия. Поэтому я здесь.

Мне нужна ваша обратная связь: отзывы, комментарии, честные слова о хорошем и плохом. Негатив, позитив — всё. Только честные недостатки могут указать правильное направление. Пройдите этот путь со мной — шаг за шагом.

Где меня найти:

Сайт — там обе программы и блог: https://panda-pishet-kod.dev

Канал, где рассказываю, как всё делается: https://t.me/panda_pishet_kod

Вопрос, отзыв, критика — группа Panda Koding: https://t.me/panda_koding/43

Показать полностью
6

Первый результат чекера скидок⁠⁠

Серия Бесплатный сервис по поиску выгодных цен

Привет @JoaoMoutinho, и Пикабутяне. Делаю бесплатный сервис (без авторизации и рекламы) для поиска выгодных цен на продукты.

Все таки нашлось время и начал пилить. Во фронте не силен, но ИИ помогает по тихой. До финала еще далековато, но надеюсь дойдем.

А пока делюсь первыми результатами! (Всё в процессе, пока набросок)

Вкладка с текущими скидками

Вкладка с текущими скидками

Список продовольственных товаров и самые выгодные магазины для их покупки.

Список продовольственных товаров и самые выгодные магазины для их покупки.

В том числе с поиском нужного товара

В том числе с поиском нужного товара

Есть мобильная версия.

На этом пока всё. А дальше, оптимизация, защита, круги доработок, тестов, тестов для друзей.

Замечания, пожелания, рекомендации приветствуются!🤡

Показать полностью 4
0

Копировать / Вставить⁠⁠

Серия Делаю свою программу удаленного доступа

Продолжаю делиться возможностями своей программы удаленного доступа DIX Клиент. На видео показываю как можно копировать в любую сторону файлы и папки с файлами

Отдельно отмечу возможность копировать прямым потоком файлы с одного удаленного ПК сразу на другой.

Скорость передачи данных ограничена 35 мегабайтами в секунду, а максимальный вес файла или папки - до 500 мегабайт.

Показать полностью

Демон кодящий⁠⁠

Нет это не вариации на Врубеля, это одна из черепашек ниндзя накалякала(подсказка: та что с нунчаками)

Нет это не вариации на Врубеля, это одна из черепашек ниндзя накалякала(подсказка: та что с нунчаками)

Всех беспокоит во что в скорости превратится разработочка. Они называют это Агентами, но ничто не ново на земле. И вот раньше, до времен, когда эстрагеновый клан ойтишников начал критиковать нейминг типа master and slave - было такое понятие как daemon. Которое прекрасно отражает и подходит вместо этих ваших "Агентов".

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

Можно еще вспомнить наших любимых других агентов. Но они как раз постулируют детерменизм, Меравингиан(хоть им и не является, а чуть на особице) буквально ставит его во главу угла. Causality - его девиз. Они совсем не похожи на нынешних. Они как DeepBlue против AlphaZero идеалогически. Их ад прямой и ортогональный, он зеленый как микросхема, чудовищный, но согласованный.

А то что сейчас выпущно в наш мир из иного - совсем нет. Никак нет. Достойно ли симряться? Этот вопрос в сторону. Фил Карлтон называл всего две проблемы в Computer Science и я думаю что в рамках решения одной из них тут нейминг очевидно требует корректировки.

Ленин с Троцким(нет не мешок муки делили) обсуждали как назвать новых правителей, нет не министры конечно гнусно и истрепанно, а вот коммисары! Это превосходно: ужасно пахнет революцией!... но мы все знали как называли его по отношению к революции 😉

Показать полностью 3
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества