Search
Write a publication
Pull to refresh
90
0
Сергей Шашков @ShashkovS

Менеджер продукта, методист, разработчик

Send message
Explay, Prestigio и Fly хотели и договорились. Пока гугл не сказал «а теперь сверните лавочку».
Ну, если при этом можно делать и продавать плесневелые печеньки в оригинальной коробке (то есть девайсы с кривыми прошивками, откровенно слабым железом, багами, без обновлений и т.п., но с GMS), то это выглядит лицемерием.
Особенно учитывая то, что рецепт печенек открыт (android — open source), и пока ты его придумывал, ты пользовался сотнями других open source решений. И теперь запрещаешь (для x5 подобный запрет равносилен полному запрету) продавать печеньки, сделанные по открытому рецепту, но с другим кремом.
Так они сделали. Десятки миллионов установок. Да, не всё идеально, но достаточно качественно. Но они хотят иметь возможность (именно иметь возможность) донести свои приложения до тех, кто сам ничего не ставит, а пользуется предустановленым. Яндекс хочет, чтобы компании-производители устройств могли (именно могли) договориться с яндексом и поставить его прошивку на некоторые модели устройств только для российского рынка, и при этом не причинить себе вреда.
И да, если приложения яндекса плохие, то от чего же гугл беспокоится и принимает такие не совсем рыночные решения?
Какая тут может быть спорность?
Яндекс всего лишь хочет, чтобы производители, с которым договаривается яндекс, могли делать устройства, за которые «платит» яндекс, и не вредить при этом себе.
Гугл же говорит производителям: если сотрудничаешь с яндексом (ставишь его прошивку на любое выпускаемое устройство), то тебе запрещено сотрудничать со мной (ставить GMS на любое выпускаемое устройство).

Если ты сумел сделать крутые печеньки — то ты молодец, никто с этим не спорит.
Но если ты начинаешь запрещать, скажем, всей x5 retail group продавать свои печеньки потому, что в магазине в Урюпинке они продают печеньки местной фабрики, то это выходит за грани.
Мне тоже ничего не помогало, но нашёл где-то на форумах answers.microsoft.com батничек, который мне помог:

REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /V EnableXamlStartMenu /T REG_DWORD /D 1 /F

taskkill /f /im explorer.exe
start explorer.exe
def eratosthenes(N):
    simp, nonsimp = [2, 3], {i for i in range(3, N + 1, 3)}
    for i in range(5, int(N ** 0.5), 2):
        if i not in nonsimp:
            nonsimp |= {j for j in range(i * i, N + 1, 2 * i)}
            simp.append(i)
    simp.extend([j for j in range(i, N + 1, 2) if j not in nonsimp])
    return simp
print(len(eratosthenes(11 * 10 ** 6)))


Там есть ещё возможности оптимизировать, но они дурацкие и дают малый прирост.
Действительно, про i * i я не задумывался. Про корень из N я забил, в питоне оно слабо влияет на время.

константы очень сильно разные

У меня для вас плохие новости: ваш алгоритм быстрее всего в два раза…
А после оптимизаций аналогичных вашим на моём компе 2.9с к 2.3с.

В целом вы правы, константы разные, но прикол в том, что в питоне множества и словари молниеносно быстры, в то время как обычная арифметика не так, чтобы летает (по сравнению с сями). Поэтому если цель сделать что-то быстро, то нет нужды заморачиваться.
Посмотрел в вики. Если было бы написано
nonsimp = nonsimp | {j for j in range(3 * i, N + 1, 2 * i)}
то было бы O(сумма элементов там и там)

Но мы подливаем в существующее множество, поэтому имеем O(количество добавляемых элементов)
Там всё устроено следующим образом: в питоне множества — это хеш-таблицы. Сначала создаётся таблица на 16 элементов. По заполнении 2/3 происходит реаллокация с увеличением размера в 4 раза. По достижении размера в 32768 таблица не учетверяется, а удваивается. Таким образом у нас будет O(log n) реаллокаций. Практически все они произойдут в момент добавления нечётных чисел, делящихся на три. То есть мы сразу фигакаем хеш-таблицу на 2^(log(N/6) + 1) элементов, а дальше её потихоньку заполняем и другими не-простыми.
Операция |= занимает время порядка N / 2i (количество элементов в добавляемом множестве).
В питоне операции с множествами имеют O(1).

