"научите меня быть девелопером".

тему закрыть, крепеж снять, мудаков забанить
 
В питоне не нужно переменные объявлять заранее? Если нужно - почему ты этого не сделал? Говнокодик или охуенный язык, да здраствуют очепятки?
В javascript я могу проверить на undefined, чо в питоне такого нет?

Переменные объявлять не нужно. Понятия undefined как в js нету, есть возможность поймать исключение NameError

В ПХП тоже не нужно объявлять переменные. Ну и где Ваша риторика? :іржач:

"Научиться стрелять, не метясь, как ковбой,
для самообороны.

И ты тоже, мальчик, иди, не мешай

Зачем его обрабатывать? Вернуть тот же самый дефолтовый None.

Ну как это зачем? В примере ж было написано # handle bad cookie что намекает на наличие здесь нескольких строк кода.
 
Переменные объявлять не нужно. Понятия undefined как в js нету, есть возможность поймать исключение NameError

"Не нужно" или "не можно"? Пользоваться возможность не определять переменные - яркий признак говнокодера, поздравляю тебя.

В ПХП тоже не нужно объявлять переменные. Ну и где Ваша риторика?

Я не пхпист как бы.

Ну как это зачем? В примере ж было написано # handle bad cookie что намекает на наличие здесь нескольких строк кода.

Нормальные люди пишу TODO чтоб вопросов не возникало. А так мало или чего ты имел ввиду, может тупо решил ошибку проглотить втихаря.
 
"Не нужно" или "не можно"?

Нет такого понятия как "объявить переменную"

Пользоваться возможность не определять переменные - яркий признак говнокодера, поздравляю тебя.
Ты хотел сказать объявлять?
Лол все пайтон, пхп, перл, руби кодеры -- говнокодеры. Отличное открытие)

Я не пхпист как бы.

Напрасно, все предпосылки имеются)

И да, сейчас мы говорим о том, что такое ПХП, и почему оно гавно. Не знающим ПХП тут делать нечего, поэтому прощу еще раз, мальчик, не мешай.
 
Нет такого понятия как "объявить переменную"

FFFFFFFUUUUUUUUUUUUUUUUUUUUUU

Ты хотел сказать объявлять?
Лол все пайтон, пхп, перл, руби кодеры -- говнокодеры. Отличное открытие)

Не все, лишь с закидонами подобными твоим.


Напрасно, все предпосылки имеются)

Спасибо, меня моя сфера деятельности отлично кормит.

И да, сейчас мы говорим о том, что такое ПХП, и почему оно гавно. Не знающим ПХП тут делать нечего, поэтому прощу еще раз, мальчик, не мешай.

Сейчас мы разбираем факт твоего говнокодерства. Потому слушай внимательно что тебе говорят более умные товарищи.
 
Накропал мини-тест. Если что, поправляйте.
Код:
import time

def functionTest1(aCookies):
  try:
    integers = map(int, aCookies.get("integers").split(","))
    return integers
  except [B]([/B]ValueError, AttributeError[B])[/B]:
    # handle bad cookie
    pass

def functionTest2(aCookies):
  lIntsCookie = aCookies.get("integers")
  if lIntsCookie is not None:
    try:
      integers = map(int, aCookies.get("integers").split(","))
      return integers
    except [B]([/B]ValueError, AttributeError[B])[/B]:
      # handle bad cookie
      pass

def testFunction(aFunction, aWithoutRightCookie):
  lTimeStart = time.time()
  if aWithoutRightCookie:
    lCookiesObj = dict(foo=1, bar=2)
  else:
    lCookiesObj = dict(foo=1, integers='1,2')
  for i in range(1,1000000):
    aFunction(lCookiesObj)
  lTimeFinish = time.time()
  print '%s. time elapsed: %s' % (aFunction.__name__, lTimeFinish - lTimeStart)

testFunction(functionTest1, True)
testFunction(functionTest1, False)
testFunction(functionTest2, True)
testFunction(functionTest2, False)

Результат:
Код:
void@faceless:~>python test.py
functionTest1. time elapsed: 4.70927000046
functionTest1. time elapsed: 1.88463807106
functionTest2. time elapsed: 0.371489048004
functionTest2. time elapsed: 2.17021489143
void@faceless:~>

Если наличие cookie 50/50, то, imho, можно взять среднее арифметическое и оценить эффективность функций. eyeland, обрати внимание на жирные скобки: работает и с ними и без, только по разному. Как легко выстрелить себе в ногу. ;)
 
Останнє редагування:
Сейчас мы разбираем факт твоего говнокодерства. Потому слушай внимательно что тебе говорят более умные товарищи.

АААААААААА бЛЯЯААААААААААААА

БОЛЕЕ УМНЫЕ ААААААААААА

