- 1
http://mainisusuallyafunction.blogspot.com/2014/02/x86-is-turing-complete-with-no-registers.html
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
http://mainisusuallyafunction.blogspot.com/2014/02/x86-is-turing-complete-with-no-registers.html
посмотрите в комменты
−2
from lib2to3.pgen2 import token
import logging
import re
import requests
import pandas as pd
from bs4 import BeautifulSoup
from aiogram import Bot, Dispatcher, executor, types
from aiogram.dispatcher.filters import Text
bot = Bot(token="5243563589:AAHZL9JyJ0Q36dBpuXcjgzDuM-0n9OEWhpk")
dp = Dispatcher(bot)
logging.basicConfig(level=logging.INFO)
sso = "http://pinskgptklp.brest.by/sso.html"
pto = "http://pinskgptklp.brest.by/pto2.html"
logg = ""
response = requests.get(sso)
soup = BeautifulSoup(response.text, "lxml")
quotes = soup.find_all("tbody")
t = str(quotes)
arr = t.split('</tbody>, ')
stroka = arr[1]
stroki = stroka.split('<tr')
i = 1
j = 0
tablica = [0] 8
ttt = [[]] 8
tab1 = [0] len(stroki)
while i < len(tab1):
j = 0
tab1 = re.sub(r'\n+', '\n', stroki)
tab1 = re.sub(r'\<[^>]\>', '', "<" + stroki).split('\n')
while j < len(tab1):
if tab1[j] != "" and tab1[j] != "]":
logg += '|' + tab1[j]
j = j + 1
logg += '~'
i = i + 1
q = []
rem = logg.split('~')
o = 0
while o < len(rem):
q.append(rem.split('|'))
o = o + 1
o = 0
while o < len(rem):
o = o + 1
print(q)
sso_sh = q[4][1] + q[4][2] + q[4][3] + q[4][4] + '\n' + q[0][2] + " - " + q[4][5] + '\n' + q[0][3] + " - " + q[4][8]
sso_p = q[5][1] + q[5][2] + q[5][3] + q[5][4] + '\n' + q[0][2] + " - " + q[5][5] + '\n' + q[0][3] + " - " + q[5][8]
@dp.message_handler(commands="start")
async def cmd1(message: types.Message):
keyboard = types.InlineKeyboardMarkup()
keyboard.add(types.InlineKeyboardButton(text="ПТО", callback_data="n1"))
keyboard.add(types.InlineKeyboardButton(text="CCO", callback_data="n2"))
await message.answer("Действия:", reply_markup=keyboard)
#@dp.message_handler(Text(equals="Показать что-то"))
#async def cmd2(message: types.Message):
#await message.reply(stroki[1])
@dp.callback_query_handler(text="see")
async def see(call: types.CallbackQuery):
await call.message.answer("123123123")
await call.answer()
@dp.callback_query_handler(text="n1")
async def next(call: types.CallbackQuery):
keyboard = types.InlineKeyboardMarkup()
keyboard.add(types.InlineKeyboardButton(text=q[4][3], callback_data="pto1"))
keyboard.add(types.InlineKeyboardButton(text=q[5][3], callback_data="pto2"))
await call.message.answer("Что именно?", reply_markup=keyboard)
await call.answer()
@dp.callback_query_handler(text="n2")
async def next(call: types.CallbackQuery):
keyboard = types.InlineKeyboardMarkup()
keyboard.add(types.InlineKeyboardButton(text=q[4][3], callback_data="sso1"))
keyboard.add(types.InlineKeyboardButton(text=q[5][3], callback_data="sso2"))
await call.message.answer("Что именно?", reply_markup=keyboard)
await call.answer()
@dp.callback_query_handler(text="sso1")
async def next(call: types.CallbackQuery):
await call.message.answer(sso_sh)
Саб, нужна помощь с ботом, нужно сделать 2 часть с кнопкой ПТО, а то не получается спарсить
0
std::vector<Token> Tokenizer::coreTokenize(std::string src)
{
const boost::escaped_list_separator<char> els("\\"s, " \n\t"s, "\";");
boost::replace_all(src, "\"", R"("\")");
boost::replace_all(src, ";", ";\\;");
boost::replace_all(src, "\\n", "\\\\n");
boost::replace_all(src, "\n", "\\n");
const boost::tokenizer tok(src, els);
std::vector<Token> tokens;
std::ranges::copy(tok, std::back_inserter(tokens));
bool (std::string::*starts_with) (char const) const = &std::string::starts_with;
std::remove_if(tokens.begin(), tokens.end(), boost::bind(starts_with, boost::placeholders::_1, ';'));
return tokens;
}
захотел добавить в свой компилятор подсветку ошибок. пришлось накостылить.
0
with ZeoDataModule.TmpZQuery do
begin
ZeoDataModule.TmpZQuery.Close;
ZeoDataModule.TmpZQuery.SQL.Clear;
//ZeoDataModule.TmpZQuery.SQL.Add(ZeoDataModule.zqryOstatki.SQL.Text);
ZeoDataModule.TmpZQuery.SQL.Add(TZQuery(dbgrdh1.DataSource.DataSet).SQL.Text);
// ZeoDataModule.Add ('select *,''0.00'' as str_cen from material.ostatki_by_skladid(:skladid,:dt) ');
ZeoDataModule.TmpZQuery.SQL.Add (' and tovarid in(');
for i:=0 to OstatkiTovarList.Count-1 do
begin
ZeoDataModule.TmpZQuery.SQL.Add(ostatkiTovarList[i]);
if i< OstatkiTovarList.Count-1 then
ZeoDataModule.TmpZQuery.SQL.Add(',');
end;
ZeoDataModule.TmpZQuery.SQL.Add(')');
ZeoDataModule.TmpZQuery.SQL.Add('order by nt');
//-------
zQ_sv:= DataModulePrint.frxDBDatasetOstatki.DataSet as TZQuery; // zqryOstatki
//--------
ZeoDataModule.zqrySumBySS.Close;
// ZeoDataModule.zqrySumBySS.SQL.Add('select :dt,:skladid from material.globalvalues where 1=2'); // пустой набор
ZeoDataModule.zqrySumBySS.ParamByName('skladid').Value:=10000; // несуществующий склад (пустой набор)
ZeoDataModule.zqrySumBySS.Open;
ZeoDataModule.TmpZQuery.ParamByName('skladid').Value:=zQ_sv.ParamByName('skladid').Value;
ZeoDataModule.TmpZQuery.ParamByName('dt').AsDate:=zQ_sv.ParamByName('dt').AsDate;
ZeoDataModule.TmpZQuery.Open;
DataModulePrint.frxDBDatasetOstatki.DataSet := ZeoDataModule.TmpZQuery;
DataModulePrint.frxDBDatasetSumBySS.DataSet := ZeoDataModule.zqrySumBySS;
if TypeVed=USUAL_OST then
begin
if Material.TypeSkladId = 4 then
DataModulePrint.ShowReport('ostatki.fr3')
else
DataModulePrint.ShowReport('ostatki.fr3')
end
else if TypeVed = NO_MOVE_OST then
DataModulePrint.ShowReport('ostatki_no_move.fr3');
ZeoDataModule.TmpZQuery.Close;
DataModulePrint.frxDBDatasetOstatki.DataSet := zQ_sv;
ZeoDataModule.zqrySumBySS.Close;
ZeoDataModule.zqrySumBySS.ParamByName('skladid').Value:=Material.Skladid;
// ZeoDataModule.zqrySumBySS.SQL.Clear();
// ZeoDataModule.zqrySumBySS.SQL.Add(sqlSum_sv);
ZeoDataModule.zqrySumBySS.Open;
end;
ZeoDataModule.TmpZQuery.SQL.Add(TZQuery( dbgrdh1.DataSource.DataSet).SQL.Text); - особенно понравилось. Молчу про "with".
0
ttt as (
select o.tovarid, o.edizmerid, o.cena,
o.vos, o.cena*o.vos as sum_vos,
coalesce(p.sum_kl,0.0) as _prih_kl, coalesce( p.sum_prih,0.0) as sum_prih,
coalesce( p.sum_prih_docs,0.0) as sum_prih_docs,
coalesce(r.sum_kl,0.0) as _rash_kl, coalesce(r.sum_rash,0.0) as sum_rash ,
coalesce(r.sum_rash_docs,0.0) as sum_rash_docs ,
coalesce(rd.sum_kl,0.0) as _rash_doc_kl, coalesce(rd.sum_rash_doc,0.0) as sum_rash_doc,
coalesce(rd.sum_rash_doc_docs, 0.0) as sum_rash_doc_docs ,
-- coalesce(rs.sum_kl,0.0) as _rash_storno_kl, coalesce(rs.sum_rash,0.0) as sum_rash_storno ,
o.ostid, o.ss, o.sb
from ost_ o
left join prih p on (o.tovarid = p.tovarid
and o.edizmerid=p.edizmerid
and o.ss = p.ss
and o.sb = p.sb)
left join rash r on (o.tovarid =r.tovarid
and o.edizmerid=r.edizmerid
and o.ss = r.ss
and o.sb = r.sb)
left join rash_doc rd on (o.tovarid =rd.tovarid
and o.edizmerid=rd.edizmerid
and o.ss = rd.ss_
and o.sb = rd.sb_)
-- left join rash_old_072018 ro on (o.tovarid =ro.tovarid
-- and o.edizmerid=ro.edizmerid)
-- 08.2018 left join rash_storno rs on (o.tovarid =rs.tovarid and o.edizmerid=rs.edizmerid)
-- where o.vos+p.sum_kl>0
),
tt as (
select *, ttt.vos + ttt._prih_kl - ttt._rash_kl as ost_fact ,
-- case when (ttt.vos+ttt._prih_kl<>0 ) then
-- ( ttt.sum_vos+ttt.sum_prih -ttt.sum_rash_storno)/(ttt.vos+ttt._prih_kl-ttt._rash_storno_kl)
-- else ttt.cena end as new_cen from ttt
-- case when (ttt.vos+ttt._prih_kl+ttt._rash_storno_kl-ttt._rash_kl-ttt._rash_doc_kl<>0 ) then
-- ( ttt.sum_vos+ttt.sum_prih +ttt.sum_rash_storno-ttt.sum_rash-ttt.sum_rash_doc)/(ttt.vos+ttt._prih_kl-ttt._rash_storno_kl-ttt._rash_kl-ttt._rash_doc_kl)
case when (ttt.vos+ttt._prih_kl-ttt._rash_kl-ttt._rash_doc_kl<>0 ) then
( ttt.sum_vos+ttt.sum_prih -ttt.sum_rash-ttt.sum_rash_doc)/(ttt.vos+ttt._prih_kl-ttt._rash_kl-ttt._rash_doc_kl)
else ttt.cena end as new_cen
from ttt
)
select tt.tovarid,
tt.cena,
tt.edizmerid,
t.kt,
t.nt,
tt.vos,
round(sum_vos,2),
u.name_u,
tt._prih_kl as _prih_kl,
-- round( tt.sum_prih,2) as sum_prih ,
tt.sum_prih_docs as sum_prih ,
tt._rash_kl as _rash_kl,
-- round( tt.sum_rash,2) as sum_rash ,
tt.sum_rash_docs as sum_rash ,
tt.ost_fact,
-- round(tt.ost_fact* tt.new_cen,5),
round(tt.ost_fact* tt.new_cen,2),
t.priz,
round(tt.new_cen,5),
tt.ostid,
tt._rash_doc_kl,
-- tt.sum_rash_doc,
tt.sum_rash_doc_docs,
t.dk_2010,
coalesce( tt.ss, '0'),
coalesce( tt.sb, '0')
from tt
left join material.tovar t on (t.tovarid=tt.tovarid)
left join nsi.units u on (u.id=tt.edizmerid);
Называется найди разницу между ttt, tt и t
0
Процедура ПоказатьРасчетныеСчета()
ТаблицаРасчетныхСчетов.Очистить();
Если ЭтоНовый() Тогда
Возврат;
КонецЕсли;
Выборка = Справочники.ТСЖ.Выбрать();
Пока Выборка.Следующий() Цикл
ТСЖНеБух = Выборка.Ссылка;
Если (ТСЖНеБух.ПометкаУдаления) ИЛИ (ТСЖНеБух.ЭтоУК=1) ИЛИ (ТСЖНеБух.ЭтоУК=2) Тогда
Продолжить;
КонецЕсли;
//--- (1)--- Все СОБСТВЕННЫЕ счета (выборка по владельцу счета)
Если (НЕ ТСЖНеБух.НаБалансеУК) Тогда
ВыбСчетов = Справочники.БанковскиеСчета.Выбрать(,ТСЖНеБух,,"Код Возр");
Пока ВыбСчетов.Следующий() Цикл
Если (НЕ ВыбСчетов.ПометкаУдаления) Тогда
ДобавитьСчет(ТСЖНеБух, ВыбСчетов.Ссылка, ВыбСчетов.Ссылка.ХранилищеУслуг);
КонецЕсли;
КонецЦикла;
КонецЕсли;
//--- (2)--- Все ЧУЖИЕ счета (обход табличной части СчетаУК)
Для Каждого ВыбСчет Из ТСЖНеБух.СчетаУК Цикл
Если (ВыбСчет.Организация = Справочники.ТСЖ.ПустаяСсылка()) ИЛИ
(ВыбСчет.РасчетныйСчет = Справочники.БанковскиеСчета.ПустаяСсылка()) Тогда
Продолжить;
КонецЕсли;
Если НЕ ВыбСчет.РасчетныйСчет.ПометкаУдаления Тогда
ДобавитьСчет(ТСЖНеБух, ВыбСчет.РасчетныйСчет, ВыбСчет.ХранилищеУслуг);
КонецЕсли;
КонецЦикла;
//----------
КонецЦикла;
КонецПроцедуры
Процедура ДобавитьСчет(ТСЖНеБух, РСчет, Хран)
НовСтр = ТаблицаРасчетныхСчетов.Добавить();
НовСтр.Организация = ТСЖНеБух;
НовСтр.Получатель = РСчет.Владелец;
НовСтр.РасчетныйСчет = РСчет;
Если ТСЖНеБух.ВсеУслугиВОдной Тогда
НовСтр.Флаг = "Да, может.";
Иначе
МассУслуг = глПолучитьМассивСсылокУслуг(Хран);
НовСтр.Флаг = ?(МассУслуг.Найти( Ссылка ) = Неопределено, "Нет", "Да, может.");
КонецЕсли;
КонецПроцедуры
ХранилищеЗначений, любимый(?) костыль людей, не слышавших о нормализации.
Вместо того, чтобы сделать регистр сведений со связями (хотя бы)счёт-услуга, мы запихнём список услуг в ХЗ - реквизит счёта. Это ведь так удобно(на самом деле нет)!
−2
_ _
|_| |_|
| | /^^^\ | |
_| |_ (| "o" |) _| |_
_| | | | _ (_---_) _ | | | |_
| | | | |' | _| |_ | `| | | | |
\ / / \ \ /
\ / / /(. .)\ \ \ /
\ / / / | . | \ \ \ /
\ \/ / ||Y|| \ \/ /
\_/ || || \_/
() ()
|| ||
ooO Ooo
Битч
+1
#include <stdio.h>
#include <memory>
#define Property(type,name) type name;auto &set_##name(type val){name = val; return *this;}
#define Set(x,y) set_##x(y)
//#define Create(type, ...) (*(new type(__VA_ARGS__)))
template <typename T>
static inline T& Create_(const char *name)
{
return *(new T(name));
}
#define Create(type, ...) Create_<type>(__VA_ARGS__)
template <typename T>
static inline T CreateNoAlloc_(const char *name)
{
return T(name);
}
#define CreateNoAlloc(type, ...) CreateNoAlloc_<type>(__VA_ARGS__)
struct BaseItem
{
const char *Name;
BaseItem(const char *n): Name(n) {}
Property(int, Width);
Property(int, Height);
};
#include <vector>
struct Markup
{
std::vector<BaseItem*> Children;
template <typename T>
Markup &Add(T &item)
{
Children.push_back(&item);
return *this;
}
};
static inline Markup CreateMarkup(const char *n)
{
return Markup();
}
/*
struct Markup2
{
std::vector<std::shared_ptr<BaseItem>> Children;
template <typename T>
Markup2 &Add(T item)
{
Children.push_back(std::shared_ptr(&item));
return *this;
}
};
*/
template<std::size_t I = 0, typename... Tp>
inline typename std::enable_if<I == sizeof...(Tp), void>::type
print(std::tuple<Tp...>& t)
{ }
template<std::size_t I = 0, typename... Tp>
inline typename std::enable_if<I < sizeof...(Tp), void>::type
print(std::tuple<Tp...>& t)
{
printf("%s\n",std::get<I>(t).Name);
print<I + 1, Tp...>(t);
}
#include <string.h>
static BaseItem NOT_FOUND("NOT_FOUND");
template<typename T, std::size_t I = 0, typename... Tp>
inline typename std::enable_if<I == sizeof...(Tp), void>::type
print1(std::tuple<Tp...>& t, const char *n)
{ }
template<typename T, std::size_t I = 0, typename... Tp>
inline typename std::enable_if<I < sizeof...(Tp), T&>::type
print1(std::tuple<Tp...>& t, const char *n)
{
if( !strcmp(std::get<I>(t).Name, n))
return std::get<I>(t);
print1<T, I + 1, Tp...>(t,n);
return NOT_FOUND;
}
#define CreateMarkup(...) std::make_tuple(__VA_ARGS__)
#define AppendMarkup(src, ...) std::tuple_cat(src, std::make_tuple(__VA_ARGS__))
#define MarkupItem(markup,type,name,action) namespace {type &i = print1<type>(markup,name).action; }
auto markup1 = CreateMarkup(BaseItem("test").Set(Width,14), BaseItem("test2"));
auto markup2 = AppendMarkup(markup1,BaseItem("test3").Set(Width,15));
auto markup3 = markup1;
MarkupItem(markup3,BaseItem,"test2",Set(Width,16));
template <typename T>
Т.к юзается препроцессор, запощу в C
+3
Афганистан заебал.
+2
class IntIter {
constructor(private i = 0) {}
next() {
type retType = [value: typeof this.i, done: boolean];
if (this.i < 10) {
return <retType>[this.i++, false];
}
return <retType>[this.i, true];
}
}
function main() {
let it = new IntIter();
for (const o of it)
{
print(o);
}
for (const o of "Hello")
{
print(o);
}
}
добавил поддержку ForOf для ES2015 и ES3; причем компилятор сам определяет какой вариант лучше юзать