N^2 на 11 миллионах замер бы навсегда…
(сорри, промахнулся веткой)
Интересно, как же решето получилось так неудачно?
Код на питончике
def eratosthenes(N):
    simp, nonsimp = [2], set()
    for i in range(3, N + 1, 2):
        if i not in nonsimp:
            nonsimp |= {j for j in range(3 * i, N + 1, 2 * i)}
            simp.append(i)
    return simp
print(len(eratosthenes(11 * 10 ** 6)))

делает 726517 простых секунд за 30.
Часть прикола в том, что если пришить назад палец или руку, то нейроны из оставшейся части руки «прорастут» и инервируют всё, что инервировали раньше (если повезло). Чтобы они действительно «проросли» нужно предпринимать усилия, но этого можно добиться. В результате для того, чтобы пришить руку, нужно совместить разрушенные нервные волокна так, чтобы старые живые нейроны смогли по мёртвым волокнам прорости назад в руку. При этом «прорастут» десятки тысяч нейронов.
Если повредить нейроны на уровне позвоночника, то тут уже ничего не «прорастёт».

Это про пришивание старой руки. А про пришиванием механической — ниже отличный комментарий.
Про аэроэксперссы — к тому, что это есть и работает.

Да, есть затраты на инфраструктуру. Но и сейчас есть затраты на смарткарты и кассиров. Зарплата кассира за месяц — это уже несколько терминалов.

Кроме того, мы получим увеличение пассажиропотока.
Сейчас в МСК если ты пришел на автобусную остановку без билета, то общественный автобус выйдет тебе в полтинник. Или в стольник на 4 поездки. Если мне нужна одна поезка, то я поеду на маршрутке.
Бабушки пусть ходят с теми билетами, которые им нравятся. Ничего не мешает использовать параллельно QR-код и бумажный билет (так сейчас сделано с аэроэкспрессами в Москве. Можно купить бумажку в кассе или автомате, а можно купить QR-код в мобильном приложении и пройти через турникеты по нему.

Транспортная карта — это всегда небольшая, но проблема. Её можно потерять (хана денюжкам), сломать или размагнитить (хана денюжкам), забыть дома.

Приложение на смартфоне в значительной степени лишено этого недостатка (ну, кроме может быть «забыть дома»).
Рекомендую ресурс informatics.mccme.ru/course/view.php?id=156.
Годные теоретические материалы, суперская подборка задач и автоматическая тестирующая система.
Благодаря этому школьники могут решать задачи дома и тут же узнавать, правильное ли у них решение.
По моим наблюдениям одно только это повывает мотивацию школьника в два раза.

Можно зарегистрировать как преподаватель, написать письмо админам, после этого можно будет просматривать задачи, которые сдают школьники.
В языках программирования это довольно стандартно… Хотя в excel, скажем, всё наоборот…
Вам немного поможет Alt. Выделяйте с зажатым Alt (как обычно, бонусом два клика — выделить слово, три клика — абзац).
(Сорри, если не помогло)
Это какая-то адова тенденция… Там где раньше нужен был один клик мыши, со временем становится нужно два или три.
Обидно, что хабр под неё тоже попал…
На мой взгляд, аналоговый видоискатель стоит того.
Механика там, кстати, весьма надёжная.
100000 кадров — это огромный запас, его удаётся перевалить по сути только провессионалам, щёлкающим по несколько сотен кадров в день.

Аналоговый видоискатель работает мгновенно, не страдает от солнца, нет жрёт батарею.
Ты видишь только кадр и можешь на нём сконцентрироваться.
Кроме того, в позиции «смотрю в видоискатель» удобно крутить зум или фокусировку.

А ещё есть эргономика. Беззеркалки держат двумя пальчиками. Зеркалку — полной ладонью.
Это как пилочка для ногтей и напильник. Хватом для пилочки неудобно работать над деталью.

Конечно, всё описанное выше только для тех, кому это нужно.
Маме я купил беззеркалку, сам же таскаю полтора килограмма даже в горы и на суровые реки.
Да всё как обычно… Если блогер не оспорит, то страницу заблокируют.
Если после этого докажет, что страница его — получит штраф 50000р.
А вот как доказать, что страница твоя, но у тебя меньше 3000 посетителей — я не представляю…

Идея у них очень простая: для начала разрешить блокировать всё подряд без разбору.
А дальше блогеры сами потянутся и самоцензуру введут…

Information

Rating
9,664-th
Location
Россия
Date of birth
Registered
Activity

Specialization

Backend Developer, Product Manager
Lead
Python
Project management
Algorithms and data structures
asyncio