Комментарии проекта Программирование
2

[C#] Быстрая работа с цветами изображений?

» Программирование
Есть C# и WinForms, нужно относительно без задержек менять параметры картинок вроде яркости, цветового баланса и т.д., и сразу же смотреть результат. Насколько мне известно, нативный GDI+ работает через GetPixel, это очень медленно. Есть идеи? Напрягать DirectX\WPF\Unity, возможно, излишне для такой маленькой задачи.
build #1 - 4 months ago 0
Голосов: +0 / -0
Hanabishi, да, Bitmap, альтернатив не знаю. Про LockBits тоже думал, но мало использовал.
Hanabishi #2 - 4 months ago 1
Голосов: +1 / -0
Под картинкой что подразумевается? Судя по функции GetPixel имеется в виду тип Bitmap. Тогда проще всего вызывать LockBits, выполнять нужные действия с байтовым представлением, а потом UnlockBits.
1

[Javascript] Unexpected end of JSON input

» Программирование
Пишу бота для своего Discord сервера, с JS и Node знаком 3 дня. По этому наверняка упускаю что-то из внимания или понимания, буду рад если кто-то сможет помочь.
Суть проблемы с получением данных вида JSON. Делаю Get на получение ответа от сервера, записываю в .json файл. Пытаюсь обработать полученные данные, вот в этом блоке, что заключён в Promise есть проблема. По моим наблюдениям, ни с получением данных ни с их обработкой проблемы не возникает по отдельности, если часть кода с получением данных закомментировать и самому заполнить json, то всё работает. Или же наоборот, если закомментировать обработку, но запустить получение то всё так же будет работать.
Я подумал, что проблема в асинхронном получении данных и обернул обе части в Promise, но проблема не ушла.

Читать далее...
DarkLigthing #1 - 9 months ago 0
Голосов: +0 / -0
Проблема решена, оказывается у fs.appendfilesync есть проблемы с заполнением пустых файлов. Замена на fs.writeFileSync решило проблему.
4

Отказано в доступе

» Программирование
Хотел установить pyTelegramBotAPI для питона, вбил в консоль pip install pyTelegramBotAPI и и пишет,что отказано в доступе.
+ не работает эхо бот с командами из pyTelegramBotAPI, наверное не работает по причине не установленного pyTelegramBotAPI
xgm.guru/files/988/245718/bot.py_p.png сам код эхо бота.
h0rde #1 - 1 year ago 0
Голосов: +0 / -0

Или я совсем дубень,или что-то не так делаю

Вся таже ошибка
Прикрепленные файлы
Msey #2 - 1 year ago 0
Голосов: +0 / -0
точнее командную стройку?
строку*
именно
h0rde #3 - 1 year ago 0
Голосов: +0 / -0
получается я должен открыть sublime text от имени администратора?

точнее командную стройку?

строку*
Msey #4 - 1 year ago (изм. ) 0
Голосов: +0 / -0
Код лучше скопировать под кат
кат
((
//code
))

по первой проблеме: ну там очевидно не от имени администратора запускаешь приложение, либо директорию какую-нибудь специфическую выбрал.
15

Проблема telegram bot

» Программирование
Всем привет!Пишу бота для телеграмма на питоне.Все нужное установил и все работало.Ибо делал бота ,но гораздо легче.И вылетает ошибка.Приложу скрин ошибки и кода.Очень надеюсь на вашу помощь!!!
h0rde #1 - 1 year ago 0
Голосов: +0 / -0
Большое спасибо!
ScorpioT1000 #2 - 1 year ago (изм. ) 0
Голосов: +0 / -0

На 1:25 он рассказывает что за конфиг youtu.be/M8fhrtvedHA?t=84
Автор даже не с начала смотрел, жесть какая... и это хаудихо, который совсем для младенцев)
h0rde #3 - 1 year ago 0
Голосов: +0 / -0
Нет~Vlod:
как его записать
Так?
» код
import telebot
import config
import random

TOKEN =('1265372487:AAH2NG5shrumYPmf-hHI75WorlKr6bvDUg')

bot = telebot.TeleBot(TOKEN)
@bot.message_handler(commands=['start'])
def welcome(message):
	sti = open('static/welcome.webp', 'rb')
	bot.send_sticker(message.chat.id, sti)
	
	bot.send_message(message.chat.id, "Добро пожаловать,{0.first_name}!/nЯ - <b>{1.first_name}</b>,бот созданный быть лохом".format(message.from_user, bot.get_me()), parse_mode='html')
