- 1
Гастрономии-тред
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+3
Гастрономии-тред
Знаете ли Вы, что...
* ...Что делают с хлебом, колбасами и другими изделиями, которые Вы все так любите кушать, когда истекает срок их годности?
Ответ под спойлером. Продукты размалывают и понемногу добавляют в сырье, повторно вводя в техноцикл.
*...В муке, а стало быть, и в изделиях из нее всегда содержатся фекалии грызунов.
* Колбасный фарш имеет серый цвет. Для того, чтобы готовые изделия стали приятными на вид, в сырье добавляют красители и нитрит натрия - консервант.
0
#!/usr/bin/env python3
import sys
import socket
def main():
if len(sys.argv) != 2:
print("Программа ожидает 1 аргумент: доменное имя хоста")
return 1
# Input.
host_name = sys.argv[1]
print(f"Доменное имя хоста: {host_name}")
host_ip = socket.gethostbyname(host_name)
print(f"IP-адрес хоста: {host_ip}")
host_port = 33433
timeout = 2 # Seconds.
receiving_socket = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_ICMP)
receiving_socket.setsockopt(socket.SOL_IP, socket.IP_HDRINCL, 1)
receiving_socket.settimeout(timeout)
receiving_socket.bind(("", host_port))
sending_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
sending_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
received_ip = None
current_hop = 1
max_hop = 100
while received_ip != host_ip and current_hop < max_hop:
sending_socket.setsockopt(socket.IPPROTO_IP, socket.IP_TTL, current_hop)
sus = True
for i in range(7):
try:
sending_socket.sendto(bytes(str(current_hop), 'utf-8'), (host_ip, host_port))
data, addr = receiving_socket.recvfrom(1)
if addr:
received_ip = addr[0]
print(f"hop: {current_hop} -> {received_ip}")
sus = False
break
else:
raise "sus"
except:
continue
if sus:
print(f"hop: {current_hop} -> *")
current_hop += 1
if __name__ == "__main__":
main()
Что-то я давно не заходил... был занят, писал утилиту. Лицензия – «MIT».
0
public static LanguageLevel fromPythonVersion(@Nullable String pythonVersion) {
if (pythonVersion == null) return null;
if (pythonVersion.startsWith("2")) {
if (pythonVersion.startsWith("2.4")) {
return PYTHON24;
}
if (pythonVersion.startsWith("2.5")) {
return PYTHON25;
}
if (pythonVersion.startsWith("2.6")) {
return PYTHON26;
}
if (pythonVersion.startsWith("2.7")) {
return PYTHON27;
}
return DEFAULT2;
}
if (pythonVersion.startsWith("3")) {
if (pythonVersion.startsWith("3.0")) {
return PYTHON30;
}
if (pythonVersion.startsWith("3.1.") || pythonVersion.equals("3.1")) {
return PYTHON31;
}
if (pythonVersion.startsWith("3.2")) {
return PYTHON32;
}
if (pythonVersion.startsWith("3.3")) {
return PYTHON33;
}
if (pythonVersion.startsWith("3.4")) {
return PYTHON34;
}
if (pythonVersion.startsWith("3.5")) {
return PYTHON35;
}
if (pythonVersion.startsWith("3.6")) {
return PYTHON36;
}
if (pythonVersion.startsWith("3.7")) {
return PYTHON37;
}
if (pythonVersion.startsWith("3.8")) {
return PYTHON38;
}
if (pythonVersion.startsWith("3.9")) {
return PYTHON39;
}
if (pythonVersion.startsWith("3.10")) {
return PYTHON310;
}
if (pythonVersion.startsWith("3.11")) {
return PYTHON311;
}
return DEFAULT3;
}
return getDefault();
}
https://github.com/JetBrains/intellij-community/blob/07cef3c4397f026a5f7aa26e783b0bf7dfee5ab2/python/python-psi-api/src/com/jetbrains/python/psi/LanguageLevel.java#L125
−2
private delegate void XFXOPDO(byte cmd);
private delegate void FXCBOPDO(byte cmd, ushort adr);
private delegate void ALUALGORITHM(byte src);
public delegate byte MEMREADER(ushort ADDR);
public ulong Tact;
public Registers regs = new Registers();
public bool HALTED;
public bool IFF1;
public bool IFF2;
public byte IM;
public bool BlockINT;
public OPFX FX;
public OPXFX XFX;
public bool INT;
public bool NMI;
public bool RST;
public byte FreeBUS = byte.MaxValue;
public OnRDMEM ReadMemory;
public OnWRMEM WriteMemory;
public OnRDPORT ReadPort;
public OnWRPORT WritePort;
public OnCALLBACK OnCycle;
private XFXOPDO[] opTABLE;
private XFXOPDO[] fxopTABLE;
private XFXOPDO[] edopTABLE;
private XFXOPDO[] cbopTABLE;
private FXCBOPDO[] fxcbopTABLE;
private static byte[] conds = new byte[4] { 64, 1, 4, 128 };
private static ALUALGORITHM[] alualg;
private ALUALGORITHM[] alulogic;
private static readonly string[] DirectZ80Code = new string[256]
{
"NOP", "LD BC,$W", "LD (BC),A", "INC BC", "INC B", "DEC B", "LD B,$N", "RLCA", "EX AF,AF'", "ADD HL,BC",
"LD A,(BC)", "DEC BC", "INC C", "DEC C", "LD C,$N", "RRCA", "DJNZ $DIS", "LD DE,$W", "LD (DE),A", "INC DE",
"INC D", "DEC D", "LD D,$N", "RLA", "JR $DIS", "ADD HL,DE", "LD A,(DE)", "DEC DE", "INC E", "DEC E",
"LD E,$N", "RRA", "JR NZ,$DIS", "LD HL,$W", "LD ($W),HL", "INC HL", "INC H", "DEC H", "LD H,$N", "DAA",
"JR Z,$DIS", "ADD HL,HL", "LD HL,($W)", "DEC HL", "INC L", "DEC L", "LD L,$N", "CPL", "JR NC,$DIS", "LD SP,$W",
"LD ($W),A", "INC SP", "INC (HL)", "DEC (HL)", "LD (HL),$N", "SCF", "JR C,$DIS", "ADD HL,SP", "LD A,($W)", "DEC SP",
"INC A", "DEC A", "LD A,$N", "CCF", "LD B,B", "LD B,C", "LD B,D", "LD B,E", "LD B,H", "LD B,L",
"LD B,(HL)", "LD B,A", "LD C,B", "LD C,C", "LD C,D", "LD C,E", "LD C,H", "LD C,L", "LD C,(HL)", "LD C,A",
"LD D,B", "LD D,C", "LD D,D", "LD D,E", "LD D,H", "LD D,L", "LD D,(HL)", "LD D,A", "LD E,B", "LD E,C",
"LD E,D", "LD E,E", "LD E,H", "LD E,L", "LD E,(HL)", "LD E,A", "LD H,B", "LD H,C", "LD H,D", "LD H,E",
"LD H,H", "LD H,L", "LD H,(HL)", "LD H,A", "LD L,B", "LD L,C", "LD L,D", "LD L,E", "LD L,H", "LD L,L",
"LD L,(HL)", "LD L,A", "LD (HL),B", "LD (HL),C", "LD (HL),D", "LD (HL),E", "LD (HL),H", "LD (HL),L", "HALT", "LD (HL),A",
"LD A,B", "LD A,C", "LD A,D", "LD A,E", "LD A,H", "LD A,L", "LD A,(HL)", "LD A,A", "ADD A,B", "ADD A,C",
"ADD A,D", "ADD A,E", "ADD A,H", "ADD A,L", "ADD A,(HL)", "ADD A,A", "ADC A,B", "ADC A,C", "ADC A,D", "ADC A,E",
"ADC A,H", "ADC A,L", "ADC A,(HL)", "ADC A,A", "SUB B", "SUB C", "SUB D", "SUB E", "SUB H", "SUB L",
"SUB (HL)", "SUB A", "SBC A,B", "SBC A,C", "SBC A,D", "SBC A,E", "SBC A,H", "SBC A,L", "SBC A,(HL)", "SBC A,A",
"AND B", "AND C", "AND D", "AND E", "AND H", "AND L", "AND (HL)", "AND A", "XOR B", "XOR C",
"XOR D", "XOR E", "XOR H", "XOR L", "XOR (HL)", "XOR A", "OR B", "OR C", "OR D", "OR E",
"OR H", "OR L", "OR (HL)", "OR A", "CP B", "CP C", "CP D", "CP E", "CP H", "CP L",
"CP (HL)", "CP A", "RET NZ", "POP BC", "JP NZ,$W", "JP $W", "CALL NZ,$W", "PUSH BC", "ADD A,$N", "RST $T",
"RET Z", "RET", "JP Z,$W", "*CB", "CALL Z,$W", "CALL $W", "ADC A,$N", "RST $T", "RET NC", "POP DE",
"JP NC,$W", "OUT ($N),A", "CALL NC,$W", "PUSH DE", "SUB $N", "RST $T", "RET C", "EXX", "JP C,$W", "IN A,($N)",
"CALL C,$W", "*IX", "SBC A,$N", "RST $T", "RET PO", "POP HL", "JP PO,$W", "EX (SP),HL", "CALL PO,$W", "PUSH HL",
"AND $N", "RST $T", "RET PE", "JP (HL)", "JP PE,$W", "EX DE,HL", "CALL PE,$W", "*ED", "XOR $N", "RST $T",
"RET P", "POP AF", "JP P,$W", "DI", "CALL P,$W", "PUSH AF", "OR $N", "RST $T", "RET M", "LD SP,HL",
"JP M,$W", "EI", "CALL M,$W", "*IY", "CP $N", "RST $T"
};
Вот так раньше писали эмуляторы ZX Spectrum
0
private void calculateOverallTime() {
if (overallTimeTimer.isTimeOut()) {
if (overallTime[0] <= 58) {
overallTime[0] += 1;
}
else {
overallTime[0] = 0;
if (overallTime[1] <= 58) {
overallTime[1] += 1;
}
else {
overallTime[1] = 0;
overallTime[2] += 1;
}
}
}
}
−1
/**
* @throw std::system_error
*/
auto udp_echo_service(int64_t sd) -> no_return_t {
sockaddr_in remote{};
io_work_t work{};
io_buffer_t buf{}; // memory view to the 'storage'
io_buffer_reserved_t storage{}; // each coroutine frame contains buffer
while (true) {
// packet length(read)
auto len = co_await recv_from(sd, remote, buf = storage, work);
// instead of length check, see the error from the 'io_work_t' object
if (work.error())
goto OnError;
buf = {storage.data(), static_cast<size_t>(len)};
len = co_await send_to(sd, remote, buf, work);
if (work.error())
goto OnError;
assert(len == buf.size_bytes());
}
co_return;
OnError:
// expect ERROR_OPERATION_ABORTED (the socket is closed in this case)
const auto ec = work.error();
const auto emsg = system_category().message(ec);
fputs(emsg.c_str(), stderr);
}
https://github.com/luncliff/coroutine/blob/main/test/net_socket_udp_echo.cpp
0
#define $(x) [&](void)->auto{try{return (x);}catch(...){return decltype(x){};}}()
Собачка
0
/*
xdrv_96_blacklist.ino - Blacklist for Tasmota
SPDX-FileCopyrightText: 2022 Theo Arends
SPDX-License-Identifier: GPL-3.0-only
*/
#define USE_BLACKLIST
#ifdef USE_BLACKLIST
/*********************************************************************************************\
* Blacklist support
*
* Check language and user set latitude/longitude against blacklist table
\*********************************************************************************************/
#define XDRV_96 96
typedef struct {
int16_t latitude_tl; // - 8999 to 8999
int16_t longitude_tl; // -17999 to 17999
int16_t latitude_br;
int16_t longitude_br;
uint16_t lcid;
} tBlArray;
//const char BlacklistText[] PROGMEM = "Stop war - Free Ukrain|Stop war - Free Ukrain|";
const char BlacklistText[] PROGMEM = "Stop war, Free Ukrain";
// lat_tl lon_tl lat_br lon_br lcid
tBlArray BlArray[] { 5900, 3200, 5300, 4400, 1049, // Around Moscow
5450, 2633, 5280, 2900, 1049 // Around Minsk
};
uint8_t blist_show = 0;
void BListEverySecond(void) {
if (Rtc.utc_time < 1648771200) { // Only until 2022-04-01
if (0 == (TasmotaGlobal.uptime % 20)) { // Only every 20 seconds
if (TasmotaGlobal.power) { // Only if any power on
uint32_t latitude = Settings->latitude / 10000;
uint32_t longitude = Settings->longitude / 10000;
uint32_t count = sizeof(BlArray) / sizeof(tBlArray);
for (uint32_t i = 0; i < count; i++) {
// Currently only supports top-right quarter of the earth
if ((LANGUAGE_LCID == BlArray[i].lcid) && // Check language id
(latitude < BlArray[i].latitude_tl) && // Check user set latitude and longitude against table
(latitude > BlArray[i].latitude_br) &&
(longitude > BlArray[i].longitude_tl) &&
(longitude < BlArray[i].longitude_br)) {
// char bl_text[100];
// snprintf_P(bl_text, sizeof(bl_text), PSTR("Power0 0")); // Turn all power off - annoying
// snprintf_P(bl_text, sizeof(bl_text), PSTR("Restart 1")); // Restart - more annoying
// snprintf_P(bl_text, sizeof(bl_text), PSTR("Reset 1")); // Reset - disastrous
// ExecuteCommand(bl_text, SRC_IGNORE);
// char bl_text[100];
// AddLog(LOG_LEVEL_NONE, PSTR("**** %s ****"), GetTextIndexed(bl_text, sizeof(bl_text), i, BlacklistText));
AddLog(LOG_LEVEL_NONE, PSTR("**** %s ****"), BlacklistText);
blist_show = i +1; // Set GUI message id
break;
}
}
}
} else if (0 == (TasmotaGlobal.uptime % 10)) { // Only every 10 seconds
blist_show = 0; // Reset GUI message id after 10 seconds
}
}
}
void BListShow(bool json) {
if (blist_show) {
// char bl_text[100];
// WSContentSend_PD(PSTR("{s}**** %s ****{m}{e}"), GetTextIndexed(bl_text, sizeof(bl_text), blist_show -1, BlacklistText));
WSContentSend_P(PSTR("{s}**** %s ****{m}{e}"), BlacklistText);
}
}
/*********************************************************************************************\
* Interface
\*********************************************************************************************/
bool Xdrv96(uint8_t function) {
bool result = false;
switch (function) {
case FUNC_EVERY_SECOND:
BListEverySecond();
break;
#ifdef USE_WEBSERVER
case FUNC_WEB_SENSOR:
BListShow(0);
break;
#endif // USE_WEBSERVER
}
return result;
}
https://github.com/arendst/Tasmota/commit/98cbf2587a1a914bbd16996ebb48dd451d3da448
+1
stop() {
PIDS=$(/sbin/pidof $PNAME)
CNT=0
if [[ $PIDS != "" ]]; then
echo -n "Stopping $PNAME: "
killall $PNAME && echo "ok" || echo "failed"
while [[ $PIDS != "" ]]
do
PIDS=$(/sbin/pidof $PNAME)
echo -n "."
sleep 1
CNT=$(($CNT+1))
if [[ $CNT -eq 3 ]]; then killall -9 $PNAME;echo -e "\n$PNAME: Force kill";break; fi
done
echo
else echo "$PNAME: don't start"
fi
}
Так автор видел выключение процесса. Процесс работает с файлами на жестком диске и ему важна их целостность, поэтому за 3 секунды не завершался. А еще при gracefully shutdown пишется обновление конфига процесса на диск. Но кого волнуют такие мелочи если оно уже работает в проде 7+ лет
0
function main() {
print("testArrayFoEach");
[1, 2, 3].forEach(x => print(x))
print("done.");
}
вот... проимплементил ненужную никому хрень :) чето я устал дампики постить.. и так поймете все что надо :)