Отправка HTTP-заголовков с веб-запросом HTTP на аутентификацию NTLM

Мой первый опыт с микроконтроллерами был с OOPic-R. Это позволило мне делать простые автоматизированные эксперименты, не вызывая беспокойство слишком много о коде. Поток объектно-ориентированного программирования заставляет все работать быстро и легок к программе.

Недавно, я попробовал другое разнообразие PIC, очень дешевое PICAXE. Включенный интерфейс программирования является бризом для работы с. Кроме того, для физического взаимодействия через интерфейс с PICAXE Вам только нужен порт RS-232 для программирования его и два контакта на микросхеме (никакая потребность сделать смещение уровня). Я встроил PICAXE в очень маленькие контейнеры (SMD и доступные микросхемы DIP), и это работало вполне хорошо.

у меня нет опыта с программированием микроконтроллеров в блоке. Если Вы хотите попробовать это, AVR мог бы более подойти из-за, он - более многочисленное пользовательское сообщество.

, Насколько я знаю, самый дешевый способ программировать использование AVR, инструменты ATMEL являются ATMEL AVR ISP mkII за 35$. Можно найти сторонних программистов за 10-15$.

8
задан Alex Angas 5 October 2009 в 15:15
поделиться

2 ответа

С таким большим количеством предложенных решений я ' m удивлен, что никто не предложил то, что я считаю очевидным (для нехешируемых, но сопоставимых элементов) - [ itertools.groupby ] [1]. itertools предлагает быструю, многоразовую функциональность и позволяет делегировать некоторую сложную логику хорошо протестированным компонентам стандартной библиотеки. Рассмотрим, например:

import itertools
import operator

def most_common(L):
  # get an iterable of (item, iterable) pairs
  SL = sorted((x, i) for i, x in enumerate(L))
  # print 'SL:', SL
  groups = itertools.groupby(SL, key=operator.itemgetter(0))
  # auxiliary function to get "quality" for an item
  def _auxfun(g):
    item, iterable = g
    count = 0
    min_index = len(L)
    for _, where in iterable:
      count += 1
      min_index = min(min_index, where)
    # print 'item %r, count %r, minind %r' % (item, count, min_index)
    return count, -min_index
  # pick the highest-count/earliest item
  return max(groups, key=_auxfun)[0]

Конечно, это можно было бы написать более кратко, но я стремлюсь к максимальной ясности. Два оператора print можно раскомментировать, чтобы лучше видеть механизм в действии; например, с печатает без комментариев:

print most_common(['goose', 'duck', 'duck', 'goose'])

испускает:

SL: [('duck', 1), ('duck', 2), ('goose', 0), ('goose', 3)]
item 'duck', count 2, minind 1
item 'goose', count 2, minind 0
goose

Как видите, SL - это список пар, каждая пара - это элемент, за которым следует индекс элемента в исходном списке (для реализации ключевого условия, согласно которому, если «наиболее распространенные» элементы с одинаковым наибольшим количеством> 1, результат должен быть самым ранним из появившихся).

groupby группирует только по элементам (через operator.itemgetter ). Вспомогательная функция, вызываемая один раз для каждой группировки во время вычисления max , получает и внутренне распаковывает группу - кортеж с двумя элементами (item, iterable) , где элементы итерируемого также являются двух- кортежи элементов, (элемент, исходный индекс) [[элементы из SL ]].

Затем вспомогательная функция использует цикл для определения количества записей в группе итерируемый, и минимальный исходный индекс; он возвращает их как объединенные "

22
ответ дан 5 December 2019 в 06:54
поделиться

Чтобы использовать NTLM, см. ответ Джона . Если вам нужны заголовки между сеансами, посмотрите свойство CookieContainer в объекте HttpWebRequest. Вам нужно будет сохранить ссылку на свой CookieContainer и прикрепить ее к любым другим запросам HttpWebRequests, которые вы делаете.

2
ответ дан 5 December 2019 в 06:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: