Интересно, а "Радио Свобода", которая получает прямое финансирование от правительства США[1], будет помечена как "подконтрольная властям СМИ"? В 2019 году они получили 124 миллиона долларов, в 2020 — 87 миллионов долларов.
У вас, видимо, медстрах для ЗП в 200 000 неправильно посчитан. Он должен быть 5.1% * 200 000 = 10 200. У медстраха же нет границы, с которой понижается процент, как у ПФР или соцстраха
Экран у 740 PocketBook-а очень нежный. У нас он треснул через месяц использования, причем никаких внешних повреждений не было: он не падал, на него на него ничего не роняли и не садились. Ридер просто лежал в умеренно набитой женской сумочке.
Если экран треснул — это всегда не гарантийный случай, даже если не было внешних дефектов. Замена экрана стоит 9000р.
В итоге ридером пользовались месяц, а теперь он второй год просто лежит в шкафу, потому что 16000р за хорошую читалку было не жалко, а вот 16000р + 9000р за ридер, который может еще раз непорочно треснуть, отдавать не хочется.
Четвертый kindle живет у нас с 2011 года, и никакие падения и тем более набитые сумки его еще не смогли сломать.
А почему нативно не написать retry, зачем нужно использовать сторонние библиотеки для базовой функциональности, которая пишется один раз на весь проект?
Если хочется настраивать retry перед каждым запросом:
const delay = ms => new Promise(resolve => setTimeout(resolve, ms))
const asyncRetry = async (asyncFn, { times, delayMs }) => {
const lastTime = times - 1
for (let i = 0, i < times, i++) {
try {
return await asyncFn()
} catch (err) {
if (i === lastTime) throw err
await delay(delayMs)
}
}
}
Если хочется настроить один раз в момент создания fetch-функций:
Индекс лёгкости ведения бизнеса основывается только на изучении и квантификации законов, постановлений и правил, касающихся ведения предпринимательской деятельности. Индекс не учитывает более общие условия, такие как инфраструктура, инфляция, преступность, доходность бизнеса и прочие.
И потом давно известен феномен — когда целенаправлено работают на позицию в рейтинге, чисто формально соответствуя критериям.
Это в равной степени относится к каждой стране в рейтинге.
А по данным всемирного банка, государство делает все, чтобы бизнес было вести легче. В 2009 году Россия занимала 118 место в мире по легкости ведения бизнеса, а в 2019 уже 31[1]. По этому показателю Россия обогнала Францию, Италию и Швейцарию.
Все комментаторы, которые пишут, что фильм художественный, а не документальный, вам художественный фильм «Движение вверх» тоже понравился? Лайки обзору BadComedian[1] не ставили?
Уже после двух серий появляется столько «почему», что дальше смотреть сложно:
— Почему в сериале все руководители, даже главврач больницы, показаны дегенератами, которые не врубаются в ситуацию?
— Почему вся молодёжь и простые работяги сразу понимают ужас трагедии?
— Почему женщина физик из Минска так быстро понимает причину аварии и неэффективность способа борьбы с последствиями?
— Почему Хомюк на собрании с Горбачёвым намного уверенней Легасова? Легасов во время своей речи мямлит и неуверенно листает отчёт, и на этой неуверенности оператор делает акцент. Хомюк говорит без запинок, никуда не смотрит, оператор показывает только ее лицо и воодушевленное лицо какой-то пожилой женщины на собрании.
— Почему все что-то делают или под дулом автомата, или за деньги?
— Почему эвакуация начинается только после фразы «сегодня в Германии детям запрещают гулять на улице» и последующего переезда камеры на советских школьников, которые бегут домой на фоне дымящейся АЭС?
— Почему зритель за точно восстановленным антуражем не замечает клюквы?
— Почему даже после слов режиссёра «We had a general standing philosophy from the beginning, which was: Accuracy is everything to us.»[2] люди продолжают прикрывать все дыры «художественностью» этого сериала?
— Почему люди думают, что Американцы, которые так радовались смерти коммунизма[3], будут показывать настоящий СССР?
Жаль, что Erlang довольно низкоуровневый в плане реализации ООП. Если в Smalltalk для обработки сообщения объектом достаточно создать метод с нужным селектором, то в Erlang принято сначала писать сервер, который умеет обрабатывать определенные сообщения, а потом клиент для этого сервера.
Но Erlang создавался для решения конкретных инженерных задач, и он справляется с этими задачами на ура. Очень приятный язык.
А лучше не медитировать, а пописать на Smalltalk в котором между написанием программы и ее рантаймом нет никакой разницы.
Вся любовь к типам и непонимание динамики (позднего связывания) происходят, потому что момент написания программы в текущих мейнстрим-языках статический. Перед запуском созданной системы нам сначала необходимо статически (в текстовом файле) описать ее и скомпилировать.
В современных "динамических" языках информация о "типах" доступна только в рантайме. Так как в этих языках динамичность осталась только в рантайме, но момент написания все еще статический (текстовые файлы), то создается mismatch.
Smalltalk — совсем другой фрукт. Он делает динамическим не только способ работы системы как таковой, но и принцип работы человека с системой. В Smalltalk нет файлов. Кент Бек по этому поводу сказал "I mean, source code in files; how quaint, how seventies!". Да, в Smalltalk исходный код — это текст, но он находится не в файлах.
Память точно не развивают. Проводилось исследование, в котором шахматистам разных уровней предлагали запомнить расположение фигур на доске. Если расположение фигур соответствовало какому-нибудь шахматному паттерну, профессионалы запоминали отлично, а новички — плохо. Если же расположение фигур было случайным, все уровни запоминали его одинаково плохо.
Тема развития определенных навыков и влияние этих навыков на все остальные аспекты жизни хорошо раскрыта в книге "Peak: Secrets from the New Science of Expertise". Автор книги является также автором исследования про 10000 часов, и в этой книге он объясняет, что популярная трактовка "10000 часов практики == профессионал" является неверной.
Как только число 3 превращают в объект, к нему гвоздями прибивают какой-то один смысл
…
оно ограничивает наши возможности по интерпретированию числа 3 каким-то иным образом
Вам ничего не мешает добавлять любой смысл к объекту. Если в вашей ментальной модели число может быть кодом символа, отобразите это в числе:
Это и отличает данные от объектов: у объекта есть «смысл»/интерпретация, пользуясь Вашей терминологией, а у данных этого нет.
…
Пока это число 3, это просто данные, и мы можем наделять их любым смыслом
То есть данные — это все-таки что-то, что не имеет никакого смысла? Если число «3» и строка «лето» являются данными, значит ли это, что они по-сути равны как друг другу, так и абстрактному «ничего»?
Конечно у числа есть собственный смысл, я это не отрицал. Я пытался донести идею о том, что числа — это не «данные», числа — это представление определенного смысла. А компактное представление смысла с возможностью исследовать и понимать смысл через использование доступных методов (операций, возможностей) — это объект.
Предлагаю отвлечься от программирования и подумать о том, как объяснить смысл чисел, например, дельфину.
Ребенку, который не знает чисел и основ математики, будет непонятно число 3. Для такого ребенка в числе 3 нет смысла. Он не сможет интерпретировать сообщение «3 + 2», потому что не знает смысл объектов «3» и «2» и доступных у них методов вроде "+" и "-".
Хоть вы и не ответили на мои вопросы из прошлого сообщения, я все рано задам еще. Вы действительно думаете, что числа — это что-то не имеющее смысла? А если смысл всё-таки есть, то разве методы (операции, возможности) вроде "+", "-", "*", "/" существуют не для пояснения смысла, заключенного в число?
число 3 это не объект, равно как и функция sum(a,b int) не является частью/методом какого-то объекта.
А что такое число 3? Это «данные»? А что такое «данные»? Как «данные» могут существовать без интерпретатора?
Если я напишу вам сообщение «На столе три яблока», или «На столе 3 яблока», или «На столе III яблока», скорее всего, во всех трех случая вы представите себе подобное:
У этих сообщений один смысл, и наши интерпретаторы позволяют понять смысл каждого из этих сообщений, потому что мы знаем русский язык, арабские и римские цифры.
Объект — упаковка для смысла. Методы объекта — способ понимания смысла.
"Код на Smalltalk"
tableWithThreeApples := me interpret: 'На столе три яблока'
apple := tableWithThreeApples takeOneApple.
apple isFruit. "true"
numberOfApples := tableWithThreeApple howManyApplesDoYouHave.
numberOfApples = 2. "true"
Но если интерпретаторы разные, то и объекты, а значит и смысл могут быть разными. Вполне возможен такой поворот событий:
tableWithThreeApples := appleFanboy interpret: 'На столе три яблока'
apple := tableWithThreeApples takeOneApple.
apple isFruit. "false"
apple isComputer. "true"
numberOfApples := tableWithThreeApple howManyApplesDoYouHave.
numberOfApples = 2. "true"
Возвращаясь к числу 3, невозможно понять его смысл, пока нет объекта, который этот смысл упаковывает, и методов, которые этот смысл поясняют.
Ваш первый пример ничем не отличается от объекта в ООП.
Микросервис, как и объект, инкапсулирует свое состояние и позволяет общаться с собой только при помощи посылки сообщений. Объект, как и микросервис, позволяет обрабатывать сообщение любым подходящим способом: хоть с помощью функционального подхода, хоть с помощью логического. И объект, и микросервис поддерживают динамический диспатч (полиморфизм):
В моём первом комментарии transform использовался вместо нового синтаксиса в list comprehension во всем проекте. То есть предполагалось переиспользование этой функции, а значит нужно либо вводить новую абстракцию, либо везде использовать последний вариант:
result = list(filter(filter_func, map(long_running_func, data)))
Я согласен, что абстракция не нужна, если проблема, которую решает эта абстракция, не сильно распространена в коде. Просто я исходил из предположения, что проблема сильно распространена.
Жаль, в python у коллекций нет методов map и filter, чтобы пример выше выглядел читабельнее:
result = data.map(long_running_func).filter(filter_func)
tmin10 shadek dagen и все остальные, если хотите сами поиграться с данными, то я их вытянул с сайта http://www.vybory.izbirkom.ru и сложил в репу: https://github.com/Telichkin/constitution_data
Файл
all_data.json
Интересно, а "Радио Свобода", которая получает прямое финансирование от правительства США[1], будет помечена как "подконтрольная властям СМИ"? В 2019 году они получили 124 миллиона долларов, в 2020 — 87 миллионов долларов.
[1] https://web.archive.org/web/20190320121320/https://www.svoboda.org/a/29830353.html
У вас, видимо, медстрах для ЗП в 200 000 неправильно посчитан. Он должен быть 5.1% * 200 000 = 10 200. У медстраха же нет границы, с которой понижается процент, как у ПФР или соцстраха
Экран у 740 PocketBook-а очень нежный. У нас он треснул через месяц использования, причем никаких внешних повреждений не было: он не падал, на него на него ничего не роняли и не садились. Ридер просто лежал в умеренно набитой женской сумочке.
Если экран треснул — это всегда не гарантийный случай, даже если не было внешних дефектов. Замена экрана стоит 9000р.
В итоге ридером пользовались месяц, а теперь он второй год просто лежит в шкафу, потому что 16000р за хорошую читалку было не жалко, а вот 16000р + 9000р за ридер, который может еще раз непорочно треснуть, отдавать не хочется.
Четвертый kindle живет у нас с 2011 года, и никакие падения и тем более набитые сумки его еще не смогли сломать.
А почему нативно не написать
retry
, зачем нужно использовать сторонние библиотеки для базовой функциональности, которая пишется один раз на весь проект?Если хочется настраивать
retry
перед каждым запросом:Если хочется настроить один раз в момент создания
fetch
-функций:Иногда кажется, что разработчики за модными библиотеками не замечают возможности языка.
По ссылке написано:
Это в равной степени относится к каждой стране в рейтинге.
А по данным всемирного банка, государство делает все, чтобы бизнес было вести легче. В 2009 году Россия занимала 118 место в мире по легкости ведения бизнеса, а в 2019 уже 31[1]. По этому показателю Россия обогнала Францию, Италию и Швейцарию.
[1] https://ru.m.wikipedia.org/wiki/Рейтинг_лёгкости_ведения_бизнеса
Уже после двух серий появляется столько «почему», что дальше смотреть сложно:
— Почему в сериале все руководители, даже главврач больницы, показаны дегенератами, которые не врубаются в ситуацию?
— Почему вся молодёжь и простые работяги сразу понимают ужас трагедии?
— Почему женщина физик из Минска так быстро понимает причину аварии и неэффективность способа борьбы с последствиями?
— Почему Хомюк на собрании с Горбачёвым намного уверенней Легасова? Легасов во время своей речи мямлит и неуверенно листает отчёт, и на этой неуверенности оператор делает акцент. Хомюк говорит без запинок, никуда не смотрит, оператор показывает только ее лицо и воодушевленное лицо какой-то пожилой женщины на собрании.
— Почему все что-то делают или под дулом автомата, или за деньги?
— Почему эвакуация начинается только после фразы «сегодня в Германии детям запрещают гулять на улице» и последующего переезда камеры на советских школьников, которые бегут домой на фоне дымящейся АЭС?
— Почему зритель за точно восстановленным антуражем не замечает клюквы?
— Почему даже после слов режиссёра «We had a general standing philosophy from the beginning, which was: Accuracy is everything to us.»[2] люди продолжают прикрывать все дыры «художественностью» этого сериала?
— Почему люди думают, что Американцы, которые так радовались смерти коммунизма[3], будут показывать настоящий СССР?
[1] www.youtube.com/watch?v=1nX0kF2UwDc&feature=share
[2] www.vice.com/en_us/article/j5wbq4/craig-mazin-interview-about-chernobyl-hbo-miniseries-on-how-accurate-and-what-really-happened
[3] youtu.be/c0QG_UvLkJo?t=19m
Жаль, что Erlang довольно низкоуровневый в плане реализации ООП. Если в Smalltalk для обработки сообщения объектом достаточно создать метод с нужным селектором, то в Erlang принято сначала писать сервер, который умеет обрабатывать определенные сообщения, а потом клиент для этого сервера.
Но Erlang создавался для решения конкретных инженерных задач, и он справляется с этими задачами на ура. Очень приятный язык.
А лучше не медитировать, а пописать на Smalltalk в котором между написанием программы и ее рантаймом нет никакой разницы.
Вся любовь к типам и непонимание динамики (позднего связывания) происходят, потому что момент написания программы в текущих мейнстрим-языках статический. Перед запуском созданной системы нам сначала необходимо статически (в текстовом файле) описать ее и скомпилировать.
В современных "динамических" языках информация о "типах" доступна только в рантайме. Так как в этих языках динамичность осталась только в рантайме, но момент написания все еще статический (текстовые файлы), то создается mismatch.
Smalltalk — совсем другой фрукт. Он делает динамическим не только способ работы системы как таковой, но и принцип работы человека с системой. В Smalltalk нет файлов. Кент Бек по этому поводу сказал "I mean, source code in files; how quaint, how seventies!". Да, в Smalltalk исходный код — это текст, но он находится не в файлах.
Память точно не развивают. Проводилось исследование, в котором шахматистам разных уровней предлагали запомнить расположение фигур на доске. Если расположение фигур соответствовало какому-нибудь шахматному паттерну, профессионалы запоминали отлично, а новички — плохо. Если же расположение фигур было случайным, все уровни запоминали его одинаково плохо.
Тема развития определенных навыков и влияние этих навыков на все остальные аспекты жизни хорошо раскрыта в книге "Peak: Secrets from the New Science of Expertise". Автор книги является также автором исследования про 10000 часов, и в этой книге он объясняет, что популярная трактовка "10000 часов практики == профессионал" является неверной.
Вам ничего не мешает добавлять любой смысл к объекту. Если в вашей ментальной модели число может быть кодом символа, отобразите это в числе:
То есть данные — это все-таки что-то, что не имеет никакого смысла? Если число «3» и строка «лето» являются данными, значит ли это, что они по-сути равны как друг другу, так и абстрактному «ничего»?
Как сделать так, чтобы можно было передать смысл одного и того же объекта без искажений?
Предлагаю отвлечься от программирования и подумать о том, как объяснить смысл чисел, например, дельфину.
Хоть вы и не ответили на мои вопросы из прошлого сообщения, я все рано задам еще. Вы действительно думаете, что числа — это что-то не имеющее смысла? А если смысл всё-таки есть, то разве методы (операции, возможности) вроде "+", "-", "*", "/" существуют не для пояснения смысла, заключенного в число?
А что такое число 3? Это «данные»? А что такое «данные»? Как «данные» могут существовать без интерпретатора?
Если я напишу вам сообщение «На столе три яблока», или «На столе 3 яблока», или «На столе III яблока», скорее всего, во всех трех случая вы представите себе подобное:
У этих сообщений один смысл, и наши интерпретаторы позволяют понять смысл каждого из этих сообщений, потому что мы знаем русский язык, арабские и римские цифры.
Объект — упаковка для смысла. Методы объекта — способ понимания смысла.
Но если интерпретаторы разные, то и объекты, а значит и смысл могут быть разными. Вполне возможен такой поворот событий:
Возвращаясь к числу 3, невозможно понять его смысл, пока нет объекта, который этот смысл упаковывает, и методов, которые этот смысл поясняют.
Микросервис, как и объект, инкапсулирует свое состояние и позволяет общаться с собой только при помощи посылки сообщений. Объект, как и микросервис, позволяет обрабатывать сообщение любым подходящим способом: хоть с помощью функционального подхода, хоть с помощью логического. И объект, и микросервис поддерживают динамический диспатч (полиморфизм):
Вот здесь хорошо описано различие: https://www.stefankrause.net/wp/?p=342
transform
использовался вместо нового синтаксиса в list comprehension во всем проекте. То есть предполагалось переиспользование этой функции, а значит нужно либо вводить новую абстракцию, либо везде использовать последний вариант:Я согласен, что абстракция не нужна, если проблема, которую решает эта абстракция, не сильно распространена в коде. Просто я исходил из предположения, что проблема сильно распространена.
Жаль, в python у коллекций нет методов map и filter, чтобы пример выше выглядел читабельнее: