Здравствуйте, Sheridan, Вы писали:
P>>Без знаний за неделю — я такого не встречал. S>
Вот это твое означает следующее. Тебе принесли в ремонт авианосец, но при этом точно сказали: локатор при обнароужении цели стабильно выдает ошибку в N, нет, K угловых минут. И ее просят починить. С четким указанием, где находится данный модуль. То есть коллега Ikemefula прав.
Авианосец — то самое необъятное, которое нельзя объять. Двигателисты не будут чинить электронику, а акустики не пойдут менять крылья у самолетов.
S>Ну судя по тому как ты реагируешь на альтернативы — именно так.
А как, по-твоему, я реагирую на альтернативы? С цитатами, если можно. Ты во что-то свято веришь, а во что, я пока не понимаю.
S>Не так. Я приходил спросить как сделать то что я хочу об методику как я хочу, а мне, как принято на русских форумах, стали рассказывать что я неправ.
У тебя прежде всего спрашивали, ЕМНИП, какую ты задачу решаешь. Или я что-то пропустил?
S>Как и не означает что пользоваться нельзя.
По-твоему, значит, если возможность есть, значит ею нужно пользоваться? Я еще на первом курсе от этой идеи отказался. Иначе Hello, World получается состоящим из нескольких классов в сотню строк каждый.
Возможность — не значит обязаловка. Ты, разумеется, думаешь иначе.
P>>Наследование — просто инструмент разработки программ. И использовать его нужно к месту. Странно, что мне приходится объяснять всезнающему мастеру вещи уровня детского сада. S>Спасибо, кэп.
Ты что, знал?
S>Я тебе сразу и написал что не работает, так как предполагается что []['sort']() вернёт window, чего уже не происходит, а как раньше было — хз.
А починить слабо? Тут же всего одна строка. На JS. Я его не знаю. То есть мне бы еще пришлось бы разбираться с теорией. И я не знаю, как быстро я дошел бы до понимания, что происходит с этими странными символами.
Разбирать вот такое я бы тоже не стал без особой нужды. Говорят, эта штука работает.
#include <stdio.h>
#include <stdlib.h>
#define m(x)(x<0?-1:!!x)
#define g tj()-J
#define a(x)(x<0?-x:x)
#define h(x)((x)<=K?x:N-(x))
#define f 9999
#define A return
#define H printf(
#define R double
#define U int
#define V for
#define b else
#define u while
#define B if
U v,w,Y= -1,W,J,p,F,o=f,M,N,K,X,YY,_,P[f],s(); typedef U(*L)(); L q[f]; tj(){
U S=m(v)+(m(w)<<K); B(!S)A J; V(v=W+S; v!=J&&!q[v]; v+=S); A v; } k(){ _=K; A
v?a(v)>1||w-Y||!q[J]:(w-Y&&(w-Y*2||q[W+Y*(N+1)]|| (J>>K)-K+(Y-1)/ 2))||q[J];
} z(){ _=5; A v*w||g; } e(){ _= -2;
A(v*v*v-v||w*w*w-w)&&(J-W-2||(W&N)-4||(W>>K!=(Y-1?N:0))||
q[W+1]||q[W+2]||q[W+K]!=z||P[W+K]*Y<0); } R VR(){ int PZ=0x7fff;
A(R)(rand()&PZ)/(R)PZ; } l(){ _=K+1; A(v*w&&a(v)-a(w))||g; } R UC(){ R i=0,d;
u((i+=d=VR())<1.0); A d; } c(){ _= -11; A a(v)-a(w)||g; } I(ur,n,x){ W=ur;
J=n; B(P[W]!=Y||P[J]==Y)A J+1; v=(J&N)-(W&N); w=(J>>K)-(W>>K); A
q[W]()||(x&&QL(W,J,s)); } TT(W){ v=w=0; A q[W]()+K; } s(){ U j= -1,i; Y= -Y;
V(i=0; i<M; ++i){ B(j<0&&P[i]== -Y&&TT(i)&&_== -2) { j=i; i= -1; } b
B(j>=0&&!I(i,j,0))A Y= -Y; } A!(Y= -Y); } bb(){ _=1; A a(v*w)-2; } uv(){
V(v=0; v<f; ++v){ B(h(v>>K)==0){ U S=h(v&N);
q[v]=!S?z:(S==1?bb:(S==2?c:(v&N>K?l:e))); } b B(h(v>>K)==1)q[v]=k; b q[v]=0;
P[v]=!!q[v]*(28-v); } } y(){ U G=Y,i; J=0; V(i=0; i<M; ++i){
i%8||H"\n%4o ",i); B((Y=P[i]=m(P[i]))&& TT(i))H"%c ",_+93+Y*16); b H"- "); }
H"\n "); do H"%2d",i++&N); u(i&N); Y=G; H"\n"); } O(W,J){
B((q[J]=q[W])==k&&h(J>>K)==0)q[J]=l; B(q[W]==e)B(J-W==2)O(J+1,J-1); b
B(W-J==2)O(W-1,W+1); P[J]=P[W]; q[W]=0; P[W]=0; } QL(W,J,D)L D; { U
HQ=P[J],YX; L AJ=q[J],XY=q[W]; O(W,J); YX=D(); O(J,W); q[J]=AJ; q[W]=XY;
P[J]=HQ; A YX; } C(){ U i,j,BZ=0; V(i=0; i<M; ++i){ L Z=q[i]; B(Z){ U
r=h(i>>K)+h(i&N),G=Y, S=Z==z?88:(Z==k?11 +r+(P[i]<0?N-(i>>K):(i>>K)):
(Z==l?124-((YY<8&&((i&N)!=K|| (i>>K)!=(P[i]>0?0:N)))?M:0):
(Z==c?41+r:(Z==e?f-r-r:36+r+r)))); Y=P[i]; V(j=0; j<M;
++j)B(!I(i,j,0))S+=(P[j]?5:1); BZ+=G==Y?S:-S; Y=G; } }
B(!(++X&M-1))write(1,".",1); A BZ; } PX(){ U i,Q=0,XP=0,JZ=M*M,E= -f,t,S=o;
B(!F--)A++F+C(); V(i=0; i<JZ; ++i)B(!I(i>>K+K,i&M-1,1)){ Y= -Y; o= -E; t=
-QL(i>>K+K,i&M-1,PX); Y= -Y; B(t>E){ ++XP; Q=i; E=t; B(E>=S) A++F,E; } }
B(!XP)E=s()?-f+1:0; p=Q; A++F,E; } RZ(){ U i,j,T=0; V(; ; ){ y(); o=f; do{
H"\n%d %d %d %s ",X,T,C(),s()?"!":">"); fflush(stdout); }
u(scanf("%o%o",&i,&j)!=2||I(i,j,1)); O(i,j); y(); X=0; ++YY; Y= -Y; T=PX();
i=p>>(K<<1); j=p&(M-1); B(I(i,j,1)){ H"Rats!\n"); A; } O(i,j); Y= -Y;
B(T>M*M)H"\nHar har.\n"); } } main(ac,av)char**av; { long time(),j=time(&j);
R i=0; srand((U)j); V(M=0; M<=f; ++M)i+=UC(); M=i/100; B(M&3)++M; B(M&1)--M;
V(N=1; N*N<M; ++N); K= --N/2; F=ac>1?atoi(av[1]):2; uv(); RZ(); }
Здравствуйте, Sheridan, Вы писали:
P>>>>и попытками дважды от одного предка отнаследоваться. S>>>https://stackoverflow.com/a/45620836/1597497 P>>Я в курсе. Только наследование реализации — чаще всего зло. Наследование было в моде в середине 90-х. Считалось главной фишкой ООП. S>Ктото запретил? Убрали из языка? Что мешает кроме религии?
Наследование правильно применять ровно в двух случаях, и то не всегда. Остальные принято заменять на композицию, использовать какой нибудь паттерн типа Strategy, State и тд.
Правильно — потому, как наследование реализует определенные отношения между моделируемыми объектами. Нет таких отношений — нечего и совать наследование, даже если и сильно хочется.
Почему принято — потому что это выгодно с тз долгосрочной поддержки кода, выгодность выражается в виде количества багов, как преднамереных (здесь сломаю, хер с ним, никому это не больше надо) и непреднамереных (поменяю, вроде всё в порядке).
Долгосрочная поддержка это, например, вместо "сделаю ибо могу" используешь "что бы было понятно другим".
Про это написано чуть не везде. Но ты же Великий Шеридан, тебе чужой опыт перенимать да еще у каких то девелоперов не к масти, правильно тебя понимаю?
Здравствуйте, Sinclair, Вы писали:
S> AB>Вот это "есть некоторые ограничения и неудобства" поломают весь красивый сценарий в жестокой реальности еще на этапе подключения к сети. S> Я вас разочарую: не ломают. Сценарий работает на практике
Угу, "и вы говорите". А элементарный VPN/X509 потребует или приходящего эникейщика или квалификации пользователя при которой все эти "хипстерские танцы" становятся экономически нецелесообразными.
S> Ну вот в том-то и проблема, что линуху "ничего не мешает", и "у меня всё работает". А реальным пользователям на это наплевать. Вот ваше предложение — откуда должен взяться этот "токен", что бы это ни было?
Его, так же как и железяку, могут прислать из центрального офиса. Здесь под токеном подразумевается флеш-накопитель совмещенный c аппаратным ключом (хотя технически это могут быть и разные устройства).
Здравствуйте, Privalov, Вы писали:
P>В конечном итоге поправил в бинарнике только пару команд, но там ни хитрого шифрования, ни хэшей, ни противоотладочных приемов не было. Просто хорошо оптимизированный код.
Вот бы ты повеселился, если бы этот функционал оказался переведённым в байткод сгенерированной "на лету" (при накатывании протектора) виртуальной машины. Разумеется с пачкой другого, основного функционала.
Именно таким образом работают современные протекторы.
ЗЫ: а эта виртуальная машина может быть вложенной в следующую. Just for fun.
Здравствуйте, IID, Вы писали:
IID>Вот бы ты повеселился, если бы этот функционал оказался переведённым в байткод сгенерированной "на лету" (при накатывании протектора) виртуальной машины. Разумеется с пачкой другого, основного функционала.
Я просто оставил бы версию 2.08, хоть она и не работала с мышью.
Здравствуйте, Ikemefula, Вы писали:
I>Про это написано чуть не везде. Но ты же Великий Шеридан, тебе чужой опыт перенимать да еще у каких то девелоперов не к масти, правильно тебя понимаю?
Нет. По желанию левой пятки я объекты не пложу.
Здравствуйте, Ikemefula, Вы писали:
S>>Я не могу понять... Я действительно так работаю. И проекты действительно не скрипты в пару страниц (на такие скрипты мне обычно час-два дают). I>Это типичная мелочевка. Её именно так и подают: "Эй, допили, платим любые деньги, что бы заработало за неделю!"
Даже если так, то что? Недостойная работа?
I>Типичному разработчику в таких проектах делать абсолютно нечего.
А, точно, голубых кровей не хватает, я правильно понял?
S>>С чем проблемы то? С тем что вы так не работаете? С тем что привыкли один день только на git clone ... тратить? S>>Что не так то? I>Что именно не так, тебе невдомек, потому ты и предполгаешь, что девелоперы "привыкли один день только на git clone ... тратить"
С ваших слов — по прилёту таска вам надо сначала проект изучить досконально, а потом только за работу браться. Не верю что вам дают на работу столько времени.
I>На самом деле ты занят в основном мелочевкой, крупных, тем более энтерпрайзных проектов ты в глаза не видел.
Видел и дописывал местами кусочки.
I>Но вот признавать, что ты работаешь с мелочевкой, не хочется. Отсюда твоё видение "привыкли один день только на git clone ... тратить"
Что значит "с мелочёвкой"? С задачами, для реализации которых не надо проект изучать полностью?
Здравствуйте, Sheridan, Вы писали:
I>>Про это написано чуть не везде. Но ты же Великий Шеридан, тебе чужой опыт перенимать да еще у каких то девелоперов не к масти, правильно тебя понимаю? S>Нет. По желанию левой пятки я объекты не пложу.
Блин, ты путаешься даже в таких понятиях как "класс" и "объект". О чём с тобой можно разговаривать?!
Здравствуйте, Sheridan, Вы писали:
S>Здравствуйте, Ikemefula, Вы писали:
S>>>Я не могу понять... Я действительно так работаю. И проекты действительно не скрипты в пару страниц (на такие скрипты мне обычно час-два дают). I>>Это типичная мелочевка. Её именно так и подают: "Эй, допили, платим любые деньги, что бы заработало за неделю!" S>Даже если так, то что? Недостойная работа?
Ну наконец-то ты признался, что мелочёвку пилишь
Но всё как обычно: "Я пилю мелочёвку, а вы не мелочёвку. Поэтому буду в тредах быковать и вмешиваться в умные темы" (ц) твоё, без пруфов, исключительно по ощущениям.
I>>Типичному разработчику в таких проектах делать абсолютно нечего. S>А, точно, голубых кровей не хватает, я правильно понял?
Наглядный пример быкования с твоей стороны.
S>С ваших слов — по прилёту таска вам надо сначала проект изучить досконально, а потом только за работу браться. Не верю что вам дают на работу столько времени.
В реальности же никто таски рандомным людям не назначает Твой код — таска твоя. Не твой код — таска соседа. И как уже говорили, новому сотруднику дают недели две-месяц, чтобы хоть чуть-чуть въехать в тему.
I>>На самом деле ты занят в основном мелочевкой, крупных, тем более энтерпрайзных проектов ты в глаза не видел. S>Видел и дописывал местами кусочки.
Я, помню, допиливал толстый ынтерпрайз, доставшийся по наследству... Тикет висел 3+ месяца, вместо обычных 2+ для своих задач. Вот поверь: тебя никто на пушечный выстрел не подпустит к подобному, потому что там кровь-кишки реально. И нужно быть уже глубоко (более 10 лет опыта) в теме предметной области, да.
I>>Но вот признавать, что ты работаешь с мелочевкой, не хочется. Отсюда твоё видение "привыкли один день только на git clone ... тратить" S>Что значит "с мелочёвкой"? С задачами, для реализации которых не надо проект изучать полностью?
Как раз те три месяца я доделывал и переделывал за товарищем типа тебя. Взяли залётного на таску, чтобы мускулы нарастить. Результат был — более чем удовлетворительный, даже на четвёрочку. Но после пришлось чуток больше доделывать и переделывать.
Здравствуйте, Rhino, Вы писали:
I>>>Про это написано чуть не везде. Но ты же Великий Шеридан, тебе чужой опыт перенимать да еще у каких то девелоперов не к масти, правильно тебя понимаю? S>>Нет. По желанию левой пятки я объекты не пложу. R>Блин, ты путаешься даже в таких понятиях как "класс" и "объект". О чём с тобой можно разговаривать?!
Программонаци?
Здравствуйте, Rhino, Вы писали:
S>>>>Я не могу понять... Я действительно так работаю. И проекты действительно не скрипты в пару страниц (на такие скрипты мне обычно час-два дают). I>>>Это типичная мелочевка. Её именно так и подают: "Эй, допили, платим любые деньги, что бы заработало за неделю!" S>>Даже если так, то что? Недостойная работа? R>Ну наконец-то ты признался, что мелочёвку пилишь
А я утверждал гдето другое?
R>Но всё как обычно: "Я пилю мелочёвку, а вы не мелочёвку. Поэтому буду в тредах быковать и вмешиваться в умные темы" (ц) твоё, без пруфов, исключительно по ощущениям.
Быкую здесь не я.
I>>>Типичному разработчику в таких проектах делать абсолютно нечего. S>>А, точно, голубых кровей не хватает, я правильно понял? R>Наглядный пример быкования с твоей стороны.
S>>С ваших слов — по прилёту таска вам надо сначала проект изучить досконально, а потом только за работу браться. Не верю что вам дают на работу столько времени. R>В реальности же никто таски рандомным людям не назначает Твой код — таска твоя. Не твой код — таска соседа. И как уже говорили, новому сотруднику дают недели две-месяц, чтобы хоть чуть-чуть въехать в тему.
У нас видимо разные реальности.
I>>>На самом деле ты занят в основном мелочевкой, крупных, тем более энтерпрайзных проектов ты в глаза не видел. S>>Видел и дописывал местами кусочки. R>Я, помню, допиливал толстый ынтерпрайз, доставшийся по наследству... Тикет висел 3+ месяца, вместо обычных 2+ для своих задач. Вот поверь: тебя никто на пушечный выстрел не подпустит к подобному, потому что там кровь-кишки реально. И нужно быть уже глубоко (более 10 лет опыта) в теме предметной области, да.
У нас назначенный тикет, провисевший неделю без движения вообще — причина для разборок.
I>>>Но вот признавать, что ты работаешь с мелочевкой, не хочется. Отсюда твоё видение "привыкли один день только на git clone ... тратить" S>>Что значит "с мелочёвкой"? С задачами, для реализации которых не надо проект изучать полностью? R>Как раз те три месяца я доделывал и переделывал за товарищем типа тебя. Взяли залётного на таску, чтобы мускулы нарастить. Результат был — более чем удовлетворительный, даже на четвёрочку. Но после пришлось чуток больше доделывать и переделывать.
Порыв "надо всё нафиг переписать" надо в себе задавливать, да. Лучшее — враг хорошего.
Здравствуйте, Sheridan, Вы писали:
S>>>Нет. По желанию левой пятки я объекты не пложу. R>>Блин, ты путаешься даже в таких понятиях как "класс" и "объект". О чём с тобой можно разговаривать?! S>Программонаци?
Не... Класс — это класс. Объявление, код. Объект — это экземпляр класса, если говорить по-современному. Это уже существующая в памяти сущность класса.
По мне, тут фундаментальное отличие одного от другого: для класса ты не можешь вызвать деструктор, а для объекта — можешь. Это очень тонкая грань, на уровне наци, как ты заметил Но от тонкости она наци не становится.
Здравствуйте, Sheridan, Вы писали:
S>С ваших слов — по прилёту таска вам надо сначала проект изучить досконально, а потом только за работу браться. Не верю что вам дают на работу столько времени.
Проекты бывают разные. Задачи внутри одного проекта тоже очень разные бывают. В крупном проекте, развивающимся десятки лет, новому человеку пришедшему в команду, разбираться нужно долго.
Здравствуйте, Rhino, Вы писали:
S>>>>Нет. По желанию левой пятки я объекты не пложу. R>>>Блин, ты путаешься даже в таких понятиях как "класс" и "объект". О чём с тобой можно разговаривать?! S>>Программонаци? R>Не... Класс — это класс. Объявление, код. Объект — это экземпляр класса, если говорить по-современному. Это уже существующая в памяти сущность класса.
Точно, программонаци.
R>По мне, тут фундаментальное отличие одного от другого: для класса ты не можешь вызвать деструктор, а для объекта — можешь. Это очень тонкая грань, на уровне наци, как ты заметил Но от тонкости она наци не становится.
Можешь не разжовывать, я в курсе, спасибо.
Внимание, вангую. Зта моя описка теперь будет всплывать достаточно часто с намёками на дурачка.
Здравствуйте, AleksandrN, Вы писали:
S>>С ваших слов — по прилёту таска вам надо сначала проект изучить досконально, а потом только за работу браться. Не верю что вам дают на работу столько времени.
AN>Проекты бывают разные. Задачи внутри одного проекта тоже очень разные бывают. В крупном проекте, развивающимся десятки лет, новому человеку пришедшему в команду, разбираться нужно долго.
Когда на проекте нет архитектора/лида, способного качественно декомпозировать желаемый путь в таски? Ну конечно же в таком случае самим программистам надо вкуривать весь проект целиком.
Здравствуйте, Sheridan, Вы писали:
S>Внимание, вангую. Зта моя описка теперь будет всплывать достаточно часто с намёками на дурачка.
А... Ну то есть ты супер-пупер-админ дурачков-программистов ловишь на непонимании тобой профессиональных терминов? Понял-отстал.
Здравствуйте, Rhino, Вы писали:
S>>Внимание, вангую. Зта моя описка теперь будет всплывать достаточно часто с намёками на дурачка.
R>Ну то есть ты супер-пупер-админ
Нет.
R>дурачков-программистов ловишь
Нет.
Здравствуйте, Sheridan, Вы писали:
S>Здравствуйте, AleksandrN, Вы писали:
S>>>С ваших слов — по прилёту таска вам надо сначала проект изучить досконально, а потом только за работу браться. Не верю что вам дают на работу столько времени.
AN>>Проекты бывают разные. Задачи внутри одного проекта тоже очень разные бывают. В крупном проекте, развивающимся десятки лет, новому человеку пришедшему в команду, разбираться нужно долго. S>Когда на проекте нет архитектора/лида, способного качественно декомпозировать желаемый путь в таски? Ну конечно же в таком случае самим программистам надо вкуривать весь проект целиком.
Не целиком, но иметь представление об основных моментах в общей архитектуре проекта и отдельных его частях, их взаимодействии между собой, откуда берутся входные данные и куда отправляются выходные, формате данных — нужно. И лиду надо будет объяснить всё это новичку, прежде, чем он начнёт делать первые, самые простые задачи. Иначе постановка задачи будет слишком низкоуровневой, типа — в файле А замени Б на В. Для первых задач такое допустимо, но без представления о проекте в целом, такими будут все задачи.
Расшифруй "декомпозировать желаемый путь в таски".
Здравствуйте, AleksandrN, Вы писали:
AN>>>Проекты бывают разные. Задачи внутри одного проекта тоже очень разные бывают. В крупном проекте, развивающимся десятки лет, новому человеку пришедшему в команду, разбираться нужно долго. S>>Когда на проекте нет архитектора/лида, способного качественно декомпозировать желаемый путь в таски? Ну конечно же в таком случае самим программистам надо вкуривать весь проект целиком.
AN>Не целиком, но иметь представление об основных моментах в общей архитектуре проекта и отдельных его частях, их взаимодействии между собой, откуда берутся входные данные и куда отправляются выходные, формате данных — нужно. И лиду надо будет объяснить всё это новичку, прежде, чем он начнёт делать первые, самые простые задачи. Иначе постановка задачи будет слишком низкоуровневой, типа — в файле А замени Б на В. Для первых задач такое допустимо, но без представления о проекте в целом, такими будут все задачи.
Новичку надо ставить именно подробно описанные таски, постепенно уменьшая детализированность описания таска. Пускай новичёк пилит и заодно систему изучит.
AN>Расшифруй "декомпозировать желаемый путь в таски".
Ну, например, так
Путь: нужна работа на платформе Y
Таски: перерисовать диалог АБЦ на выбранной кроссплатформенной либе, убрать из кода захардкоженые пути.