@bot.messsage_handler(content_types=['text'])
def lalala(message):
	bot.send_message(message.chat.id, message.text)

bot.polling( none_stop = True)
откуда ты скопировал весь этот код / скачал пайтоновские сурсы
Может это?

код из видео с ютуба www.youtube.com/watch?v=M8fhrtvedHA
Vlod #4 - 1 year ago (изм. ) 0
Голосов: +0 / -0
как его записать
Так?
» код
import telebot
import config
import random

TOKEN =('1265372487:AAH2NG5shrumYPmf-hHI75WorlKr6bvDUg')

bot = telebot.TeleBot(TOKEN)
@bot.message_handler(commands=['start'])
def welcome(message):
	sti = open('static/welcome.webp', 'rb')
	bot.send_sticker(message.chat.id, sti)
	
	bot.send_message(message.chat.id, "Добро пожаловать,{0.first_name}!/nЯ - <b>{1.first_name}</b>,бот созданный быть лохом".format(message.from_user, bot.get_me()), parse_mode='html')
@bot.messsage_handler(content_types=['text'])
def lalala(message):
	bot.send_message(message.chat.id, message.text)

bot.polling( none_stop = True)
откуда ты скопировал весь этот код / скачал пайтоновские сурсы
Может это?
Msey #5 - 1 year ago 0
Голосов: +0 / -0
Для начала расскажи, откуда ты скопировал весь этот код / скачал пайтоновские сурсы
После этого уже можно начинать расследование по токенам
ScorpioT1000 #6 - 1 year ago (изм. ) 0
Голосов: +0 / -0
не знаю, ты же его импортировал конфиг в код не просто так
h0rde #7 - 1 year ago 0
Голосов: +0 / -0
а как сделать этот токен вне кода

или как его записать
Msey #8 - 1 year ago 0
Голосов: +0 / -0
Вместо config.token впиши строчку токен, которая у тебя ниже
ScorpioT1000 #9 - 1 year ago (изм. ) 0
Голосов: +0 / -0
h0rde, конфиг и сам токен в нём должен быть где-то вне питон кода
Hanabishi #10 - 1 year ago 0
Голосов: +0 / -0
ScorpioT1000, это и так понятно. Токен видимо с конфига должен подтягиваться. Но тут человек явно вообще сам не понимает что делает.
ScorpioT1000 #11 - 1 year ago 0
Голосов: +0 / -0
Hanabishi, он так не заработает. У него там не config.TOKEN, а просто TOKEN - видимо, другая переменная
Hanabishi #12 - 1 year ago (изм. ) 0
Голосов: +0 / -0
Вроде не надо иметь великие познания, чтобы понимать, что токен надо вписывать ДО того места, где он используется. Какой толк его вписывать после ошибочной строки? До туда из-за ошибки даже выполнение не доходит.
h0rde #13 - 1 year ago 0
Голосов: +0 / -0
я вписал значение токена и почему-то ошибка
ScorpioT1000 #14 - 1 year ago 0
Голосов: +0 / -0
Он всё идеально описал человеческим языком, что именно не понятно?
5

Итераторы и yield в C#

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

Читать далее...
PornoMishka #1 - 1 year ago 0
Голосов: +0 / -0
+1 за асинхронность
Nerevar #2 - 1 year ago 0
Голосов: +0 / -0
На мой взгляд стоит добавить к описанию оператора yield пример того, во что он превращается на самом деле, как [здесь]
Bornikkeny #3 - 1 year ago 2
Голосов: +2 / -0
Асинхронность на .net 4.0 и 4.5> очень будет интересна
Msey #4 - 1 year ago 2
Голосов: +2 / -0
Если кому не сложно, то напишите, какие бы статьи были бы вам интересны. Пока есть свободное время, попробую написать парочку
Bornikkeny #5 - 1 year ago 2
Голосов: +2 / -0
Хорошая статья
3

Как работают знаки сравнения, больше, меньше?

» Программирование
В сравнении двух чисел мы обычно используем оператор " if ", который при истинности (по сути единица) выражения запускает код, который находится внутри, а при ложном пропускает этот код. Вроде всё просто сравнение, но как компьютер понимает что два числа равны или больше, или меньше и как работает этот оператор " if "?
В ассемблере есть такая команда CMP, которая сравнивает два числа, там же сравнивание идёт по следующему алгоритму:
CMP A, B
  1. Из A вычитается B

