- 1
- 2
- 3
- 4
- 5
- 6
var CodeMirror = require("codemirror");
var Thrift = require("thrift.js");
require("./src/my.css");
include(`gen-js/test_types.js')
include(`gen-js/TestServ.js')
include(`src/main.js')
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+2
var CodeMirror = require("codemirror");
var Thrift = require("thrift.js");
require("./src/my.css");
include(`gen-js/test_types.js')
include(`gen-js/TestServ.js')
include(`src/main.js')
Против m4 нет приёма.
+11
Есть ли жизнь после 40?
Что происходит с программистами после 40? Они из окон не выбрасываются? У меня вот на работе ни одного такого нет. На предыдущей работе тоже не было. И вообще, по наблюдениям, 90 квантиль в индустрии - 28 лет.
+2
class/View.php
<?php
class View {
...
public function compile() {
$view_src = file_get_contents(VIEW_SRC_PATH . $this->full_name . EXT);
// echo
$view_src = preg_replace("/\{\{(\w+)\}\}/", "<?php echo \$$1; ?>", $view_src);
$view_src = preg_replace("/\{\{(\w+)\|(\w+)\}\}/", "<?php echo \$$1['$2']; ?>", $view_src);
$view_src = preg_replace("/\{\{(\w+)\.(\w+)\}\}/", "<?php echo \$$1->$2; ?>", $view_src);
// foreach
$view_src = preg_replace("/<!--each\s+(\w+)\s+in\s+(\w+)-->/", "<?php foreach(\$$2 as \$$1): ?>", $view_src);
$view_src = preg_replace("/<!--each\s+(\w+)\s+in\s+(\w+)\|(\w+)-->/", "<?php foreach(\$$2['$3'] as \$$1): ?>", $view_src);
$view_src = preg_replace("/<!--each\s+(\w+)\s+in\s+(\w+)\.(\w+)-->/", "<?php foreach(\$$2->$3 as \$$1): ?>", $view_src);
$view_src = preg_replace("/<!--each\s+(\w+)\s+(\w+)\s+in\s+(\w+)\.(\w+)-->/", "<?php foreach(\$$3->$4 as \$$1 => \$$2): ?>", $view_src);
$view_src = preg_replace("/<!--each\s+(\w+)\s+(\w+)\s+in\s+(\w+)-->/", "<?php foreach(\$$3 as \$$1 => \$$2): ?>", $view_src);
$view_src = preg_replace("/<!--each-->/", "<?php endforeach; ?>", $view_src);
// switch
$view_src = preg_replace("/<!--select\s+(\w+)\.(\w+)-->\s*<!--when\s+(.+)-->/", "<?php switch(\$$1->$2): case $3: ?>", $view_src);
$view_src = preg_replace("/<!--when\s+(.+)-->/", "<?php break; ?><?php case $1: ?>", $view_src);
$view_src = preg_replace("/<!--otherwise-->/", "<?php break; ?><?php default: ?>", $view_src);
$view_src = preg_replace("/<!--select-->/", "<?php endswitch; ?>", $view_src);
if (!file_exists(VIEW_PATH . $this->path)) mkdir(VIEW_PATH . $this->path, 0777, true);
$fp = fopen(VIEW_PATH . $this->full_name . EXT, 'w');
fwrite($fp, $view_src);
fclose($fp);
}
...
?>
view-src/ShadeType.php
{{type.name}}
<!--each k d in type.diameters-->
<h1>{{k}}</h1>
<!--each s in d-->
<div>
{{s.bottom}} × {{s.top}} × {{s.height}}
<div>
<!--select s.mode-->
<!--when 'u'-->(на ушках)
<!--when 'p'-->(только подвес)
<!--otherwise-->
<!--select-->
</div>
</div>
<!--each-->
<!--each-->
view/ShadeType.php
<?php echo $type->name; ?>
<?php foreach($type->diameters as $k => $d): ?>
<h1><?php echo $k; ?></h1>
<?php foreach($d as $s): ?>
<div>
<?php echo $s->bottom; ?> × <?php echo $s->top; ?> × <?php echo $s->height; ?>
<div>
<?php switch($s->mode): case 'u': ?>(на ушках)
<?php break; ?><?php case 'p': ?>(только подвес)
<?php break; ?><?php default: ?>
<?php endswitch; ?>
</div>
</div>
<?php endforeach; ?>
<?php endforeach; ?>
На хостинге PHP 5.2, а старые версии фреймворков не хочется. Решил запилить свой.
−2
https://toster.ru/q/216153
Бугурт пыхарей/1с-ников
−115
print 1 < 2 == 2 > 1 in [1,2,3] < [2,3,4,5] != 1
Данный кусочек кода ( взял на одном из сайтов с тестами) навел меня на мысль - а может быть люди говнокодят потому, что языки программирования позволяют это делать? Взглянув на него первая моя мысль была - что это за хрень, она не будет работать. Оказалось я был не прав.
+99
Procedure TForm1.CreateObjects(Column, Row: Integer); // Процедура создания кнопок (ячеек).
Var
i, j, iLeft, iTop, iRow : Integer; // Переменные, отвечающие за расположение ячеек на форме. (Кроме iRow, она содержит номер ячейки по горизонтали.)
SpeedButton : array of TSpeedButton; // Собственно, сам массив с ячейками.
cColumn : Char; // Номер ячейки по вертикали.
iMine : ShortInt; // Дополнительная переменная кол-ва бомб на поле.
BEGIN
{Присваиваем начальные значения переменным. :7:}
iLeft := 0; // Начальная позиция по горизонтали.
iTop := 5; // Начальная позиция по вертикали.
iRow := 1; // Номер ячейки по горизонтали.
iMine := MineCount; // Кол-во мин на поле.
cColumn := 'A'; // Номер ячейки по вертикали.
SetLength(SpeedButton, Row+1); // Массив с ячейками.
{------------------------------------------ :7:}
{Создаём новые списки. :8:}
FObjectList := TObjectList.Create; // Список с объектами.
Form2.FMineList := TStringList.Create(); // Список с номерами мин на поле.
{--------------------- :8:}
{Главный цикл создания игрового поля :9:}
For i := 1 to Column do // Запускаем цикл создания по вертикали.
Begin
For j:=1 to Row do // Теперь тоже самое по горизонтали.
bEgin
SpeedButton[j] := TSpeedButton.Create(Self); // Создаём очередную ячейку на поле.
SpeedButton[j].Parent := GamePanel; // Этим параметром указываем, что ячейка принадлежит первой форме.
SpeedButton[j].Top := iTop; // Задаём расположение ячейки по вертикали.
SpeedButton[j].Name := cColumn + IntToStr(iRow); // Задаём имя ячейки.
SpeedButton[j].Flat := True; // Используем св-во кнопок не отображаться на рисунке.
SpeedButton[j].Font.Color := clBlue; // Делаем цвет текста синим.
SpeedButton[j].Font.Style := [fsBold]; // Делаем шрифт жирным.
SpeedButton[j].OnClick := SpeedButton1.OnClick; // Указываем, какая процедура будет вызываться при клике на ячейку.
SpeedButton[j].OnMouseDown := SpeedButton1.OnMouseDown; // Указываем, какая процедура будет вызываться при нажатии на ячейку.
SpeedButton[j].Left := iLeft+8; // Задаём расположение ячейки по горизонтали, смещая её на 8 пикселей вправо.
{Устанавливаем бомбу в ячейку. :10:}
If (iMine <> 0) and (SpeedButton[j].Name <> 'A1') then // Если кол-во бомб не превышено, то...
beGin
Randomize; // Генерируем список ПСЧ.
SpeedButton[j].Tag := Random(2); // Случайным образом задаём, будет ли бомба находится в ячейке.
If SpeedButton[j].Tag = 1 then
begin
Form2.FMineList.Add(SpeedButton[j].Name); // Добавляем новую запись в массив бомб.
Dec(iMine); // Уменьшаем счетчик мин на единицу.
end;
enD;
{----------------------------- :10:}
FObjectList.Add(SpeedButton[j]);// Добавляем новую запись в массив ячеек.
iLeft := iLeft + 24; //Увеличиваем расстояние между ячейками.
If iRow = Row then iRow := 1 // Если номер следующей ячейки по горизонтали неправильный, то меняем его на 1.
Else Inc(iRow); // Иначе увеличиваем номер.
eNd;
cColumn := Char(Ord(cColumn) + 1); // Увеличиваем номер ячейки по вертикали.
iTop := iTop + 24; // Увеличиваем положение ячейки по вертикали.
iLeft := 0; // Обнуляем позицию ячейки по горизонтали.
End;
{----------------------------------- :9:}
ImageList1.GetBitmap(0, (FindComponent('A1') as TSpeedButton).Glyph); // Загружаем спрайт в первую ячейку.
Form2.FMineList.SaveToFile('OUTPUT.TXT'); // Сохраняем расположение мин в файл.
MineCountLabel.Caption := IntToStr(Form2.FMineList.Count); // Показываем колво мин на поле.
END;
Function TForm1.CheckMove(X,Y : ShortString): Boolean; // Функция проверки валидности ячейки. Она должна находится рядом с текущей.
Var
iXod, iAlf : Integer; // Вспомогательные переменные.
BEGIN
result := false; // Презумпция вины :)
iXod := Abs(StrToInt(Y) - StrToInt(dPos.yInt)); // Получаем расстояние до текущей ячейки по горизонтали.
iAlf := Abs(Ord(dPos.xChr) - Ord(X[1])); // Получаем расстояние до текущей ячейки по вертикали.
If ((iXod <= 1) and (iAlf <= 1)) and ((iXod <> 0) or (iAlf <> 0)) then result := true; // И если оно не больше одного, то разрешаем ход.
END;
Procedure TForm1.SpeedButton1Click(Sender: TObject); // Главная процедура нажатия на кнопку(ячейку).
Var
i : Integer; // Счётчик цикла.
cObject : TSpeedButton; // Сам объект.
Str, j : String; // Вспомогательная переменная имени ячейки.
Count : Integer; // Вспомогательная переменная. (стр. 160)
BEGIN
{Подготавливаем переменные :1:}
cObject := TSpeedButton(Sender); // Получаем ячейку, на которую кликнули.
Str := cObject.Name; // Присваиваем вспомогательной переменной имя задействованной ячейки.
dClick.xAlf := Str[1]; // Присваиваем переменной первый символ задействованной ячейки по вертикали.
dClick.yFlt := Copy(Str, 2, Length(Str)); // Получаем номер ячейки по горизонтали.
{------------------------- :1:}
...
По просьбам желающих. Код некогда созданной мною игрушки Сапёр. Отдельный прикол, это как потом все эти кнопки удаляются.
+87
return (o1.isRecomend()? "true":"false").compareTo(o2.isRecomend() ? "true" : "false");
0
Mi sidim v servernoy!
Vse kto nas chitaet! Mi sidim v servernoy, v zaperty, mobillnyi ne beret! Pozovonite na ohrany po telefony на okrany 762-23-96 i skagite chtobi nas vypustili!
+4
#include <stdio.h>
#include <inttypes.h>
#include <stddef.h>
void printuint64(const uint64_t state);
uint64_t game_of_life8x8(const uint64_t old);
uint8_t getbit(uint64_t in, uint8_t y, uint8_t x);
uint8_t getbit(uint64_t in, uint8_t y, uint8_t x)
{
return !!((in) & (1ULL << ((y&0b111) + (x&0b111)*8)) );
}
uint64_t setbit(uint8_t y, uint8_t x, uint8_t bit)
{
if (bit)
{
return 1ULL << ((y&0b111) + (x&0b111)*8);
}
return 0;
}
uint64_t game_of_life8x8(const uint64_t old)
{
uint64_t new_state = 0;
#define GETBIT(y,x,val) getbit(val, y, x)
#define SETBIT(y,x,bit) setbit(y,x,bit)
#define SUMAROUND(y,x,val) ( \
GETBIT(y+1,x,val) + GETBIT(y-1,x,val) \
+ GETBIT(y,x+1,val) + GETBIT(y,x-1,val) \
+ GETBIT(y+1,x+1,val) + GETBIT(y+1,x-1,val) \
+ GETBIT(y-1,x+1,val) + GETBIT(y-1,x-1,val) \
)
#define CELLSTATE(y,x,val) \
(GETBIT(y,x,old) == 1 ? \
( ((SUMAROUND(y,x,val) == 2 ) || ( SUMAROUND(y,x,val) == 3 )) ? 1 : 0) \
: \
( ( SUMAROUND(y,x,val) == 3 ) ? 1 : 0 ) \
)
#define SETCELL_SH(y,x,val) SETBIT(y,x,CELLSTATE(y,x,val))
#define FILL_LINE(y) \
SETCELL_SH(y,7,old) | SETCELL_SH(y,6,old) | SETCELL_SH(y,5,old) | \
SETCELL_SH(y,4,old) | SETCELL_SH(y,3,old) | SETCELL_SH(y,2,old) | \
SETCELL_SH(y,1,old) | SETCELL_SH(y,0,old)
new_state = FILL_LINE(7) | FILL_LINE(6) | FILL_LINE(5)
| FILL_LINE(4) | FILL_LINE(3) | FILL_LINE(2)
| FILL_LINE(1) | FILL_LINE(0);
return new_state;
}
void printuint64(const uint64_t state)
{
for (size_t i = 7; i != SIZE_MAX; i--)
{
for (size_t j = 7; j != SIZE_MAX; j--)
{
printf("%u", !!((state >> (j+i*8)) & 1) );
}
printf("\n");
}
}
int main(void)
{
// Glider
uint64_t state =
(( 0b01000000ULL ) << 8*7 ) |
(( 0b00100000ULL ) << 8*6 ) |
(( 0b11100000ULL ) << 8*5 ) |
(( 0b00000000ULL ) << 8*4 ) |
(( 0b00000000ULL ) << 8*3 ) |
(( 0b00000000ULL ) << 8*2 ) |
(( 0b00000000ULL ) << 8*1 ) |
(( 0b00000000ULL ) << 8*0 );
for (size_t i = 0; i < 50; i++)
{
printuint64(state);
state = game_of_life8x8(state);
printf("\n");
}
return 0;
}
Conway's game of life внутри uint64_t (8 на 8) с периодическими граничными условиями.
+127
<local name="jhgjkgdfghd" />
<loadfile property="jhgjkgdfgh" srcfile="@{filepath}" failonerror="false">
...
</loadfile>
Я очень долго втыкал, почему один из овер 9000 Ant-скриптов валится....