Интуитивно: у такого большого орнитоптера будут гигантские энергозатраты на разгон и торможение крыльев, совершающих возвратно-поступательные перемещения с частотой 50+ Гц, а сделаны крылья должны быть из адамантия, чтобы не развалиться при ускорении. Впрочем, торможение может быть рекуперативным. Здесь те же проблемы, что у поршневых моторов: чем больше ход поршня, тем до большей скорости он, поршень, должен быть разогнан при одной и той же частоте вращения коленвала.
До 24.02 курс был "рыночным"? Полтриллиона ЗВР появились путём занижения курса рубля. Это 1-2 годовых объёмов сырьевого экспорта страны. Что-то я не помню, чтобы до 24.02 кто-либо возмущался нарисованным курсом.
За полгода никто так и не посчитал нужным предъявить мне за то, что я 100 млн. раз постучался по произвольному индексу в гигабайтную UTF-8 строку (build_tree.rb).
Тем временем, я хочу похвалить Ruby за то, что он смог отсортировать 100 млн. int'ов за 1 минуту (normalize.rb), это лишь в 4-5 раз медленнее, чем qsort() из glibc. Оптимизация работает так: перед сортировкой Ruby сканирует массив, и если все значения попадают в диапазон C-шного int'а, то копирует все значения в C-массив, вызывает на нём qsort(), и уже упорядоченные значения копирует обратно в изначальный Ruby-массив.
А уж про пропускную способность. Ну, начнем с того, что в секунду «любой системник» при размере базы в миллион записей сможет отдать 20-30 ответов, и это будет еще хорошо. Даже при оптимистичном 50 записей в секунду — 180000 запросов в час.
LAMP-овые DNS-серверы? Звучит как RGB-мечта проставщиков «железа».
Есть принципиальная разница между дистрибуцией через торговое предприятие и через транспортное: торговое предприятие, как правило, требует процент от стоимости товара, оплата услуг логистической конторы зависит только от массо-габаритных характеристик распространяемых ништяков (англ. «goods»).
Как прекрасны мечты о мире, где уважающий себя потребитель не позволяет торговому люду паразитировать, где купечество заменено «сервис-провайдерами» услуг хранения и траспортировки…
Не в чистом виде: число узлов превысит число паспортов.
У меня получился гибрид: первые 8 символов — в префиксном дереве, остальные 2 — в битовых массивах в листьях.
normalize.rb
#!/bin/ruby
STDERR.puts Time.now
b = []
while s = gets
s.gsub! /\D/, ''
b << s.to_i if s.size == 10
end
STDERR.puts Time.now
b.sort!
STDERR.puts Time.now
b.each do | i |
print '%010d' % [i]
end
STDERR.puts Time.now
#!/bin/ruby
b = File.read 'normalized.txt'
N = Struct.new :digit, :first_child, :next_sibling
T = N.new
count = 0
Insert = -> t, c do
if t.first_child == nil
count += 1
return (t.first_child = N.new c)
end
t = t.first_child
while t.digit != c && t.next_sibling != nil
t = t.next_sibling
end
return (t.digit == c) ? t : (count += 1; t.next_sibling = N.new c)
end
STDERR.puts Time.now
(0...b.size).step 10 do | i |
t = T
b[i, 8].each_char do | c |
t = Insert.(t, c)
end
puts count if i % 1e8.to_i == 0
end
STDERR.puts Time.now
puts count
25 декабря появилась статья от клиента сервиса, который обнаружил, что цена за поездки на такси, для клиентов имеющих подписку Яндекс.Плюс (своеобразная программа лояльности) выше на 10%, чем цена для клиентов без Плюса.
Прикольная у Gett программа лояльности (2 картинки)
Если кто-либо сможет объяснить, что текст из цитаты неприменим к картинкам, я этого человека выслушаю.
Один CPU поток, т.к. методом не сложных математических вычислений, можно прикинуть, какое latency будет, если алгоритм распарралелить.
Переиспользуемые потоки + массив volatile _Bool'ов для синхронизации = латенси в районе 100 наносекунд на подхват задания потоком. Каждый _Bool действует как переключатель с ровно двумя положениями: «0» — «child читает, main пишет», «1» — «main читает, child пишет». Когда поток, имеющий право на запись меняет значение «переключателя», то он одномоментно (и вполне атомарно) лишает себя права на запись и передаёт это право «напарнику».
Ценообразование — удивительная штука: единственным объективным фактором, определяющим цену, является необъективное представление продавца о «приемлемом» вознаграждении за товар. Такой объективный показатель, как затраты человеко-часов, не является определяющим: например, пользователь опен-сорса получает ПО за 0 денежных едениц, не потому, что его автор потратил 0 человеко-лет; обратный пример, при котором за абсолютно примитивную фигню автор запрашивает много-много денег, встречается гораздо чаще.
Конкуренция на рынке, конечно же, способствует снижению необоснованно завышенных цен, но никакой конкуренции среди производителей чипов нет: они не сражаются за рынок, они его делят.
Победа «дешёвой» конденсаторной (Dynamic) над «дорогой» транзисторной (Static) RAM случилась примерно так: давно-давно, лет 40 назад, когда частоты CPU измерялись единицами Мегагерц, некий оптимизатор (без кавычек) решил, что тратить на 1 бит RAM лишь 1 транзистор и 1 конденсатор гораздо выгоднее, чем 6 транзисторов; необходимость перезаряжать конденсатор не могла по тем временам как-то значимо отразиться на скорости доступа к RAM или на энергопотреблении. Со временем, частота CPU возросла в 1000 раз, цена на один транзистор упала в 1000 раз, RAM стоит так мало, что каждый потребитель может купить её в большем количестве, чем ему нужно; вроде бы, пора перестать экономить транзисторы и избавиться от конденсаторов, но нет: вместо этого строится многоэтажная иерархия кэшей с суперзамороченным контролем когерентности. Анонсированный перенос многослойной DRAM под одну крышку с CPU всех проблем конденсаторной памяти не решит.
Интуитивно: у такого большого орнитоптера будут гигантские энергозатраты на разгон и торможение крыльев, совершающих возвратно-поступательные перемещения с частотой 50+ Гц, а сделаны крылья должны быть из адамантия, чтобы не развалиться при ускорении. Впрочем, торможение может быть рекуперативным. Здесь те же проблемы, что у поршневых моторов: чем больше ход поршня, тем до большей скорости он, поршень, должен быть разогнан при одной и той же частоте вращения коленвала.
До 24.02 курс был "рыночным"? Полтриллиона ЗВР появились путём занижения курса рубля. Это 1-2 годовых объёмов сырьевого экспорта страны. Что-то я не помню, чтобы до 24.02 кто-либо возмущался нарисованным курсом.
Clang делает тучу проверок, никак не прописанных в стандарте языка: например, кидает ворнинг на присваивание вида
Предупреждение глушится парой дополнительных скобок:
Мне не кажется, что из-за подобных проверок Clang перестаёт быть компилятором C.
https://www.foreca.com/ru/
Мой провайдер интернета подсовывает рекламу на страницах без https:
Снимок экрана
Ещё есть вариант использовать наушники со встроенной памятью / карт-ридером.
Где можно посмотреть на этот чудесный switch на сотню case'ов, с которым ничего особо сделать нельзя?
У меня друг спрашивает, он такое любит.
За полгода никто так и не посчитал нужным предъявить мне за то, что я 100 млн. раз постучался по произвольному индексу в гигабайтную UTF-8 строку (build_tree.rb).
Тем временем, я хочу похвалить Ruby за то, что он смог отсортировать 100 млн. int'ов за 1 минуту (normalize.rb), это лишь в 4-5 раз медленнее, чем qsort() из glibc. Оптимизация работает так: перед сортировкой Ruby сканирует массив, и если все значения попадают в диапазон C-шного int'а, то копирует все значения в C-массив, вызывает на нём qsort(), и уже упорядоченные значения копирует обратно в изначальный Ruby-массив.
Вероятно, фантазии о стоимости ифраструктуры основаны на habr.com/post/551346/#comment_22899208
LAMP-овые DNS-серверы? Звучит как RGB-мечта проставщиков «железа».
Как прекрасны мечты о мире, где уважающий себя потребитель не позволяет торговому люду паразитировать, где купечество заменено «сервис-провайдерами» услуг хранения и траспортировки…
Ах, мечты, мечты…
Не «кто», а «что»: владение государя, как поместье у помещика. Все земли и людишки, включая тех же помещиков.
У меня получился гибрид: первые 8 символов — в префиксном дереве, остальные 2 — в битовых массивах в листьях.
Над преобразованием Tmp -> Node придётся подумать самостоятельно.
3_106_435 * sizeof(Node) == 49_702_960 байт
Если кто-либо сможет объяснить, что текст из цитаты неприменим к картинкам, я этого человека выслушаю.
А мне нравится идея, что год должен начинаться в ночь Зимнего "Солнцележания':
https://encode.su/threads/3524-New-(9)501st-year
На самом деле, «ИПСО-стандартов» (Интернешнл ПДФ Селлинг Организейшн).
Переиспользуемые потоки + массив volatile _Bool'ов для синхронизации = латенси в районе 100 наносекунд на подхват задания потоком. Каждый _Bool действует как переключатель с ровно двумя положениями: «0» — «child читает, main пишет», «1» — «main читает, child пишет». Когда поток, имеющий право на запись меняет значение «переключателя», то он одномоментно (и вполне атомарно) лишает себя права на запись и передаёт это право «напарнику».
Конкуренция на рынке, конечно же, способствует снижению необоснованно завышенных цен, но никакой конкуренции среди производителей чипов нет: они не сражаются за рынок, они его делят.
Победа «дешёвой» конденсаторной (Dynamic) над «дорогой» транзисторной (Static) RAM случилась примерно так: давно-давно, лет 40 назад, когда частоты CPU измерялись единицами Мегагерц, некий оптимизатор (без кавычек) решил, что тратить на 1 бит RAM лишь 1 транзистор и 1 конденсатор гораздо выгоднее, чем 6 транзисторов; необходимость перезаряжать конденсатор не могла по тем временам как-то значимо отразиться на скорости доступа к RAM или на энергопотреблении. Со временем, частота CPU возросла в 1000 раз, цена на один транзистор упала в 1000 раз, RAM стоит так мало, что каждый потребитель может купить её в большем количестве, чем ему нужно; вроде бы, пора перестать экономить транзисторы и избавиться от конденсаторов, но нет: вместо этого строится многоэтажная иерархия кэшей с суперзамороченным контролем когерентности. Анонсированный перенос многослойной DRAM под одну крышку с CPU всех проблем конденсаторной памяти не решит.