У меня они оба тормозят. Так как я использую старую Opera с сотнями вкладок, то меня это не удивляет. Хотя bitbucket обычно тормозит чуточку больше, но не намного.
У github, кстати, есть мобильная версия, хотя и не слишком удобная. У bitbucket я такого не видел.
Вот HTML нету. Но пока не вылезают проблемы с экранированием (я их сейчас не вижу), то он и не нужен.
Если что, то я перечислил все возможности markdown, которые я считаю достаточно продвинутыми и которыми я реально пользуюсь (как вы видите, в списке нет заголовков, хотя они и поддерживаются: просто я ими в комментариях/описаниях проблем не пользуюсь). Не буду утверждать, что это все возможности markdown, но мне сложно представить, что может понадобиться ещё.
На мой взгляд у обоих сервисов есть некоторые проблемы с навигацией. Bitbucket мне нравится из‐за их issue tracker’а. Но запросы на слияние удобнее делать всё же на Github.
Обычно антивирусы для linux проверяют на наличие вирусов для Windows, поэтому могут присутствовать как у вас на шарах, ещё часто их ставят проверять почту. Но их не ставят проверять данные, если не предполагается использование этих данных на машинах с Windows.
Нет, это не моё решение. У меня выражение в инфиксной записи проходит через {число уровней приоритета} преобразований, в промежутках выдавая выражение в частичной обратной польской нотации, а здесь однопроходной парсер. У меня асимптоматика по времени хуже, по памяти так же (честно говоря, мне сложно написать такой калькулятор с более чем O(N) по памяти).
По условию задачи у вас есть формула с цифрами, операциями +-*/ и скобками. Нужно написать программу, которая ее вычисляет. Формула может быть большой. Хочется, чтобы программу можно было легко дорабатывать, вводя функции, параметры и т.д.
Я как‐то писал такое на фортране. Без рекурсии, без деревьев, без сложных структур данных вообще. Способ простой
Преобразуем выражение в обратную польскую нотацию. Просто переносим операции, начиная с наименее приоритетных и расположенных правее всего, через их правый операнд. Операции для переноса выбираются справа налево (по позиции), снизу вверх (по уровням); сначала проходятся позиции, потом уровни. Последним шагом удаляются все скобки.
Результат выполняется в простейшей стёковой виртуальной машине, состоящей на 90% из копипасты.
Вершина стёка возвращается как результат.
O(N) по памяти (на хранение формулы. Вы так же не можете получить стёк больше, чем имеется в формуле токенов, т.к. есть только токены‐значения (+1 значение в стёке) и токены‐функции/операторы (+1−(арность) значение в стёке: т.е. +0 в худшем случае)). Если я не ошибаюсь, то O(N²) по времени (перенос операций проходит формулу два раза: в обратном (для нахождения операций) и прямом (для переноса через операнды) порядках; число уровней — константа; исполнение на стёковой виртуальной машине — O(N)). (N — длина формулы.)
Число выделений памяти минимально: если вы знаете длину формулы можно обойтись одним (в моей программе их 0, но длина формулы жёстко ограничена на этапе компиляции).
При записи всего этого на более удобном языке, чем fortran, добавить пользовательские функции и функции с переменным числом аргументов (лучше (легче) в стиле Haskell f (a) (b)) довольно легко (переменные у меня уже есть). Хотя до того, как я поставил себе задачу написать такой «калькулятор» именно на фортран, я бы тоже делал синтаксический парсер. Сейчас бы использовал имеющееся в голове решение.
Обычно можно просто не подключать светодиод. Правда не в случае если залезание внутрь = лишение гарантии.
Светодиоды на прочей, не предназначенной для разбора, технике гораздо хуже: у меня здесь лежит внешний аккумулятор для смартфона, в который, похоже, вставили пачку светодиодов, предназначенных для фонариков. Для разбора эту штуку надо сломать.
Читайте статью внимательно. Ответ на ваш вопрос дан в следующем же абзаце:
Но ведь ответ -5 — неправильный. По определению НОД — наибольший общий делитель. А таковым является число 5. Ведь и первое, и второе число делятся без остатка на 5. Значит и первые две реализации не дают верный ответ.
* То есть, он не был обязан выдавать это при создании. Теперь, если math.log начнёт выдавать исключение, комплексное число или что‐нибудь ещё, будет много недовольных, которые рассчитывают на старое поведение.
Не сказал бы: Python и Perl кидают исключение, lua тоже не обязан выдавать то, что выдаёт сопроцессор. Высокоуровневые языки на то и высокоуровневые, что абстрагируются от железа.
Исключений может просто не быть: тогда и кинуть их не получится. NaN взят из lua, там исключения ловятся весьма заморочным способом с pcall, а math.log(-1) возвращает NaN.
Ещё можно INT_MAX :) Всё равно пока аргумент int ничего больше просто быть не может. Но я бы бросил исключение либо вернул −1: ±∞ существует только для чисел с плавающей запятой, выпендрёж с INT_MAX вряд ли кому‐то нужен, а −1 gcd возвращать не должен ни при каких условиях. Т.е. специальное значение (здесь — −1, т.к. я последнее время много пишу на C, но это может быть и nan (привет языкам без целых чисел) или Nothing) для языков без исключений (или где их не принято использовать для математических функций) либо исключение.
Не понял. Ясно же сказано, что копирование производится «если файл новый или поменялся». Как определяется «поменялся» надо смотреть в документацию rsync: насколько я знаю, он по‐умолчанию проверяет только дату и размер (и считает хэш только при несовпадении даты), но может быть настроен всегда сверять хэши при совпадении размера (при несовпадении считать хэш смысла не имеет: и так понятно, что файл изменился).
from timeit import timeit
import random
from collections import defaultdict
a = [random.randint(1, 10000) for a in range(10000000)]
def dictionary_setdefault(l, d={}):
for i in l:
d.setdefault(i, 0)
d[i] += 1
def dictionary_keyerror(l, d={}):
for i in l:
try:
d[i] += 1
except KeyError:
d[i] = 1
def defaultdict_simple(l, d=defaultdict(int)):
for i in l:
d[i] += 1
for func in (dictionary_setdefault, dictionary_keyerror, defaultdict_simple):
import sys
sys.stderr.write('Processing {0}\n'.format(func))
print (timeit('import __main__; __main__.{0}(__main__.a)'.format(func.__name__), number=1))
У меня defaultdict самый быстрый:
Processing <function dictionary_setdefault at 0x7f16a635c758>
4.41468501091
Processing <function dictionary_keyerror at 0x7f16a635ced8>
2.28980493546
Processing <function defaultdict_simple at 0x7f16a635cf50>
2.04581904411
(Python 2.7.5). Python 3.2.5:
4.152358055114746
2.3733527660369873
1.9591529369354248
Processing <function dictionary_setdefault at 0x7ff5409bda68>
Processing <function dictionary_keyerror at 0x7ff5409bd9e0>
Processing <function defaultdict_simple at 0x7ff5409bd518>
(по всей видимости, stderr буферизуется не по строкам).
В Python 3 iteritems переименовали в items. Так что для совместимости, если скорость не критична, писать items. И второй вариант также не будет создавать список — пока вы используете Python 3.
К tilda есть претензия в виде собственного метода настройки вызова: у меня все глобальные клавиатурные сочетания находятся только в ~/.fluxbox/keys и самодеятельность tilda мне совершенно не нужна. Остановился на yakuake (основывается на konsole (из KDE)). Теперь к tilda есть дополнительная претензия в виде отсуствия поддержки true color.
Если кто не понимает, как показать yakuake из .fluxbox/keys: используйте qdbus. Конкретнее:
Если злоумышленник может добраться до ~/bin, то он с такой же лёгкостью доберётся до ~/.zshrc или ~/.bashrc и определит функции su или sudo там. Не вижу тут никаких дополнительных уязвимостей: либо у злоумышленника есть доступ к ~ и вы пропали, либо наличие ~/bin не является проблемой.
У github, кстати, есть мобильная версия, хотя и не слишком удобная. У bitbucket я такого не видел.
#N
— есть.@username
— есть.```
— (выделение блока кода без использования отступов) есть.---
— (горизонтальная линия) есть.1.
— (списки) есть.``code`with`backticks``
— есть.Изображения, вынос URL вниз — тоже есть.
Вот HTML нету. Но пока не вылезают проблемы с экранированием (я их сейчас не вижу), то он и не нужен.
Если что, то я перечислил все возможности markdown, которые я считаю достаточно продвинутыми и которыми я реально пользуюсь (как вы видите, в списке нет заголовков, хотя они и поддерживаются: просто я ими в комментариях/описаниях проблем не пользуюсь). Не буду утверждать, что это все возможности markdown, но мне сложно представить, что может понадобиться ещё.
O(N) по памяти (на хранение формулы. Вы так же не можете получить стёк больше, чем имеется в формуле токенов, т.к. есть только токены‐значения (+1 значение в стёке) и токены‐функции/операторы (+1−(арность) значение в стёке: т.е. +0 в худшем случае)). Если я не ошибаюсь, то O(N²) по времени (перенос операций проходит формулу два раза: в обратном (для нахождения операций) и прямом (для переноса через операнды) порядках; число уровней — константа; исполнение на стёковой виртуальной машине — O(N)). (N — длина формулы.)
Число выделений памяти минимально: если вы знаете длину формулы можно обойтись одним (в моей программе их 0, но длина формулы жёстко ограничена на этапе компиляции).
При записи всего этого на более удобном языке, чем fortran, добавить пользовательские функции и функции с переменным числом аргументов (лучше (легче) в стиле Haskell f (a) (b)) довольно легко (переменные у меня уже есть). Хотя до того, как я поставил себе задачу написать такой «калькулятор» именно на фортран, я бы тоже делал синтаксический парсер. Сейчас бы использовал имеющееся в голове решение.
Интересно, это считалось бы допустимым ответом?
Светодиоды на прочей, не предназначенной для разбора, технике гораздо хуже: у меня здесь лежит внешний аккумулятор для смартфона, в который, похоже, вставили пачку светодиодов, предназначенных для фонариков. Для разбора эту штуку надо сломать.
У меня defaultdict самый быстрый: (Python 2.7.5). Python 3.2.5: (по всей видимости, stderr буферизуется не по строкам).
Если кто не понимает, как показать yakuake из .fluxbox/keys: используйте qdbus. Конкретнее: