- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
#Было
def extract_brand(x):
x = x[0].lower()
for brand in brands:
if x.count(brand):
return brand
il.brand_out = extract_brand
#Стало после кодревью
il.brand_in = lambda x: [brand for brand in brands if brand.lower() in x[0].lower()]
Жопа в другом - теперь lower считают на каждой итерации. Мой внутренний байтоёб негодует.
Код, кстати, не эквивалентный - оригинал возвращает первый найденный бренд, а вторая версия - все найденные.
Но в моем случае оно дальше искать не будет и вообще лишних телодвижений в разы меньше. Но это не важно, я тупо не могу прочитать результат.
[brand for brand in brands if brand.lower() in x[0].lower()]
Вернуть brand для каждого brand из brands такого, что brand.lower() содержится в x[0].lower().
Как-то так?
PS. вот таким макаром в проекте создается автодополнение значений из базы данных.
Оно не слишком медленное?
Но этот код никакие отложенные запросы не спасут, т.к. objects() + for явно пробегут по всем записям в таблице, а obj[prop] с неизвестным на время исполнения запроса prop заставит ОРМ выбрать все подряд поля...
При этом тот же LINQ, емнип, превратил бы этот запрос в че-то типа 'select distinct prop from table' в цикле по (prop, table). И база смогла бы воспользоваться index scan'ом вместо full table scan'а и т.п. Ну и трафик между СУБД и прогой на порядки бы упал.
var customer_name = Customer->findById(id);
Вопрос в том, что ORM тоже бывают не идеальны и запилить прямой запрос окажется в разы дешевле чем "сделать красиво", но тогда твой код окажется здесь.
Ну и для тех, кто заебался писать where foo like 'bar%' and baz = 42, когда эти условия убираются/добавляются динамически... Вот тут орм реально выруливает за счет композиции условий. Ну и insert/update конкретной записи намного проще делать. В общем большую часть рутины для формошлепства ORM запросто снимает.
Так что ОРМ очень даже при чем. Особенно если ее писали люди с ынтерпрайзом головного мозга.
А хрен знает, я на нем тоже не писал.
Ну а в теории монга должна же выполнить select distinct prop from table (или как там это пишется на ее языке) быстрее, чем прокачать всю таблицу да выпилить дубликаты на стороне питона?
Почти стихи
А второй еще ничего так, обычный list comprehension с не особо сложным условием. Хотя делает не совсем то, да.
В Питоне есть штатная функция any() которая замечательно справляется с поставленной задачей.
Если я правильно понял задачу.
Тут из встроенных функций filter можно: filter(...)[0], но это изврат и нужно обрабатывать ситуацию с пустым множеством возвращенным filter()
Потому что в оригинальном коде проверяют не совпадение а вхождение. Т.е. для 'Coca Cola inc' оно должно вернуть 'Coca Cola'.
Не, наоборот, есть бренд "pizza", а передали какую-то конкретную контору с названием в котором есть слово "пицца". Ну не суть.
Да, как-то так. Видимо, формат строчки с брендом довольно свободный, и на == его не проверишь. Хотя, тут может быть вообще какое-то нечеткое сравнение нужно, или поиск по наличию ключевых слов...
Преждевременная оптимизация, не? Что-то мне подсказывает, что время поиска в массиве брендов пренебрежимо мало по сравнению со временем исполнения HTTP запроса...
Но ответить на этот вопрос может только профилирование (которое никто не будет делать, пока скрипт отрабатывает за приемлемое время).
Нет это специфичный кусочек кода для одного сайта который полагается на его структуру и который был написан за несколько минут. Если понадобится поддержка в другом парсере напишу ее еще раз оттталкиваясь от особенностей текущих данных.
Нет ничего хуже универсальных отверток там где они не нужны.
Если ножек меньше трех - устойчивого положения не добиться. Если больше трех - устойчивость сильно зависит от рельефа пола, да и расход материалов повышается. Оптимальное число ножек - 3.
Если ветви в плоскости, перпендикулярной ножке - получим зависимость от рельефа пола, стул будет качаться.
А если они отходят от центральной под углом - это частный случай трех ножек, но менее надежный, т.к. все нагрузки ложатся на эту ось и точку сопряжения с ветвями ;)
У трехногого же стула нагрузка распределяется на все ножки, и они работают, по большей части, на сжатие.
Эх блин, пойти что-ли в kerbal space program порубиться...
Очень годный космосим. Посмотри на ютубе или вики/лурке.
Что-за утюг такой стрёмный, что вики не откроет? У нее же оптимизация под мобилы и все такое...
Ну в общем зеленые человечки покоряют просторы своей солнечной системы. Строишь ракету из говна и палок 100500 разных модулей и запускаешь куда-нибудь. А потом отправляешь еще одну - спасать первых чуваков, которым топлива хватило только в один конец. Попутно вкуриваешь матан rocket science ^_^.
Определенных целей нету, миссий нету, оружия нету. Да оно и не надо, ибо и так море фана и свободы ;)
Орбитальная карта пугает из-за кучи меток и траекторий?
А я тут уже полчаса компоную ракету, подбирая баки и движки под нужные TWR и ΔV и стараясь не забыть какую-нибудь важную детальку ^_^
Под дюну. У меня просто далеко не все научное древо открыто, мощного движка (MainSail или как там его зовут) нету, и TWR при взлете с кербина хрен наберешь...
И это тоже. Сам процесс стыковки выглядит безумным, типа заката солнца вручную. Или просто комментатор был тормоз.
>У меня просто далеко не все научное древо открыто, мощного движка (MainSail или как там его зовут) нету, и TWR при взлете с кербина хрен наберешь...
В стандартном режиме? Там по-моему достаточно слетать людьми на Минмус и Мун чтобы почти всю науку открыть.
Хотя по честному на дюну с посадкой и возвратом я так и не слетал ни разу, все время на какие-нибудь безумные проекты отвлекаюсь.
Пользуясь случаем рекомендую мод BTSM. Вот там жесть, за каждое открытие бороться приходится, на последнем пропелленте маневрировать. Картошка вместо батареек, солнечные весят больше чем экипаж.
наш человек
Тут парковочный радар просто дико неудобный. В орбитере я в свое время спокойно совмещал скорость/направление/цель.
А в перехвате чего муторного?
> Там по-моему достаточно слетать людьми на Минмус и Мун чтобы почти всю науку открыть.
Ну х.з., я давно не запускал KSP, вот на днях решил режим карьеры включить... 120sp дают за привезенный образец грунта с Муны. А тот же набор из MainSail и морковки стоит 300sp. А набор от Kerbodyne вообще 500sp.
> из-за этого всегда хочется побольше одним куском запустить
Не только :) Шлюз - не жесткий элемент, и из-за него вечно начинается "я твой дом труба шатал"... На взлете то можно закрепить балками, но потом - уже никак.
А образца 2-3 из разных биомов, плюс куча отчетов и прочей телеметрии. на минмусе вообще можно особо не напрягаясь раз 4-5 сесть, охватив кучу близлежащих биомов, и еще над всеми оставшимися пролететь.
>А в перехвате чего муторного?
Ну, это маневров 5 в общем счете, хоть мехджеб их сильно автоматизирует, но все равно минут 10 или даже полчаса они занимают. Тем более в полностью автоматическом режиме он обычно очень неоптимально действует, так что поднимаю орбиту и выравнивать наклонение надо отдельно.
А если без мехджеба или скажем с RemoteTech (сетью ретрансляторов) делать, то обычно еще какие-нибудь косяки происходят, то мертвая зона, то затормозить не успел.
>Не только :) Шлюз - не жесткий элемент, и из-за него вечно начинается "я твой дом труба шатал"... На взлете то можно закрепить балками, но потом - уже никак.
Это да. Но если все симметрично и без посадок на планеты, то обычно все ок.
Вот, кстати: A more efficient method (less total change in velocity) would be to combine the plane change with the tangential burn at apogee of the transfer orbit. http://www.braeunig.us/space/orbmech.htm#maneuver
> на минмусе
О, спасибо, я про него совсем забыл.
> то обычно все ок
Там, кстати, аддон вроде бы был со шлюзами без физики.
Ну когда надоест вручную - есть аддон, который стыкует на автомате.
> Или просто комментатор был тормоз.
Есть вероятность, что он просто коряво прикрутил RCS.
> Сам процесс стыковки выглядит безумным
Можно ссылку на рол, тоже хочу посмотреть ;)
Читерство, наверное?
Помнится, какой-то Союз стыковался с каким-то Союзом, но автоматика не шмогла из-за поворота блоков на 180 градусов по оси друг относительно друга.
> Можно ссылку
Смотрел примерно через месяц после выхода. Даже в истории не найду, наверное.
Ну некоторые считают читерством. Но ведь у реальных космонавтов тоже есть такой чит ;)
Варианты реализации тоже различаются: можно сидеть на полу; магнитная, антигравитационная или аэродинамическая подвеска.
Заодно защищает от пригорания жопы на форумах? ;)
Стул это точка, сидящий на нем - она же, и даже небо, и даже аллах являются той же точкой...
А если найду?
Как тогда эта хрень называется?
P. S. Удивительно, всеобобщающая математика выделила точку из множества пространств.
Это же аналог http://govnokod.ru/16208
Ну и там не сколько поиск время жрал сколько загрузка, парсинг и сохранение результатов в эксельку.
На какие преступления готовы пойти люди лишь бы не писать простой и понятный цикл?
Но до этого нужно дорости. Сразу это не очевидно.
>Но до этого нужно дорости. Сразу это не очевидно.
Только чтобы повторно использовать простой и быстрый код в 3 строчки люди зачем-то пишут 510.
Ну и сразу вопрос. Как можно повторно использовать такую вот замечательную лямбду:
lambda x: [brand
for brand in brands
if brand.lower() in x[0].lower()]
С ненавистным словом for между прочим.
Но в принципе питонисты такое должны читать, и пока я это все копипастила и меняла в общем привыкла. Все равно парсер состоит из xpath, css (который потом в тот же xpath транслируется) и регулярок больше чем наполовину (а все это гребанные кучки символов).
> Как как, копипастой.
Судя по тому, где она уже 2 раза оказалась, копипастой на ГК
Где в цикле простой код? Как измерялась простота?
Если речь идет о моем примере:
эта лямбда? Так там сразу же и пример использования, прямо там же.
Если речь о примере с лямбдой со списком внутри, то использовать так:
В чем проблема?
он про гипотетическое паттерноговно и его неумелое использование.
>>Как измерялась простота?
в ЭШах?