- 1
- 2
- 3
/index.php/module/action/param1/${@die(md5(HelloThinkPHP))}: 1 Time(s)
/index.php?s=%2f%69%6e%64%65%78%2f%5c%74%6 ... %6e%6b%50%48%50: 1 Time(s)
/index.php?s=/module/action/param1/${@die( ... elloThinkPHP))}: 1 Time(s)
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+1
/index.php/module/action/param1/${@die(md5(HelloThinkPHP))}: 1 Time(s)
/index.php?s=%2f%69%6e%64%65%78%2f%5c%74%6 ... %6e%6b%50%48%50: 1 Time(s)
/index.php?s=/module/action/param1/${@die( ... elloThinkPHP))}: 1 Time(s)
такую вот хуйню в логах вижу
пыха у меня разумеется никакого нет, но что это вообще такое? Что так ломают?
+3
/* if - логический оператор впервые появившийся в языке программирования 1954 года FORTRAN
Алгоритмически именуется ветвлением. Этот оператор обеспечивает выполнение определённой команды (набора команд) только при условии истинности некоторого логического выражения, либо выполнение одной из нескольких команд (наборов команд) в зависимости от значения некоторого выражения.
В данном случае обрабатывает ошибочный случай, когда переменная типа OfflinePlayer неинициализирована и в этом случае возращает
строку(последовательность байт заканчивающуюся нуль-терминатором) ""
*/
if(player == null)
return "";
Как точно НЕ надо комментировать код
+5
#include <stdio.h>
#define UPP 300
float conversion(float fahr);
main(){
float far;
int a;
a = UPP;
for(far = 0; far <= a; ++++++++++++++++++++++++++++++++++++++++far)
printf("%.f\t%.1f\n", far, conversion(far));
}
float conversion(float cels){
float c;
c = ((5*(cels-32))/(9));
return c;
}
how do I make it 20 by 20 in a shorter way, without having to put 20 times "++" please
https://www.reddit.com/r/C_Programming/comments/ff5zph/how_do_i_make_it_20_by_20_in_a_shorter_w ay/
+1
public class WindowEx : Window //...
{
//hwnd окна
public IntPtr Handle { get; set; }
private const int GWL_EXSTYLE = (-20);
private const uint WS_EX_TOPMOST = 0x00000008;
public void SetTopmost()
{
SetTopmost(Handle);
}
public static void SetTopmost(IntPtr hWnd)
{
SetWindowLongPtr(hWnd, GWL_EXSTYLE, (IntPtr)((ulong)GetWindowLongPtr(hWnd, GWL_EXSTYLE) | WS_EX_TOPMOST));
}
public void UnSetTopmost()
{
UnSetTopmost(Handle);
}
public static void UnSetTopmost(IntPtr hWnd)
{
SetWindowLongPtr(hWnd, GWL_EXSTYLE, (IntPtr)((ulong)GetWindowLongPtr(hWnd, GWL_EXSTYLE) & ~WS_EX_TOPMOST));
}
private bool _topmost;
public new bool Topmost
{
set
{
if (value)
{
SetTopmost();
}
else
{
UnSetTopmost();
}
_topmost = value;
}
get { return _topmost; }
}
}
Тру окно. С тру топмостом. Бесполезно чуть менее, чем полностью:
1) Новый топмост не нужен. Оригинальное свойство через SetWindowPos сделает тоже самое (SetWindowPos может менять дополнительный стиль WS_EX_TOPMOST)
2) Handle (hwnd окна) c публичным set. Круто, чё. Следовало бы сделать public IntPtr Handle { get; private set; }
Так я писал код где-то лет 6 назад.
+1
private void MainDataGridCellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
{
if (e.Column == MainDataGrid.Columns[1])
return;
if (CheckComplianceWithIndentation)
if ((NumberOfLeadingSpaces(Rows[e.Row.GetIndex()].OriginalText) != NumberOfLeadingSpaces(Rows[e.Row.GetIndex()].Translation)) && !Rows[e.Row.GetIndex()].Tags.Contains("I"))
Rows[e.Row.GetIndex()].Tags += "I";
else if (NumberOfLeadingSpaces(Rows[e.Row.GetIndex()].OriginalText) == NumberOfLeadingSpaces(Rows[e.Row.GetIndex()].Translation))
Rows[e.Row.GetIndex()].Tags = Rows[e.Row.GetIndex()].Tags.Replace("I", "");
if ((Rows[e.Row.GetIndex()].Translation.Trim() == "") && !Rows[e.Row.GetIndex()].Tags.Contains("N"))
Rows[e.Row.GetIndex()].Tags += "N";
else if (Rows[e.Row.GetIndex()].Translation.Trim() != "")
Rows[e.Row.GetIndex()].Tags = Rows[e.Row.GetIndex()].Tags.Replace("N", "");
//...
}
public void TagsInit()
{
if (CheckComplianceWithIndentation)
foreach (var hRow in Rows.Where(hRow => NumberOfLeadingSpaces(hRow.OriginalText) != NumberOfLeadingSpaces(hRow.Translation)))
{
hRow.Tags += "I";
}
foreach (var row in Rows.Where(hRow => hRow.Translation == ""))
{
row.Tags += "N";
}
}
Дано: C#, WPF, DataGrid, таблица.
Надо сделать: таблица имеет поля, в том числе и поле Tags, которое определяется полями Translation и OriginalText, а также настройками пользователя (CheckComplianceWithIndentation), нет бы его вынести в класс строки как геттер:
public string Tags => f(Translation, Original);
вместо:
private string _tags;
public string Tags
{
get => _tags;
set
{
_tags = value;
RaisePropertyChanged("Tags");
}
}
Так нет же, будем отлавливать изменения ячеек таблицы (MainDataGridCellEditEnding) и пересчитывать Tags. MainDataGrid.Columns[1] - это колонка с ними, прибито гвоздями в xaml: CanUserReorderColumns="False"
Эх, а еще и Trim вместо String.IsNullOrWhiteSpace.
А еще немного венгерской говнонотации (hRow).
Так я писал где-то лет 7 назад. Да, тогда стрелок не было, но они приведены в описании тупо для сокращения строк кода.
+4
Словарь терминов говнокода.
Один коммент - один термин.
+2
function isEven(a) {
a = a. toString(). replace(/[^0-9.]/g, "");
var stack = [];
var rev = a. split(''). reverse();
for (var ix = 0; ix < rev. length; ix++) {
if (rev[ix] == ".") stack. push("dot")
else if (rev[ix] == "1" || rev[ix] == "3" || rev[ix] =="5" || rev[ix] == "7" || rev[ix] == "9")
stack. push ("odd")
else
stack. push('even')
}
var wholenumber = stack. splice(stack. indexof("dot") + 1)
return wholenumber[0] == "even";
}
Определение чётности числа.
+1
grep '^-' /mnt/etc/roskomhui.txt | cut -d' ' -f2 | sed 's|^\([^/]*\)$|\1/32|' | xargs -n1 ipcalc | awk -e '{if ($1=="Address:") ADDR=$2; if ($1=="Netmask:") print "route add " ADDR" mask "$2" 172.16.1.2" }'
На старом роутере у меня бы opkg и openvpn с сервачком за пределами России.
Список префиксов, на которые я хотел ходить через него, хранился в файле roskomhui.txt и имел формат
# petuh
-net 1.2.3.0/24
-host 1.2.3.4
# foo
grep '^-' /opt/etc/roskomhui.txt | xargs -n2 -icmd echo route add cmd gw $REMOTE_VPN_ADDR | sh
route add 1.2.3.4 255.255.255.255 %ADDR%
+1
var ER={}, x=new TextDecoder('KOI8-R').decode(Uint8Array.from( Array.apply(0,new Uint8Array(64).map( (_,b)=>b&1 ? 128+0x61+b/2 : 65+b/2 ))))
for (var i=0;i<64;i+=2){
if (i<52)
ER[x[ i ]] = x[i+1], ER[ x[i].toLowerCase() ] = x[i+1].toLowerCase()
ER[x[i+1]] = x[ i ], ER[x[i+1].toLowerCase()] = x[ i ].toLowerCase();
}
text=`<Налог>
<Наименование>НДС</Наименование>
<УчтеноВСумме>false</УчтеноВСумме>
</Налог>`
text.replace(/./g,(char,offset,text) => ER[char] || char);
Из юзерскрипта для транслитерации в обоих направлениях.
+2
https://blog.aragon.one/update-on-aragon-courts-first-mock-dispute/
Вы уж простите, но я снова с криптовалютчиками. Их мир оказался слишком охуенным.
Криптовалютчики запустили свой собственный суд! Потому что все существующие, как известно, несовершенны,
а из блокчейна слов не выкинешь и perfect transparency.
В первом же тестовом деле суд проебался (хоть и не в юридическом поле - а может и в юридическом тоже,
я не читал), сыграв реальную ситуацию с реальными персонажами из крипто-системы.
Персонажи ожидаемо оказались инфантилами и забиделись.
Что же сделали организаторы суда? Правильно, «удалили решение» из системы блокчейн, сделав вид, что
ничего и не происходило.
Пропагандируемый эфирными поехавшими веб3.0 - это такая россия будущего, где данные о преступлениях
даже не скрываются, но все делают вид, что ничего не происходило, потому что так надо и вообще иначе
весь манямирок рухнет.