- 1
- 2
- 3
- 4
- 5
template <typename T, typename U>
auto operator()(T&& t, U&& u) const
-> decltype(forward<T>(t) + forward<U>(u)) {
return forward<T>(t) + forward<U>(u);
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+1007
template <typename T, typename U>
auto operator()(T&& t, U&& u) const
-> decltype(forward<T>(t) + forward<U>(u)) {
return forward<T>(t) + forward<U>(u);
}
+125
int function(void) {
static int i, state = 0;
switch (state) {
case 0: /* start of function */
for (i = 0; i < 10; i++) {
state = 1; /* so we will come back to "case 1" */
return i;
case 1:; /* resume control straight after the return */
}
}
}
Нестандартное применение свитча.
Тут оно нафиг не нужно.
Источник: http://www.gamedev.ru/code/forum/?id=142536
+170
const volatile void
Тибетская философия С++. Постоянная изменчивая пустота.
+102
// тут обычный паскалевский код...
if x > y then asm // если икс больше игрека
mov eax, x // то меняем их значения местами
mov edx, y
mov x, edx
mov y, eax
end;
Как поменять значения двух целочисленных переменных, не заводя третью? Года 3 назад я делал примерно так.
+1
def __get_column_names(table: str) -> tuple:
try:
with conn:
cur.execute("SELECT name FROM PRAGMA_TABLE_INFO(?)", (table,))
column_names = cur.fetchall()
except Exception as excpt:
print(excpt)
column_names = tuple(i[0] for i in column_names)
return column_names
def db_register_user(user_data: types.User):
"""
SQL запрос для внесения данных о пользователе
Args:
user_data: telebot User объект, содержащий словарь с параметрами пользователя
"""
user_data = user_data.to_dict()
column_names: tuple = __get_column_names('Users')
user_values = tuple(user_data.get(key) for key in column_names if key in user_data)
try:
with conn:
query = 'INSERT INTO Users cn'.replace('cn', str(column_names))+' VALUES (?,?,?,?,0,3)'
parameters = (*user_values,)
conn.execute(query, parameters)
except Exception as excpt:
print(excpt)
conn.close()
На сколько в такой ситуации .format не безопасен? Идея в том, чтобы не объебошится программисту в коде введя неверное значение колонки. Для этого имена колонок берутся из самой базы (есть мысль ещё и типы брать). Есть вариант реализации получше? Спасибо
+1
from vk_bot.vk_config import GROUP_ID, TOKEN
import vk_api
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
import random
from vk_bot.db_session import *
from vk_bot.__all_models import BugReport, Comment
import datetime
from vk_bot.vacancies import get_vacancies, ServerError
def main():
global_init("feedback/feedback.sqlite")
vk_session = vk_api.VkApi(
token=TOKEN)
vk = vk_session.get_api()
longpoll = VkBotLongPoll(vk_session, GROUP_ID)
bot_state = {}
def send_msg(msg):
vk.messages.send(user_id=event.obj.message['from_id'],
message=msg,
random_id=random.randint(0, 2 ** 64))
for event in longpoll.listen():
if event.type == VkBotEventType.MESSAGE_NEW:
if event.obj.message['from_id'] in bot_state and bot_state[event.obj.message['from_id']]:
state = bot_state[event.obj.message['from_id']]
if state == 1:
send_msg('Спасибо, ваше мнение для нас очень важно.')
Comment().new(event.obj.message['from_id'], datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
event.obj.message['text'])
bot_state[event.obj.message['from_id']] = 0
elif state == 2:
BugReport().new(event.obj.message['from_id'], datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
event.obj.message['text'])
send_msg('Спасибо за ваш отзыв, мы постараемся исправить проблему в ближайшем будущем.')
bot_state[event.obj.message['from_id']] = 0
elif state == 4:
parameters = [r.strip() for r in event.obj.message['text'].split(',')]
try:
vacancies = get_vacancies(parameters[0], parameters[1])
except ServerError:
send_msg('Не удалось получить ответ от сервера, попробуйте позже')
bot_state[event.obj.message['from_id']] = 0
except Exception:
send_msg('Данные введены некорректно, попробуйте заново.')
send_msg('Формат: <должность>, <мин. зарплата>')
else:
if len(vacancies) == 0:
send_msg('По данным критериям ничего не найдено')
else:
vacancy_list = [f"{i}) {v['title']}, {v['salary']}" for i, v in enumerate(vacancies)]
send_msg('\n'.join(vacancy_list))
if bot_state[event.obj.message['from_id']] == 0:
send_msg('1 - написать отзыв или предложение\n 2 - сообщить о неправильной работе сайта\n 3 - документация к api\n 4 - посмотреть список доступных вакансий\n иначе напишите сообщение и модератор вскоре на него ответит')
elif event.obj.message['from_id'] not in bot_state:
send_msg('1 - написать отзыв или предложение\n 2 - сообщить о неправильной работе сайта\n 3 - документация к api\n 4 - посмотреть список доступных вакансий\n иначе напишите сообщение и модератор вскоре на него ответит')
bot_state[event.obj.message['from_id']] = 0
else:
key = event.obj.message['text'][0]
if key == '1':
send_msg('Пожалуйста, поделитесь вашим мнением по поводу сайта.')
bot_state[event.obj.message['from_id']] = 1
elif key == '2':
send_msg('Пожалуйста, максимально подробно опишите вашу проблему.')
bot_state[event.obj.message['from_id']] = 2
elif key == '3':
send_msg('https://www.youtube.com/watch?v=dQw4w9WgXcQ')
elif key == '4':
send_msg('Введите название должности и минимальную желаемую зарплату по образцу:<должность>, <мин. зарплата>')
bot_state[event.obj.message['from_id']] = 4
else:
send_msg('Модератор вам скоро ответит, пожалуйста подождите.')
if __name__ == '__main__':
main()
Код бота поддержки.
Один из товарищей по проекту ничего в нем не делал,
а потом чтобы его не выгоняли попросил дать ему хотя бы бота.
Вот результат.
Модели и вспомогательные файлы оставлять думаю не имеет смысла, все и так очевидно
0
Vistefan, пойдёшь дядьку навестить?
https://habr.com/ru/company/jugru/blog/455936/
−6
+ (NSString*)enumToString:(SomeEnum)someEnumValue
{
NSDictionary *strings =
@{
@(SomeEnumUndefined) : @"Undefined",
@(SomeEnumValue1) : @"Value1",
@(SomeEnumValue2) : @"Value2",
// Ещё 100500 пар
};
return strings[@(someEnumValue)];
}
Имена изменены, но смысл понятен. Точнее, непонятен.
+6
$query_list_builder = array(
'1000' => " and account = $account_id and creator = $creator_id",
'0100' => " and account = $account_id and salepoint = $salepoint_id and creator <> $creator_id ",
'0010' => " and account = $account_id and creator <> $creator_id and salepoint <> $salepoint_id ",
'0001' => " and account IN ($watchlist) and creator <> $creator_id and salepoint <> $salepoint_id and account <> $account_id ",
'1100' => " and salepoint = $salepoint_id or creator = $creator_id and account = $account_id ",
'1010' => " and account = $account_id and salepoint <> $salepoint_id or creator = $creator_id ",
'1001' => " and account IN ($watchlist) and account <> $account_id or creator = $creator_id ",
'1110' => " and account = $account_id or creator = $creator_id and salepoint = $salepoint_id ",
'1101' => " and account IN ($watchlist) and account <> $account_id or creator = $creator_id or salepoint = $salepoint_id ",
'1111' => " and account IN ($watchlist) or account = $account_id or creator = $creator_id or salepoint = $salepoint_id ",
'0000' => " and creator <> $creator_id and salepoint <> $salepoint_id and account NOT IN ($watchlist) ",
'0011' => " and account IN ($watchlist) and salepoint <> $salepoint_id and creator <> $creator_id ",
'0111' => " and account IN ($watchlist) and creator <> $creator_id ",
'0110' => " and account = $account_id and creator <> $creator_id ",
'0101' => " and account IN ($watchlist) and account <> $account_id or salepoint = $salepoint_id and creator <> $creator_id ",
'1011' => " and account IN ($watchlist) and salepoint <> $salepoint_id or creator = $creator_id ",
);
+6
https://github.com/pascalabcnet/pascalabcnet
ШОК! Говном компилируется говно. Это рекорд