Читать далее...
Ev3nt #1 - 1 year ago 2
Голосов: +2 / -0
Также прочитай про условные и безусловные переходы: jmp, ja, jb, je, jnz/jne и т.д.
PT153 #2 - 1 year ago (изм. ) 0
Голосов: +0 / -0
Обычный goto. Если флаг 1, то goto в такой лейбл, если 0, то в другой. В ассемблере MIPS есть специальные функции сравнения.
ScorpioT1000 #3 - 1 year ago (изм. ) 0
Голосов: +0 / -0
Почитай про boolean и как работают его операции. Он не связан с числовыми типами (кроме Си, но не будем трогать магию слабой типизации), советую почитать про типизацию и приведение типов в C++. Дальше можно переходить к тому, что такое int32/64, а дальше ieee float

Крайне не рекомендую объединять логические и численные операции - разбираться в этом потом очень больно, даже самому себе через пару месяцев
2

Покраска отдельно каждого символа на С++

» Программирование
Сразу предупрежу - я только начал изучать С и не нужно помидоры кидать в меня.
имеем к примеру -
std::string WantBuyApples = u8"я хочу купить %s яблок";
вот вопрос в этом - как перекрасить каждое отдельное слово (не важно в какой цвет и т.д.) и вообще реально ли это? Или все делается в самом printf?
Drulia_san #1 - 2 years ago (изм. ) 0
Голосов: +0 / -0
Прежде всего запомни, что всё в C и C++ это цифры, байты и биты, ничего более. Всё состоит из фундаментальных типов. Стандартные библиотеки, позволяющие использовать строки, контейнеры и прочие ништяки не умеют работать с графикой и не предназначены для работы с ней, это просто данные, в свою очередь тоже основанные на числовых фундаментальных типах. Так и строка std::string это просто контейнер для динамического массива char'ов, которые являются по сути числами размером в один байт. Числа не знают какого они цвета, формы, шрифта, они просто хранят в себе информацию, в данном случае текст. Окрасить текст в цвета можно в зависимости от того где ты этот текст выводишь. Консоль на винде в такое не умеет, а если умеет то косо и криво, и вообще с этим играться бесполезно. Консоль на линуксе умеет в цвета, там для этого есть escape-последовательности которые ставятся перед текстом, подобно цветовым кодам в варкрафте. Играйся с winapi или лучше Qt, в последнем вообще в html отображаемый текст форматировать можно.
prog #2 - 2 years ago 0
Голосов: +0 / -0
Строки сами по себе не имеют ничего общего с визуальным форматированием - это делается на этапе вывода.
17

Работа с небезопасным кодом в C#

» Программирование
Язык C# поддерживает указатели, однако несколько ограниченно. Ограниченность заключается в том, что применение указателей не поощряют, поскольку справедливо считается, что это может повлиять на надежность как кода, так и среды выполнения в целом.

