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

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

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

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

Вся таже ошибка
Прикрепленные файлы
Msey #2 - 2 месяца назад 0
точнее командную стройку?
строку*
именно
h0rde #3 - 2 месяца назад 0
получается я должен открыть sublime text от имени администратора?

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

строку*
Msey #4 - 2 месяца назад (отредактировано ) 0
Код лучше скопировать под кат
кат
((
//code
))

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

Проблема telegram bot

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

На 1:25 он рассказывает что за конфиг youtu.be/M8fhrtvedHA?t=84
Автор даже не с начала смотрел, жесть какая... и это хаудихо, который совсем для младенцев)
h0rde #3 - 2 месяца назад 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 - 2 месяца назад (отредактировано ) 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 - 2 месяца назад 0
Для начала расскажи, откуда ты скопировал весь этот код / скачал пайтоновские сурсы
После этого уже можно начинать расследование по токенам
ScorpioT1000 #6 - 2 месяца назад (отредактировано ) 0
не знаю, ты же его импортировал конфиг в код не просто так
h0rde #7 - 2 месяца назад 0
а как сделать этот токен вне кода

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

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

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

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

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

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

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

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

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

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

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

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

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

Атрибуты в C#

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

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

[C#, Regex] Разделить строку на слова и цитаты

» Программирование
Итак, я хотел разбить регуляркой такую сроку:
aaaaa bbb "ccc ссс"
На такой массив:
[0] = aaaaa 
[1] = bbb 
[2] = ccc ссс
Когда-то давно я уже задавал такой вопрос, на что мне ответили таким вот паттерном:
[^\s"']+|"([^"]*)"|'([^']*)'
И все бы хорошо, но теперь мне понадобилось сохранять в цитатах кавычки и апострофы, т.е. результат уже должен быть таким:
[0] = aaaaa 
[1] = bbb 
[2] = "ccc ссс"
Пробовал кавычки вносить в скобки, но это не работает.
uranus #8 - 2 года назад 0
Nerevar, огромное спасибо, все работает!
Nerevar #9 - 2 года назад (отредактировано ) 3   
Попробуйте такую строку
new Regex(@"[^\s""']+|""([^""]*)""|'([^']*)'")
Прикрепленные файлы