laughing_and_pointing.jpg


Ух, рассмешил.

Чтото я видел среди твоих постов только наивные попытки чтото-сделать, которые заканчивались unhandled exception'ом

Ой не смеши больше, я тебя прошу :іржач:
 
Чтото я видел среди твоих постов только наивные попытки чтото-сделать, которые заканчивались unhandled exception'ом

Ой не смеши больше, я тебя прошу :іржач:

Уймись. Я не претендовал на законченный код как бы. У тебя основная работа по разбору строки и построению массива в одну строку, у меня тоже. Обертку мне писать было лень. Ты же доебался со своими поучениями и тебе тут указали на проебы в твоем коде.
 
eyeland, ты ведь еврей да? так умело стрелки переводишь:D
 
Останнє редагування:
Notice то на первом скрине, а с кукой будет именно warning.

у меня нет ворнинга. $_COOKIE это всего лишь массив. если там нет элемента по ключу 'integers', выражение $_COOKIE['integers'] вернет null. можете проверить
echo ($_COOKIE['integers'] === null);
при этом выкинется notice (типа "нет такого ключа в массиве", это если notice'ы включены, а их отключают даже на девелоперских машинах, тем более на деплойных серверах, ниже об этом напишу). в пхп это нормально, можете отнести это на счет тупости пхп-шников, но так уж считается. они отключены по дефолту в php.ini.

при этом
не выкидывает даже notice.

Здрасьте пожалуйста. Это Вы сами придумали, или гдето прочитали такие рекомендации? Я ожидаю наличие куки, но имею ее отсутствие. Логично? Если бы в ПХП была полноценная поддерка исключений, то юзали б и помалкивали.

это я не сам придумал. логика программы не должна описываться через механизм исключений. исключения - это для форс-мажорных ситуаций, когда нужно выдать сообщение об ошибке или сделать запись в логе. "нет куки" - это стандартная ситуация. её не будет при первом обращении, или если пользователь почистил куки в браузере, и так далее. у некоторых доходит до того, что половина логики описывается исключениями. такой подход сравним с использованием goto - поддерживать такой код очень сложно

да, если б в пхп была полноценная поддержка исключений, я бы их использовал, вы правы. был бы рад. и если бы там была полноценная поддержка ООП. хотя я и так использую ООП насколько возможно. но для того чтобы эти вещи появились полноценно, нужно отказаться от многих других принципов пхп, и тогда он перестанет быть собой и потеряет большую часть своих преимуществ.

что касается вывода сообщений об ошибках. на рабочих серверах он должен быть отключен полностью. не только notice, но и warning и error. во-первых, незачем людям знать что там и где сбойнуло. во-вторых, например в моем проекте вообще некрасиво. у меня клиент общается с сервером исключительно через AJAX запросы, соответственно он ждет от сервера JSON пакет. вся эта мура с описанием ошибки пхп вызовет на клиенте ошибку JS при разборе JSON-строки
 
Накропал мини-тест. Если что, поправляйте.

Давайте таки вместо # handle bad cookie сделаем integers = [1,2,3,4] ато я смотрю иначе не понимают.

работает и с ними и без, только по разному. Как легко выстрелить себе в ногу. ;)

Ну да, не без этого. Внимательней надо быть когда пишешь код в форумном окошке)

И да, вот сейчас например что творится с ХФ:

HTTP/1.1 200 8.13 secs: 8257 bytes ==> /newreply.php?do=postreply&t=1256512
HTTP/1.1 200 8.15 secs: 8257 bytes ==> /newreply.php?do=postreply&t=1256512
HTTP/1.1 502 21.31 secs: 166 bytes ==> /newreply.php?do=postreply&t=1256512
HTTP/1.1 502 21.30 secs: 166 bytes ==> /newreply.php?do=postreply&t=1256512

это так неплохо работает пхп)
 
Давайте таки вместо # handle bad cookie сделаем integers = [1,2,3,4] ато я смотрю иначе не понимают.

да там и pass хватит. Сути это не меняет. Я к тому, что мой код в оговоренном случае 50 на 50 таки быстрее.
 
логика программы не должна описываться через механизм исключений. исключения - это для форс-мажорных ситуаций, когда нужно выдать сообщение об ошибке или сделать запись в логе.

Саму по себе эту инфу невозможно ни доказать ни опровергнуть. Поэтому давайте свое ИМХО не будем выдавать за прописную истину.

да там и pass хватит. Сути это не меняет. Я к тому, что мой код в оговоренном случае 50 на 50 таки быстрее.

Не хватит, так как этот код не работает. Он не делает того что требуется.
 
Все там работает: возращается None, чего еще нужно?

блин, вот напишу более полный пример:
Код:
try:
    integers = map(int, request.COOKIE.get("integers").split(","))
