Опять индусы. На этот раз про одного гения.
От: _ks_  
Дата: 04.01.07 10:39
Оценка: 19 (7) +1 :))) :))) :))) :))) :))) :))) :))) :))) :))) :))) :))) :))) :))) :))) :))) :))) :))) :))) :))) :))) :))) :))) :))) :))) :))) :))) :))) :))) :))) :))) :))) :))) :))) :))) :))

<gram|work> про индийский код
<gram|work> Какой самый извращенный способ проверить в условии if () булевскую переменную ?
<gram|work> bool b;
<gram|work> b = false;
<gram|work> if (b == true){...}
<gram|work> Это децкий лепет
<gram|work> ИТАК, ПЕРВОЕ МЕСТО
<gram|work> Знакомый говорит что нашел только что в коде:
<gram|work> if (b.ToString().length < 5){...}


(C) пришло по аське
Re: Опять индусы. На этот раз про одного гения.
От: vitz  
Дата: 04.01.07 10:59
Оценка: -3 :)))
Здравствуйте, _ks_, Вы писали:

или
if((str[0]=='h'||str[0]=='H')
   &&(str[1]=='t'||str[1]=='T')
   &&(str[2]=='t'||str[2]=='T')
   &&(str[3]=='p'||str[3]=='P'))
Re: Опять индусы. На этот раз про одного гения.
От: Какая разница Украина  
Дата: 04.01.07 11:12
Оценка:
Здравствуйте, _ks_, Вы писали:

__>

__><gram|work> про индийский код
__><gram|work> Какой самый извращенный способ проверить в условии if () булевскую переменную ?
__><gram|work> bool b;
__><gram|work> b = false;
__><gram|work> if (b == true){...}
__><gram|work> Это децкий лепет
__><gram|work> ИТАК, ПЕРВОЕ МЕСТО
__><gram|work> Знакомый говорит что нашел только что в коде:
__><gram|work> if (b.ToString().length < 5){...}


__>(C) пришло по аське



if (b.ToString() == "true") { .... }
else if (b.ToString() == "false") { .... }
else assert(false);
!0xDEAD
Re: Опять индусы. На этот раз про одного гения.
От: leadmd Россия http://leadmd.livejournal.com/
Дата: 04.01.07 14:17
Оценка:
Здравствуйте, _ks_, Вы писали:

__>

__><gram|work> про индийский код
__><gram|work> Какой самый извращенный способ проверить в условии if () булевскую переменную ?
__><gram|work> bool b;
__><gram|work> b = false;
__><gram|work> if (b == true){...}
__><gram|work> Это децкий лепет
__><gram|work> ИТАК, ПЕРВОЕ МЕСТО
__><gram|work> Знакомый говорит что нашел только что в коде:
__><gram|work> if (b.ToString().length < 5){...}


__>(C) пришло по аське

цитата с Бора... поднимием ее до планки KDE2 под FreeBSD
Голосуем :)
Re[2]: Опять индусы. На этот раз про одного гения.
От: Индус  
Дата: 04.01.07 14:28
Оценка: :)
Здравствуйте, vitz, Вы писали:

V>Здравствуйте, _ks_, Вы писали:


V>или

V>
V>if((str[0]=='h'||str[0]=='H')
V>   &&(str[1]=='t'||str[1]=='T')
V>   &&(str[2]=='t'||str[2]=='T')
V>   &&(str[3]=='p'||str[3]=='P'))
V>


int state = 0;
bool result = false;
int pos = 0;
while (state!=5)
{
  char ch = str[pos++]
  switch(state)
  {
  case 0:
    if (ch =='h') 
    {
      state = 1;
      break
    }
    if (ch =='H') 
    {
      state = 1;
      break
    }
    state = 5;
    breack
  case 1:
    if (ch =='t') 
    {
      state = 2;
      break
    }
    if (ch =='T') 
    {
      state = 2;
      break
    }
    state = 5;
    breack
  case 2:
    if (ch =='t') 
    {
      state = 3;
      break
    }
    if (ch =='T') 
    {
      state = 3;
      break
    }
    state = 5;
    breack
  case 3:
    if (ch =='p') 
    {
      state = 5;
      result = true;
      break
    }
    if (ch =='P') 
    {
      state = 5;
      result = true;
      break
    }
    state = 5;
    break
  }
  if (result) ...
}
Re[2]: Опять индусы. На этот раз про одного гения.
От: ch00k  
Дата: 04.01.07 15:15
Оценка: 2 (2) +6
Здравствуйте, vitz, Вы писали:

V>или

V>
V>if((str[0]=='h'||str[0]=='H')
V>   &&(str[1]=='t'||str[1]=='T')
V>   &&(str[2]=='t'||str[2]=='T')
V>   &&(str[3]=='p'||str[3]=='P'))
V>


тут как раз нет ничего особоенно смешного — нормальный unrolled код проверки. Сможете написать код, работающий быстрее?

P.S. http://java.sun.com/developer/technicalArticles/Networking/Webserver/WebServer.java

if (buf[0] == (byte)'G' &&
buf[1] == (byte)'E' &&
buf[2] == (byte)'T' &&
buf[3] == (byte)' ') {
doingGet = true;
index = 4;

Re: Опять индусы. На этот раз про одного гения.
От: Kubyshev Andrey  
Дата: 04.01.07 17:52
Оценка: -1 :))) :)
__><gram|work> Знакомый говорит что нашел только что в коде:
__><gram|work> if (b.ToString().length < 5){...}

Кстати это не будет работать в русской Visual Studio, потому что bool конвертиться в "Ложь" и "Правда". Получается наоборот, что 4 знака не где true а где ложь.
Re[2]: Опять индусы. На этот раз про одного гения.
От: Дм.Григорьев  
Дата: 04.01.07 18:06
Оценка: :))
Здравствуйте, Kubyshev Andrey, Вы писали:

__>><gram|work> if (b.ToString().length < 5){...}


KA>Кстати это не будет работать в русской Visual Studio, потому что bool конвертиться в "Ложь" и "Правда". Получается наоборот, что 4 знака не где true а где ложь.


Оооо!!! Какой простор для доработок!!! Сорри, шарпа я не знаю, вношу свое предложение в псевдокоде:

if (
        ((systemProperties.language == "en") && (b.ToString().length < 5)) ||
        ((systemProperties.language == "ru") && (b.ToString().length > 5))) {
    ...
} else if ((systemProperties.language != "en") && (systemProperties.language != "ru")) {
    throw new Exception("Unsupported language.");
} else {
  ...
}
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
http://dimgel.ru/lib.web — thin, stateless, strictly typed Scala web framework.
Re[2]: Опять индусы. На этот раз про одного гения.
От: Кэр  
Дата: 05.01.07 04:14
Оценка:
Здравствуйте, Kubyshev Andrey, Вы писали:

__>><gram|work> Знакомый говорит что нашел только что в коде:

__>><gram|work> if (b.ToString().length < 5){...}

KA>Кстати это не будет работать в русской Visual Studio, потому что bool конвертиться в "Ложь" и "Правда". Получается наоборот, что 4 знака не где true а где ложь.


Сами придумали или где-то прочитали?

Ниже код метода Boolean.ToString()

public override string ToString()
{
      if (!this)
      {
            return "False";
      }
      return "True";
}
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: Опять индусы. На этот раз про одного гения.
От: fGordon Земля  
Дата: 05.01.07 06:57
Оценка:
Здравствуйте, Кэр, Вы писали:

KA>>Кстати это не будет работать в русской Visual Studio, потому что bool конвертиться в "Ложь" и "Правда". Получается наоборот, что 4 знака не где true а где ложь.


Кэр>Сами придумали или где-то прочитали?


у него ВСЕ русифицировано. даже операторы и те наверное имеют вид:

для (и = 0; и < Н; ++и)
{
// делать что-нибудь.
}
in c/c++ we trust!
Re[3]: Опять индусы. На этот раз про одного гения.
От: Centaur Россия  
Дата: 05.01.07 07:44
Оценка:
Здравствуйте, ch00k, Вы писали:

V>>или

V>>
V>>if((str[0]=='h'||str[0]=='H')
V>>   &&(str[1]=='t'||str[1]=='T')
V>>   &&(str[2]=='t'||str[2]=='T')
V>>   &&(str[3]=='p'||str[3]=='P'))
V>>


C>тут как раз нет ничего особоенно смешного — нормальный unrolled код проверки. Сможете написать код, работающий быстрее?


Если бы у меня были подтверждённые замерами опасения, что тут бутылочное горлышко, я бы ещё попробовал такой код:
// в зависимости от того, поддерживаем ли мы big-endian
// прямо сейчас или только собираемся когда-нибудь потом,
// #ifdef может быть заменён на
// // NOTE: endianness dependent
#ifdef LITTLE_ENDIAN
static const DWORD http = 0x50545448;
#else
static const DWORD http = 0x48545450;
#endif

