- 1
Всегда стеснялся спросить, что на Говнокоде значит + и - в оценки кода.
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
Всегда стеснялся спросить, что на Говнокоде значит + и - в оценки кода.
0
#!/bin/sh
#
# Simple script to enable CPU cores automatically again if cooling state is
# 3 or lower.
#
set -e
get_cooling_state() {
echo $(cat /sys/devices/virtual/thermal/cooling_device0/cur_state)
}
enable_cpu() {
if [ $(cat /sys/devices/system/cpu/cpu$1/online) = 0 ]; then
echo 1 > /sys/devices/system/cpu/cpu$1/online || true
fi
}
while true; do
for c in 0 1 2 3; do
if [ $(get_cooling_state) -le 3 ]; then
enable_cpu $c
fi
done
sleep 5
done
Вот такой замечательный код занимается защитой процессора в стандартных сборках под OrangePi на Allwinner H5
https://github.com/orangepi-xunlong/OrangePiH5_scripts/blob/master/platform-scripts/OrangePi_corekeeper.sh
Думаю, говорить о том, как такой код работает, и насколько лучше был бы тут простенький скрипт, скажем, на питоне, смысла нет
0
static void Main(string[] args) {
int ? ival1 = 1;
Console.WriteLine(ival1.GetType());
//System.Int32
int ? ival2 = null;
Console.WriteLine(ival2.GetType());
//System.NullReferenceException Ссылка на объект не указывает на экземпляр объекта.
}
Че, пацаны, си шарп?
0
import java.util.*;
import java.io.*;
public class plusovka
{
public static void main(String[] args)
{
System.out.println("В работе...");
long c = 0L;
int all = 0;
try {
Scanner s = new Scanner(new File("/tmp/num"));
while(s.hasNextInt()) {
c+=s.nextLong();
all++;
}
}
catch(IOException e) { System.out.println(e); }
catch(IllegalStateException e) { System.out.println(e); }
catch(InputMismatchException e) { System.out.println(e); }
System.out.println("Сложено между собой чисел: "+all);
System.out.println("Результат: "+c);
}
}
учися делать двойные поносы на обучающих сайтах
йоу йоу!
0
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <linux/fb.h>
#include <stropts.h>
#include <sys/mman.h>
#include <unistd.h>
typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned int uint32_t;
typedef unsigned long int uint64_t;
inline uint32_t pixel_color(uint8_t r, uint8_t g, uint8_t b, struct fb_var_screeninfo *vinfo)
{
return (r<<vinfo->red.offset) | (g<<vinfo->green.offset) | (b<<vinfo->blue.offset);
}
int main()
{
int fb_fd = open("/dev/fb0", O_RDWR);
if(fb_fd == -1) {
perror("open");
return 1;
}
struct fb_fix_screeninfo finfo;
struct fb_var_screeninfo vinfo;
//Get variable screen information
if(ioctl(fb_fd, FBIOGET_VSCREENINFO, &vinfo) == -1) {
perror("ioctl");
return 1;
}
//Get fixed screen information
if(ioctl(fb_fd, FBIOGET_FSCREENINFO, &finfo) == -1) {
perror("ioctl");
return 1;
}
vinfo.grayscale=0;
vinfo.bits_per_pixel=32;
if(ioctl(fb_fd, FBIOPUT_VSCREENINFO, &vinfo) == -1) {
perror("ioctl");
return 1;
}
if(ioctl(fb_fd, FBIOGET_VSCREENINFO, &vinfo) == -1) {
perror("ioctl");
return 1;
}
if(vinfo.grayscale != 0) {
printf("Error set grayscale!\n");
return 1;
}
if(vinfo.bits_per_pixel != 32) {
printf("Error set bits_per_pixel!\n");
return 1;
}
long screensize = vinfo.yres_virtual * finfo.line_length;
uint8_t *fbp = mmap(0, screensize, PROT_READ | PROT_WRITE, MAP_SHARED, fb_fd, (off_t)0);
if(fbp == MAP_FAILED) {
perror("mmap");
return 1;
}
uint32_t pixel = pixel_color(46, 255, 46, &vinfo);
//Убедитесь, что вы правильно установили x, y и пиксель
long line = 0;
while(1)
{
if(line > vinfo.xres) break;
long location;
for (long x = 0; x < line; x++)
for (long y=0; y<vinfo.yres; y++)
{
location = (x+vinfo.xoffset) * (vinfo.bits_per_pixel/8) + (y+vinfo.yoffset) * finfo.line_length;
*((uint32_t*)(fbp + location)) = pixel;
}
line++;
usleep(100000);
}
return 0;
}
угадайте до запуска по какой оси прога будет рисовать и понос пролетит мимо вас!
0
Интересно, когда быдло, только вчера узнавшее про "Bitcoin" и начавшее покупать как его, так и "ASIC" с видеокартами,
осознает, что этим оно толком ничего не приобретает, а всего лишь увеличивает ценность и востребованность тех, в миллионы
раз больших по количеству, фантиков, что когда-то накрутили себе вхожие в некогда узкий круг знатоков и создателей "Bitcoin"?...
Весьма и весьма настораживает напускная восторженность ежедневно публикуемых на https://hi-tech.mail.ru статей о "Bitcoin".
Очевидно, что статьи о нём проплачены теми, кто заинтересован в повышении ценности упомянутых фантиков.
+2
<?php
$s = "This";
$is = "an";
$of = "a";
$ninja = "coding";
$This = "is";
$a = "ninja";
$coding = "echo";
$an = "example";
$example = "of";
${null} = ' "$s';
function z($x,$c='$'){return $x==1?$c:z($x-1,$c.'$');}
for($i=1;$i<=7;$i++){${null}.=' ${'.z($i).'s}';}
eval($$$$$$$$$s.${null}.'\n";');
/* Returns:
This is an example of a ninja coding
*/
PHP очарователен
К посту http://govnokod.ru/23540
0
https://vk.com/board1844826
Языковые "PHP"-файлы "ВКонтакте" в первые годы его существования.
+1
#include <experimental/coroutine>
#include <iostream>
#include <optional>
#include <utility>
template<typename T>
class Maybe
{
std::shared_ptr<std::optional<T>> m_maybe = std::make_shared<std::optional<T>>();
public:
Maybe() = default;
Maybe(const T& t)
: m_maybe { std::make_shared<std::optional<T>>(t) }
{
}
explicit operator bool() const { return static_cast<bool>(*m_maybe); }
T& operator* () { return **m_maybe; }
const T& operator*() const { return **m_maybe; }
void reset() { m_maybe->reset(); }
template<typename U>
void emplace(U&& u) { m_maybe->emplace(std::forward<U>(u)); }
};
template<typename T>
void printMaybe(const Maybe<T>& opt)
{
if (opt)
std::cout << *opt << std::endl;
else
std::cout << "<empty>" << std::endl;
}
template<typename T, typename... Args>
struct std::experimental::coroutine_traits<Maybe<T>, Args...>
{
struct promise_type
{
Maybe<T> m_maybe;
auto get_return_object() { return m_maybe; }
std::experimental::suspend_never initial_suspend() { return {}; }
std::experimental::suspend_never final_suspend() { return {}; }
void unhandled_exception() { m_maybe.reset(); }
template<typename U>
void return_value(U&& u) { m_maybe.emplace(std::forward<U>(u)); }
};
};
template<typename T>
auto operator co_await(const Maybe<T>& maybe)
{
struct Awaiter
{
const Maybe<T>& input;
bool await_ready() { return static_cast<bool>(input); }
auto await_resume() { return *input; }
void await_suspend(std::experimental::coroutine_handle<> coro) { coro.destroy(); }
};
return Awaiter { maybe };
}
Maybe<int> maybeAdd(const Maybe<int>& maybeA, const Maybe<int>& maybeB)
{
auto a = co_await maybeA;
auto b = co_await maybeB;
co_return a + b;
}
int main()
{
/*
printMaybe(maybeAdd({ 1 }, { 2 }));
printMaybe(maybeAdd({}, { 2 }));
printMaybe(maybeAdd({ 1 }, {}));
*/
const auto res = maybeAdd({ 1 }, { 2 });
return res ? *res : 0;
}
do-нотация в плюсах
0
// Определим тип возвращаемого результата
РезультатМассив = ?(ВРег(ТипРезультата)="МАССИВ",Истина,Ложь);
РезультатСписок = ?(ВРег(ТипРезультата)="СПИСОКЗНАЧЕНИЙ",Истина,Ложь);
РезультатСтруктура = НЕ РезультатМассив И НЕ РезультатСписок;
Если РезультатСтруктура Тогда
Измерения = Новый Структура;
КонецЕсли;
Если РезультатМассив Тогда
Измерения = Новый Массив;
КонецЕсли;
Если РезультатСписок Тогда
Измерения = Новый СписокЗначений;
КонецЕсли;
Если МассивИсключений = Неопределено Тогда
МассивИсключений = Новый Массив;
КонецЕсли;
А еще вот так можно проверить тип значения