Читать далее...
alexprey #2 - 3 years ago 0
Голосов: +0 / -0
Msey:
Самый частый случай, который встречался мне на практике - это более шустрые операции с массивами и строками за счет отсутствия проверки их границ.
оптимизация работы с большими массивами данных, когда надо тоскать между функциями все эти данные и манипулировать небольшими участками массива без выделения в небольшой кусочек.
Но с недавних пор это все не актуально стало. В новом стандарте есть новые структуры данных, которые оборачивают такие небезопасные операции и непосредственное использование unsafe становится ненужным
Msey #3 - 3 years ago 0
Голосов: +0 / -0
Doc, "Все структуры C# имеют значимый тип". Пофикшено.
Doc #4 - 3 years ago 0
Голосов: +0 / -0
Все структуры C# имеют тип переменной
Это так переведено all C# structs are value types?
Ярг Восьмой #5 - 3 years ago 0
Голосов: +0 / -0
Hanabishi, теперь понял. Теперь мне придётся пересмотреть некоторые темы программирование, а то уже совсем что-то забываю. Уже начал путать эмулятор со строгим оптимизатором, грубо говоря.
И ещё, извиняюсь за свою неграмотность в области ЯП.
Hanabishi #6 - 3 years ago 0
Голосов: +0 / -0
KingMaximax, неправильно, нельзя "обойти виртуальную машину", код в любом случае на ней выполняется. Это главное отличие C# от нативных C\C++, но речь в статье вообще не об этом.
Есть понятие управляемого и неуправляемого кода. Так вот шарп по-умолчанию использует управляемый код, это когда все данные жестко контролируются средой, ты не управляешь памятью напрямую и не можешь критически накосячить, а ненужные данные удаляются автоматически (то есть утечки памяти практически невозможны).
Но существует и возможность работать с неуправляемым кодом, использовать прямой доуступ к памяти, о чем собственно статья. Это считается небезопасным (отсюда и ключевое слово unsafe), потому что работоспособность, стабильность и защищенность программы начинает на 100% зависеть от уровня криворукости программиста.
Ярг Восьмой #7 - 3 years ago 0
Голосов: +0 / -0
Hanabishi, т.е. он пытался обойти виртуальную машину, если я правильно понял. Это как внутренняя система безопасности проверки жизненности цикла программы, что-то наподобие в этом роде. Она добавляет 100+ лишних килобайт. Но её вроде отключать можно, но лучше не надо, иначе есть риск поменять ОЗУ. Мой продвинутый друг в программировании занимался подобным, но потом перешёл на ассемблер из-за паранойности C++\C#, врать не буду, но это не совсем точные сведения. Или я снова туплю?
Hanabishi #8 - 3 years ago 0
Голосов: +0 / -0
KingMaximax, какой-то странный вопрос. Синтаксически C# происходит от C, что вроде очевидно. Соответсвенно и форма записи указателей взята оттуда.
Но несмотря на внешнюю схожесть, внутри C# работает абсолютно по-другому. Даже в небезопасном контексте с прямым доступом к памяти, код все равно выполняется на виртуальной машине.
Ярг Восьмой #9 - 3 years ago 0
Голосов: +0 / -0
Мне кажется или это похоже на C++ в C#?
Не знаю, я пользуюсь mem alloc'ом в некоторых своих подопытных детишках по C++ только...
У меня свои шаманства с бубном, короче.
Hanabishi #10 - 3 years ago 0
Голосов: +0 / -0
uranus, быстрее чем функции стандартной библиотеки можно добиться и не прибегая к небезопасному коду (написать собственную реализацию), тут о другом речь.
uranus #11 - 3 years ago 0
Голосов: +0 / -0
Реально же практическое применение я вижу в двух вариантах:
Если не ошибаюсь, на хабре доказывали, что таким способом можно добиться большей скорости, чем у аналогичных функций стандартной библиотеки. Только не кидайте камнями, может, я не так понял просто.
ScorpioT1000 #12 - 3 years ago 2
Голосов: +2 / -0
Или foreach, вообще внутри всё запаковано
Hanabishi #13 - 3 years ago 2
Голосов: +2 / -0
Msey, плохой случай. Надо писать так, чтобы проверки границ в сейф коде убирались оптимизатором.
То есть допустим в случае
//a - некоторый массив
for(int i = 0; i < a.Length; i++)
проверки границ не будет. И разницы производительности с небезопасным вариантом тоже. Потому что оптимизатор умный.
Лезть ради этого в небезопасный контекст - крайне сомнительное занятие, нужно просто правильно писать в безопасном.
Msey #14 - 3 years ago 0
Голосов: +0 / -0
Самый частый случай, который встречался мне на практике - это более шустрые операции с массивами и строками за счет отсутствия проверки их границ.
Hanabishi #15 - 3 years ago (изм. ) 1
Голосов: +1 / -0
Забыл написать для чего это вообще надо. Для начала использования небезопасного кода нужно стараться избегать (помните что 95% дырок безопасности в истории это вина программиста, прозевавшего проверки в неуправляемом коде). Реально же практическое применение я вижу в двух вариантах:
  1. Если в проекте используется неуправляемая библиотека. И то очень специфически, если у вас структуры данных прибиты гвоздями. В большинстве же случаев можно обойтись маршалингом в безопасным контексте.
  2. Вы кулхацкер, который по каким-то причинам захотел использовать именно шарп. Тогда думаю вы в этой статье и не нуждаетесь. Хотя кстати я могу привести личные примеры такого применения )
Msey #16 - 3 years ago 3
Голосов: +3 / -0
BrEd Pitt: по-разному бывает. Часть напишу сам, часть возьму из одного источника, часть из мсдн.
Первые статьи вообще полностью сам писал, опираясь изредка на оф. документацию, чтобы лишний раз не сморозить дезинформирующую отсебятину.
1

Атрибуты в C#

» Программирование
Атрибутами в C# являются классы, содержащие в себе некоторую метаинформацию, встраиваемую в сборку приложения.

Читать далее...