- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
# класс ЧегоТоТамПарсер(object):
def _get_images(self, soup, basedomain):
soup = soup.get_soup()
fb_images = soup.findAll(name="meta", attrs={
"property": lambda property: property and property.lower() == "og:image"})
images = (soup.body or soup).findAll(name="img", src=True)
get_source = lambda img: img.get("content") \
if img.get("content", None) \
else img.get("src") \
if img.get("src").startswith("http://") \
else "http://"+img.get("src").lstrip("/") \
if img.get("src").startswith("//") \
else urljoin("http://"+basedomain, img.get("src").lstrip("/"))
return list(set(map(get_source, fb_images + images)))
def get_images(self):
try:
if self.basedomain:
return self._get_images(self.soup, self.basedomain)
return []
except URLError:
return []
jabber 23.11.2011 22:51 # −1
greno 23.11.2011 22:59 # +2
Lure Of Chaos 23.11.2011 23:12 # 0
тело в супе!
greno 24.11.2011 21:00 # +1
JeremyW 24.11.2011 08:46 # −1
list(set( - особая уличная магия :)
TarasB 24.11.2011 11:19 # −2
roman-kashitsyn 24.11.2011 11:24 # 0
defecate-plusplus 24.11.2011 11:38 # +2
F2069: Line too long (more than 1023 characters)
особенно порадовала невозможность создать литерал "aaaa...aaa" длиной больше 255 символов
E2056: String literals may have at most 255 elements (Delphi)
искалеченные судьбы
d_dev 24.11.2011 13:41 # −2
авотх*уй, еще как можно.
садись крестоносец, два.
defecate-plusplus 24.11.2011 14:07 # −2
или ты считаешь вариант с разбивкой "ааааа"+"ааааа" нихуя не тупым ограничением тупого дельфи, а наоборот, великим провидением божественного Вирта?
d_dev 25.11.2011 11:39 # −1
для тебя это тупое ограничение для меня это благо, ибо читать неформатированное говно мне совсем не интересно.
roman-kashitsyn 25.11.2011 12:02 # +1
TarasB 25.11.2011 12:04 # 0
Или всё-таки через
?
roman-kashitsyn 25.11.2011 12:08 # 0
Это всё будет одной непрерывной строкой и не потребует никаких действий в runtime, я часто так делал.
d_dev 25.11.2011 13:13 # 0
работает в compiletime
roman-kashitsyn 25.11.2011 13:15 # 0
roman-kashitsyn 25.11.2011 12:23 # 0
defecate-plusplus 25.11.2011 12:27 # 0
без рантайма + не сделать, это же операция над указателями
в с++ больше удобных и безопасных способов это сделать, разве что
roman-kashitsyn 25.11.2011 12:31 # 0
defecate-plusplus 25.11.2011 12:34 # 0
roman-kashitsyn 25.11.2011 12:35 # 0
TarasB 25.11.2011 13:05 # 0
А в сях... Ну, няшапроблемы, чё.
defecate-plusplus 25.11.2011 12:10 # 0
да и мой сишный компилятор 1989 года для моторолы 68к без проблем 1к литерал осиливает.
TarasB 25.11.2011 10:21 # 0
Вот студия намного хуже - она не может компилировать более 128 вложенных друг в друга свичей.
defecate-plusplus 25.11.2011 11:54 # 0
U made my day
128 вложенных свичей - разумные ограничения парсера вижуал студии
гцц без проблем и 130 осиливает (только что проверил), только кому это надо
а вот литералы по 255 символов - это, несомненно, современный язык в современной среде разработки и, несомненно, у производителя в 21 веке на то были основательнейшие причины - машины у школьников то не потянут!
жду еще обличающих фактов о говноси
TarasB 25.11.2011 12:05 # 0
а вот 128 вложенных свичей - это, несомненно, современный язык в современной среде разработки и, несомненно, у производителя в 21 веке на то были основательнейшие причины - машины у школьников то не потянут!
жду еще обличающих фактов о говнодельфи
лень было писать своё, и так копипасты хватает
defecate-plusplus 25.11.2011 12:12 # 0
вопрос знатокам
дельфя когда делает 'aaaaaa'+'bbbbbb' размещает в программе конечную склеенную строку, или делает операцию "+" в рантайме?
bugmenot 25.11.2011 12:16 # 0
defecate-plusplus 25.11.2011 12:22 # 0
речь идёт о преодолении 255 байт
предлагают заводить не string (или какой там у них тип кастрирован и хранит в первом байте длину), а сишный аналог
раз сишный аналог, значит строка null-terminated и хранится где ей положено - либо в куче, если создаётся в рантайме, либо в .data, если компилятор её сам там размещает (как в С)
вот и вопрос, размещает ли он её в .data
bugmenot 25.11.2011 12:40 # +1
Бьярне, вы - тормоз
> размещает ли он её в .data
константное выражение где может размещаться? в BSS?
defecate-plusplus 25.11.2011 12:50 # 0
'aaaa...a'+'bbbb...b' (каждый по 240 символов)
вариант 1) конпелятор, пользуясь помощью духов и административным ресурсом, понимает, что это мать их две константы и он прямо сейчас делает ахалай-махалай и достаёт из ширинки кролика размещает результат в виде единой строки в константном сегменте (в хексредакторе это будет непрерывной строкой aaaa.aaabbbbb..bb\0 длиной 240+240+1 символов
2) конпелятор понимает только строки по 255 символов (которых, как известно, should be enough for everyone) - а это охуенно правдоподобно, поэтому отдельно создает константную строку 'aaaa...aa', отдельно создает строку 'bbbb....b' (или может пользуясь своей магией их сразу оборачивает в тип string), затем в рантайме выполняет операцию + над этими строками string, чтобы получить где то в куче null-terminated массив символов и выдать указатель на оного
TarasB 25.11.2011 13:05 # +1
я сам удивился
bugmenot 25.11.2011 14:21 # 0
defecate-plusplus 25.11.2011 14:26 # 0
bugmenot 25.11.2011 14:33 # 0
даже в затертом можно сделать не TP-string длиной в сегмент
/me упорно игнорирует тот факт, что уже насрано объявлением шириной > (80 - индент) символов
TarasB 25.11.2011 14:35 # 0
TarasB 25.11.2011 13:03 # +1
Мальчик, ты тормоз. Строки в Дельфи уже лет 15 как хранят длину в int, имеют любую длину и всегда кончаются на ноль.
defecate-plusplus 25.11.2011 13:05 # 0
E2056: String literals may have at most 255 elements (Delphi) - ошибка 2009 дельфей, судя по странице
TarasB 25.11.2011 13:35 # 0
Литерал из >=256 символов надо разбивать на строки, а не писать в одну.
defecate-plusplus 25.11.2011 13:40 # −2
в С/С++ строки переносятся без операции +, причем несколькими способами (использование \ в конце строки последним символом - один из них, на который ты сагрился по неопытности), а результат размещения результата очевиден
хорошо хоть теперь и для гуру дельфи очевиден результат в их замечательной среде
TarasB 25.11.2011 13:50 # +2
defecate-plusplus 25.11.2011 14:00 # −1
TarasB 25.11.2011 14:36 # +5
Капча 6543
roman-kashitsyn 25.11.2011 14:13 # +3
но на Delphi я писать ни за что не буду
defecate-plusplus 25.11.2011 14:23 # 0
?
roman-kashitsyn 25.11.2011 14:29 # 0
2. Складывать константные строки произвольной длины в компайл-тайм теоретически нельзя (стандарт ограничивает, gcc помню поддерживает, но кидает ворнинг при превышении).
defecate-plusplus 25.11.2011 14:39 # +1
какой компилятор необходимо использовать непосредственно тебе?
вот у меня есть, например, mcc68k.exe, приходится использовать на работе для живых проектов - никаких C99 он не понимает, потому что был выпущен гораздо раньше, этот компилятор примерно современник турбо паскаля
но у него нет ограничений в 509 символов константной строки
равно как и нет ограничений в 6 уникальных символов для extern имён - мы бы все тут ебанулись на отличненько с этим тулкитом, если бы это было так
соответствует ли он стандарту в плане "as many as" - конечно
или ты чисто теоретически сделал вывод?
про складывать строки произвольной длины я не понял
сам же написал пример "aaa" "bbb" "ccc"
а это ведь как раз часто применяется, особенно когда
#define XNAME "SOME"
#define XVER "001"
#define XEXT ".fuck"
#define FULL_XNAME XNAME XVER XEXT
что не так то?
TarasB 25.11.2011 14:40 # 0
defecate-plusplus 25.11.2011 14:43 # 0
для вычисления детерминанта матрицы 5х5 в школьной задаче их негде применить
TarasB 25.11.2011 14:59 # 0
lucidfoxGovno 25.11.2011 16:20 # −1
>всё верно
Я умываю руки.
defecate-plusplus 25.11.2011 14:57 # 0
вот вы хаете макросы, мол дерьмо, в хороших языках их нет
навеял еще один вопрос
в си я могу сделать так
#ifndef SOMEVAL
#define SOMEVAL 100
#endif
затем вызвать компилятор с аргументом -DSOMEVAL=200 и везде будет подставлено значение 200
а какие варианты для решения такой задачи есть у альтернативной секты?
TarasB 25.11.2011 15:00 # 0
defecate-plusplus 25.11.2011 15:06 # 0
#define _DEBUG 0
#endif
#if _DEBUG
#define _DEBUG_X 0
#define _DEBUG_Y 1
#define _DEBUG_Z 0
// over 9000 целей, позволяющих отлаживать конкретные логические части приложения
#endif
// где то в приложении
#if DEBUG_X
// do dome debug logging tasks
#endif
т.к. на сишечке приложение собирается максимально компактное и желательно быстродействующее, я не могу собирать логи на каждый чих в релизной версии, только в дебажной, причем на небольшое множество чихов (зачем мне логи давно отлаженного и не изменённого кода)
соответственно релизную и дебажную версию мне собирает компилятор, которому либо передаю -D_DEBUG=1, либо не передаю
TarasB 25.11.2011 15:14 # 0
А булевые флаги в Дельфи есть.
defecate-plusplus 25.11.2011 15:15 # 0
а -DAPPVERSION=1.2.3.4
defecate-plusplus 25.11.2011 15:17 # 0
типа
#if BOOST_VERSION >= 104700
#else
#endif
TarasB 25.11.2011 15:19 # 0
Булевые сравнивать нельзя.
Можно только писать что-то типа
{$IFDEF VER150} что означает, что версия компилятора 15.0 или выше.
Для версий библиотек аналогично.
defecate-plusplus 25.11.2011 15:27 # 0
ой, а как же тогда сделать простейшую булевую операцию?
#if CASE1 || CASE3
// do 1
#else
// do 2
#endif
lucidfoxGovno 25.11.2011 16:22 # −2
#define _DEBUG_X 0
#define _DEBUG_Y 1
#define _DEBUG_Z 0
Фу бля говнище. Нормальный код нужно писать. На худой конец возьми частичную специализацию шаблонов С++, если не можешь по нормальному.
defecate-plusplus 25.11.2011 16:28 # +1
но ожидал, что ты умеешь читать по-русски
> например, mcc68k.exe, приходится использовать на работе для живых проектов
погугли что это за компилятор и какой язык я им компилирую
для проектов на С++ логирование давно сделано как надо и охуенно, или ты хочешь дать еще пару бесплатных советов? я послушаю
roman-kashitsyn 25.11.2011 16:29 # +1
На самом деле на это мега нужная вещь. Так сишное ПО настраивается под среду, в которой компилируется. Например, так можно указать, какие библиотеки присутствуют в системе, или с интеграция с какими из них нужна. К примеру, можно собирать программы с интерфейсом GTK или QT в зависимости от флагов компиляции.
В Gentoo это фичи юзают по полной :)
lucidfoxGovno 25.11.2011 16:18 # −2
Как нет? В лиспе "макросы" такие, что сишные макросы сливают по полной. Так что больше чтоб не слышал, что в хороших языках их нет.
В присутствии лисп, Nemerle, Boo и ещё некоторых языков Няшной сишке не пристало даже Някать, чтобы не позорится.
lucidfoxGovno 25.11.2011 16:05 # −3
Это?
http://ideone.com/3PbH9
lucidfoxGovno 25.11.2011 16:01 # −3
Ей пользуются только анимешники и задроты. Чем не аргумент?
roman-kashitsyn 25.11.2011 16:34 # 0
guest 25.11.2011 16:47 # 0
d_dev 25.11.2011 13:10 # 0
bugmenot 25.11.2011 11:43 # +3
roman-kashitsyn 25.11.2011 13:11 # +3
The ANSI C Standard of 1989 requires implementations to allow as many as 31 characters in an *internal* identifier name, although they are allowed to allow longer names. But it only requires them to allow as many as 6 identifiers in an external name (e.g. a non-static function). The ISO C90 Standard (ISO/IEC 9899:1990) is identical to the ANSI C Standard if you ignore section numbering, so it's the same for ISO C.
In C99 (ISO/IEC 9899:1999), the limits were increased to 63 and 31
respectively, but hardly anyone uses C99-conforming compilers.
Вот где настоящий трэш.
bugmenot 25.11.2011 14:35 # 0
gegMOPO4 24.11.2011 19:45 # +1
Nemoden 25.11.2011 04:34 # 0
?
При условии, что _get_images не генерирует сиключений...
Nemoden 25.11.2011 04:40 # 0
гоню. суп же.
guest8 09.04.2019 12:13 # −999