assert(ALIGNED(str, DWORD));
if (// исходный код остаётся в комментарии для maintainability
  // (str[0] == 'h' || str[0] == 'H') &&
  // (str[1] == 't' || str[1] == 'T') &&
  // (str[2] == 't' || str[2] == 'T') &&
  // (str[3] == 'p' || str[3] == 'P')
  // NOTE: assumes ASCII
  *reinterpret_cast<DWORD*>(str) &~ 0x20202020 == http
)

Конечно, предполагая, что str выравнено по DWORD’у и что EBCDIC-подобные кодировки нас не интересуют.

Если профилировка с таким кодом не покажет прироста производительности — верну «понятный» код из комментариев, «оптимизированный» засуну в комментарий вместе с пометкой, что «эту псевдооптимизацию уже пробовали и она не помогла».
Re[4]: Опять индусы. На этот раз про одного гения.
От: Роман Дубров Украина Я@Blogspot
Дата: 05.01.07 09:54
Оценка: :)
fGordon пишет:

> Кэр>Сами придумали или где-то прочитали?

>
> у него ВСЕ русифицировано. даже операторы и те наверное имеют вид:
>
> для (и = 0; и < Н; ++и)
> {
> // делать что-нибудь.
> }

ну да, вы еще 1С вспомните....

--
np: [foobar2000] not started
Posted via RSDN NNTP Server 2.1 beta
http://www.linkedin.com/in/romandubrov .::. http://roman-dubrov.blogspot.com/ .::. http://www.flickr.com/photos/romandubrov/
Re[3]: Опять индусы. На этот раз про одного гения.
От: Mycopka Россия http://mhehue.info
Дата: 05.01.07 09:56
Оценка:
Здравствуйте, Кэр, Вы писали:

Кэр>Сами придумали или где-то прочитали?


Наверное в "одинэсе"
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
---
With best regards и все такое :)
Re[3]: Опять индусы. На этот раз про одного гения.
От: vitz  
Дата: 05.01.07 13:25
Оценка:
Здравствуйте, ch00k, Вы писали:

C>тут как раз нет ничего особоенно смешного — нормальный unrolled код проверки. Сможете написать код, работающий быстрее?


А что важнее? Понятность или скорость? И вообще это "Хумор", а вы про "Священные войны"
Re[4]: Опять индусы. На этот раз про одного гения.
От: ch00k  
Дата: 05.01.07 15:21
Оценка:
Здравствуйте, Centaur, Вы писали:

C>Конечно, предполагая, что str выравнено по DWORD’у и что EBCDIC-подобные кодировки нас не интересуют.


А еще есть юникод
Re: Опять индусы. На этот раз про одного гения.
От: anonim_44ax  
Дата: 05.01.07 15:37
Оценка: -2 :)
А я-то думал, что это наши "индусские" коллеги жгут, когда вместо:
int i;
....
bool b = static_cast< bool >( i );

или просто
b = i;

пишут:
b = !!i;


Там в нашем проекте кода побольше и вместе с этой "техникой конвертирования" это выглядело действительно "интерестно".
Re[2]: Опять индусы. На этот раз про одного гения.
От: Vadim B  
Дата: 05.01.07 18:41
Оценка: +2
Здравствуйте, anonim_44ax, Вы писали:

_>А я-то думал, что это наши "индусские" коллеги жгут, когда вместо:

_>
_>int i;
_>....
_>bool b = static_cast< bool >( i );
_>

_>или просто
_>
_>b = i;
_>


Писать вот это "или просто" — это нарваться на предупреждение компилятора.

_>пишут:

_>
_>b = !!i;
_>


А это вполне стандартная практика еще со времен чистого С. Не очень красиво, да, ну так и a[i++]=b[i++] с непривычки непонятно выглядит.
Re[3]: Опять индусы. На этот раз про одного гения.
От: mihasic Украина  
Дата: 08.01.07 00:14
Оценка:
Здравствуйте, Vadim B, Вы писали:

VB>А это вполне стандартная практика еще со времен чистого С. Не очень красиво, да, ну так и a[i++]=b[i++] с непривычки непонятно выглядит.


Ну и привычки...
Re[2]: Опять индусы. На этот раз про одного гения.
От: LuciferMoscow Россия  
Дата: 08.01.07 07:49
Оценка: +1
Здравствуйте, anonim_44ax, Вы писали:

_>пишут:

_>
_>b = !!i;
_>

_>Там в нашем проекте кода побольше и вместе с этой "техникой конвертирования" это выглядело действительно "интерестно".
Имеет смысл.

b=i;