except (ValueError, AttributeError):
    integers = [1,2,3,4]
    request.COOKIE["integers"] = ",".join(map(str, integers))

Конечно же кейс так себе, и лучше тут юзать pickle, но это всего-лишь пример.
 
Добавил в тест и этот метод: functionTest3 и functionTest4. В четвертой функции оставил только pass (мне интересна эффективность, а не то, что внутри обработчика, тем более он у всех функций будет одинаков).

Код:
import time

def functionTest1(aCookies):
  try:
    integers = map(int, aCookies.get("integers").split(","))
    return integers
  except (ValueError, AttributeError):
    # handle bad cookie
    pass

def functionTest2(aCookies):
  lIntsCookie = aCookies.get("integers")
  if lIntsCookie is not None:
    try:
      integers = map(int, aCookies.get("integers").split(","))
      return integers
    except (ValueError, AttributeError):
      # handle bad cookie
      pass

def functionTest3(aCookies):
  try:
    integers = map(int, aCookies.get("integers").split(","))
  except (ValueError, AttributeError):
    integers = [1,2,3,4]
    aCookies["integers"] = ",".join(map(str, integers))
  return integers

def functionTest4(aCookies):
  try:
    integers = map(int, aCookies.get("integers").split(","))
    return integers
  except (ValueError, AttributeError):
    #integers = [1,2,3,4]
    #aCookies["integers"] = ",".join(map(str, integers))
    pass

def testFunction(aFunction, aWithoutRightCookie):
  lTimeStart = time.time()
  if aWithoutRightCookie:
    lCookiesObj = dict(foo=1, bar=2)
  else:
    lCookiesObj = dict(foo=1, integers='1,2')
  for i in range(1,1000000):
    aFunction(lCookiesObj)
  lTimeFinish = time.time()
  print '%s. time elapsed: %s' % (aFunction.__name__, lTimeFinish - lTimeStart)

testFunction(functionTest1, True)
testFunction(functionTest1, False)
testFunction(functionTest2, True)
testFunction(functionTest2, False)
testFunction(functionTest3, True)
testFunction(functionTest3, False)
testFunction(functionTest4, True)
testFunction(functionTest4, False)

Код:
v0id@faceless:~>python test.py
functionTest1. time elapsed: 4.52242398262
functionTest1. time elapsed: 1.82066702843
functionTest2. time elapsed: 0.375370979309
functionTest2. time elapsed: 2.1631000042
functionTest3. time elapsed: 2.30938005447
functionTest3. time elapsed: 1.8338508606
functionTest4. time elapsed: 4.43413496017
functionTest4. time elapsed: 1.80600380898
v0id@faceless:~>

Всё равно мой метод лучше.
 
Сделал у всех функций одинаковый обработчик исключений:

Код:
import time

def functionTest1(aCookies):
  integers = None
  try:
    integers = map(int, aCookies.get("integers").split(","))
    return integers
  except (ValueError, AttributeError):
    integers = [1,2,3,4]
    aCookies["integers"] = ",".join(map(str, integers))
  return integers

def functionTest2(aCookies):
  integers = None
  lIntsCookie = aCookies.get("integers")
  if lIntsCookie is not None:
    try:
      integers = map(int, aCookies.get("integers").split(","))
    except (ValueError, AttributeError):
      integers = [1,2,3,4]
      aCookies["integers"] = ",".join(map(str, integers))
  return integers

def functionTest3(aCookies):
  integers = None
  try:
    integers = map(int, aCookies.get("integers").split(","))
  except (ValueError, AttributeError):
    integers = [1,2,3,4]
    aCookies["integers"] = ",".join(map(str, integers))
  return integers

def testFunction(aFunction, aWithoutRightCookie):
  lTimeStart = time.time()
  if aWithoutRightCookie:
    lCookiesObj = dict(foo=1, bar=2)
  else:
    lCookiesObj = dict(foo=1, integers='1,2')
  for i in range(1,1000000):
    aFunction(lCookiesObj)
  lTimeFinish = time.time()
  print '%s. time elapsed: %s' % (aFunction.__name__, lTimeFinish - lTimeStart)

testFunction(functionTest1, True)
testFunction(functionTest1, False)
testFunction(functionTest2, True)
testFunction(functionTest2, False)
testFunction(functionTest3, True)
testFunction(functionTest3, False)

Результат:
Код:
v0id@faceless:~>python test.py
functionTest1. time elapsed: 2.39091181755
functionTest1. time elapsed: 1.84011697769
functionTest2. time elapsed: 0.420412063599
functionTest2. time elapsed: 2.20081305504
functionTest3. time elapsed: 2.34528493881
functionTest3. time elapsed: 1.83791017532

P.S. Пардон за много флуда.
 
Назад
Зверху Знизу