- 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-скриптов валится....