Может вызывать warning "Possible data lost while converting... "
... << RSDN@Home 1.1.4 beta 4 rev. 358>>
Re[4]: Опять индусы. На этот раз про одного гения.
От: ДимДимыч Украина http://klug.org.ua
Дата: 09.01.07 08:42
Оценка:
Здравствуйте, mihasic, Вы писали:

VB>>А это вполне стандартная практика еще со времен чистого С.


M> Ну и привычки...


В до стандарта C99 в C не было стандартного типа bool, поэтому приходилось .
Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)
Re[5]: Опять индусы. На этот раз про одного гения.
От: mihasic Украина  
Дата: 09.01.07 08:57
Оценка:
Здравствуйте, ДимДимыч, Вы писали:

ДД>В до стандарта C99 в C не было стандартного типа bool, поэтому приходилось .

Я про a[i++] = b[i++]
Re[3]: Опять индусы. На этот раз про одного гения.
От: alskor  
Дата: 09.01.07 11:14
Оценка:
C>тут как раз нет ничего особоенно смешного — нормальный unrolled код проверки. Сможете написать код, работающий быстрее?
C>P.S. http://java.sun.com/developer/technicalArticles/Networking/Webserver/WebServer.java
C>

C> if (buf[0] == (byte)'G' &&
C> buf[1] == (byte)'E' &&
C> buf[2] == (byte)'T' &&
C> buf[3] == (byte)' ') {
C> doingGet = true;
C> index = 4;

почему-то мне кажется, что equals() у String работает никак не менее эффективно, чем приведенный пример...
Re[2]: Опять индусы. На этот раз про одного гения.
От: mukos СССР  
Дата: 11.01.07 14:38
Оценка:
Здравствуйте, vitz, Вы писали:

V>Здравствуйте, _ks_, Вы писали:


V>или

V>
V>if((str[0]=='h'||str[0]=='H')
V>   &&(str[1]=='t'||str[1]=='T')
V>   &&(str[2]=='t'||str[2]=='T')
V>   &&(str[3]=='p'||str[3]=='P'))
V>


что не нравиться ?
Re[3]: Опять индусы. На этот раз про одного гения.
От: serg_fork  
Дата: 11.01.07 14:41
Оценка:
Здравствуйте, mukos, Вы писали:

M>что не нравиться ?


Автор найден ?
Re: Опять индусы. На этот раз про одного гения.
От: vlad_dag Украина  
Дата: 11.01.07 15:38
Оценка: :)
Встречалось такое
if (b == true)
b = false;
if (b == false)
b = true;
Re[2]: Опять индусы. На этот раз про одного гения.
От: VEAPUK  
Дата: 11.01.07 19:59
Оценка:
Здравствуйте, vlad_dag, Вы писали:

_>Встречалось такое

_>if (b == true)
_> b = false;
_>if (b == false)
_> b = true;
За строки платят?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Опять индусы. На этот раз про одного гения.
От: Ubivetz Украина  
Дата: 17.01.07 09:38
Оценка:
Здравствуйте, Какая разница, Вы писали:

КР>
КР>if (b.ToString() == "true") { .... }
КР>else if (b.ToString() == "false") { .... }
КР>else assert(false);
КР>

Работаьть не будет. Вместо "false" надо писать "False"
Эх, люблю выпить и переспать с кем нибудь!
Но чаще выходит перепить с кем — нибудь и выспаться...
Re[3]: Опять индусы. На этот раз про одного гения.
От: Какая разница Украина  
Дата: 17.01.07 10:27
Оценка: +1
Здравствуйте, Ubivetz, Вы писали:

U>Здравствуйте, Какая разница, Вы писали:


КР>>
КР>>if (b.ToString() == "true") { .... }
КР>>else if (b.ToString() == "false") { .... }
КР>>else assert(false);
КР>>

U>Работаьть не будет. Вместо "false" надо писать "False"

Ну почему же будет работать
Специально для этого случая сработает assert
!0xDEAD
Re[3]: Опять индусы. На этот раз про одного гения.
От: Alexey Borodin alexey-borodin@narod.ru
Дата: 17.01.07 10:46
Оценка:
Здравствуйте, Vadim B, Вы писали:

Не очень красиво, да, ну так и a[i++]=b[i++] с непривычки непонятно выглядит.

Да и скорее всего неправильно будет.
Зачем перебирать массив через один элемент (два инкремента)?
Re[5]: Опять индусы. На этот раз про одного гения.
От: michus Россия  
Дата: 18.01.07 23:31
Оценка:
Здравствуйте, ДимДимыч, Вы писали:

ДД>Здравствуйте, mihasic, Вы писали:


VB>>>А это вполне стандартная практика еще со времен чистого С.


M>> Ну и привычки...


ДД>В до стандарта C99 в C не было стандартного типа bool, поэтому приходилось .


А при появлении идиомы "safe bool" !!a приходится писать уже и в C++.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Опять индусы. На этот раз про одного гения.
От: DangerRSDN Россия http://danger-world.livejournal.com/
Дата: 19.01.07 10:59
Оценка:
При всем при этом у индусов размещается большая часть международных оффшорных проектов. И государство у них заботится о предоставлении льготного налогообложения бизнеса в сфере ИТ, потому что в отличие от наших проворовавшихся чиновников умеет мыслить в перспективе. И не бьют курицу, несущую золотые яйца — потому что поняли как заставить ее это делать... Грустно.
Re[3]: Опять индусы. На этот раз про одного гения.
От: Nazik Россия  
Дата: 19.01.07 19:47
Оценка:
Жжжесть, только что смотрел фильм "Хацкеры-3", там как раз показывали этот исходник гыгы

C>P.S. http://java.sun.com/developer/technicalArticles/Networking/Webserver/WebServer.java

C>

C> if (buf[0] == (byte)'G' &&
C> buf[1] == (byte)'E' &&
C> buf[2] == (byte)'T' &&
C> buf[3] == (byte)' ') {
C> doingGet = true;
C> index = 4;

Re[3]: Опять индусы. На этот раз про одного гения.
От: prVovik Россия  
Дата: 26.06.07 13:09
Оценка:
Здравствуйте, VEAPUK, Вы писали:

VEA>Здравствуйте, vlad_dag, Вы писали:


_>>Встречалось такое

_>>if (b == true)
_>> b = false;
_>>if (b == false)
_>> b = true;
VEA>За строки платят?

Вполне возможно. "Наши" индусы весь код пишут через строчку. То есть так:


if (b == true)

b = false;

if (b == false)

b = true;
лэт ми спик фром май харт
Re[3]: Опять индусы. На этот раз про одного гения.
От: VladD2 Российская Империя www.nemerle.org
Дата: 02.07.07 00:17
Оценка: :))
Здравствуйте, Дм.Григорьев, Вы писали:

ДГ>Оооо!!! Какой простор для доработок!!! Сорри, шарпа я не знаю, вношу свое предложение в псевдокоде:


ДГ>
ДГ>if (
ДГ>        ((systemProperties.language == "en") && (b.ToString().length < 5)) ||
ДГ>        ((systemProperties.language == "ru") && (b.ToString().length > 5))) {
ДГ>    ...
ДГ>} else if ((systemProperties.language != "en") && (systemProperties.language != "ru")) {
ДГ>    throw new Exception("Unsupported language.");
ДГ>} else {
ДГ>  ...
ДГ>}
ДГ>


Вокруг одни ламеры! Боже ж мой! Неужели взрослых людей надо учить, что строковые престваления слов true и false нужно грузить из ресурсов?!
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Опять индусы. На этот раз про одного гения.
От: Дм.Григорьев  
Дата: 02.07.07 01:56
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Неужели взрослых людей надо учить, что строковые престваления слов true и false нужно грузить из ресурсов?!



А примерчик для ламеров можно? А то я с утра на слух не догоняю, как это поможет в булевых проверках.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
http://dimgel.ru/lib.web — thin, stateless, strictly typed Scala web framework.
Re[5]: Опять индусы. На этот раз про одного гения.
От: -Naruto- Ниоткуда  
Дата: 02.07.07 05:27
Оценка:
В HTTP RFC натации хедер протокола не может быть Unicode.

Re[4]: Опять индусы. На этот раз про одного гения.
От: -Naruto- Ниоткуда  
Дата: 02.07.07 05:31
Оценка:
Размер слова и двойного слова зависит от платформы

Re[5]: Опять индусы. На этот раз про одного гения.
От: VladD2 Российская Империя www.nemerle.org
Дата: 02.07.07 15:52
Оценка: :)
Здравствуйте, Дм.Григорьев, Вы писали:

ДГ>

ДГ>А примерчик для ламеров можно? А то я с утра на слух не догоняю, как это поможет в булевых проверках.

Тут уже статейкой попахивает.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Опять индусы. На этот раз про одного гения.
От: Дм.Григорьев  
Дата: 02.07.07 17:47
Оценка: :)
Здравствуйте, VladD2, Вы писали:

VD>Тут уже статейкой попахивает.


Ждём-c.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
http://dimgel.ru/lib.web — thin, stateless, strictly typed Scala web framework.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.