На этой неделе у меня на работе начали гореть сроки по сдаче огромного проекта, потому меня из программистов временно переключили на него в качестве тестировщика и немного админа.
Естественно, раньше я тестировал свои программы, что-то покрывал юнит-тестами. Но финального тестирования с развертыванием на прод у меня еще не было. Я познал всю скорбь этих профессий. Какое же оказывается счастье просто кодить или работать с данными!
Используй несколько древних утилиток, потом долго и нудно сверяй циферки, потроши документацию десятилетней давности на старую систему в поисках ''а как оно было настроено?'', готовь бесконечные конфиги, разворачивай на прод.
В общем, опыт получился полезный, но болезненный.
Естественно, раньше я тестировал свои программы, что-то покрывал юнит-тестами. Но финального тестирования с развертыванием на прод у меня еще не было. Я познал всю скорбь этих профессий. Какое же оказывается счастье просто кодить или работать с данными!
Используй несколько древних утилиток, потом долго и нудно сверяй циферки, потроши документацию десятилетней давности на старую систему в поисках ''а как оно было настроено?'', готовь бесконечные конфиги, разворачивай на прод.
В общем, опыт получился полезный, но болезненный.
Эшу быдлокодит
На этой неделе у меня на работе начали гореть сроки по сдаче огромного проекта, потому меня из программистов временно переключили на него в качестве тестировщика и немного админа. Естественно, раньше я тестировал свои программы, что-то покрывал юнит-тестами.…
Да, отдельное веселье в том, что старый прод у заказчиков сгорел физически, бекапов почему-то не было. Взять и поставить ПО десятилетней давности не сложилось, потому сроки сдачи подгорели вдвойне: сдаваемый проект - замена полетевшему серверу.
Только пару дней назад наткнулся на офигительное предложение от JetBrains (компания - создатель очень классных сред разработки): студенты и преподы могут пользоваться их продуктами бесплатно. Лицензия длится год, после чего её можно продлить.
В общем, теперь я счастливый обладатель единственных на рынке вменяемых сред разработки под Go и postgre sql (vs code и прочиекостыльные кастомные решения не предлагать).
Такая лицензия стоит около 16 тыс. рублей в год. Вроде бы не много, но меня жаба давит. Кстати, это примерно равно моей годовой преподавательской зарплате, так что мне прям удвоили её по сути.
Разумеется, никакого альтруизма в этой акции нету: студентов через преподов банально подсаживают на свои продукты. Очень многие предпочтут заплатить раз в год, вместо того, чтобы привыкать к чему-то новому, притом зачастую уступающему по функционалу.
В общем, теперь я счастливый обладатель единственных на рынке вменяемых сред разработки под Go и postgre sql (vs code и прочие
Такая лицензия стоит около 16 тыс. рублей в год. Вроде бы не много, но меня жаба давит. Кстати, это примерно равно моей годовой преподавательской зарплате, так что мне прям удвоили её по сути.
Разумеется, никакого альтруизма в этой акции нету: студентов через преподов банально подсаживают на свои продукты. Очень многие предпочтут заплатить раз в год, вместо того, чтобы привыкать к чему-то новому, притом зачастую уступающему по функционалу.
Кто читает мануалы? (или тяжело быть идиотом)
Запускаю телеграм бота (скоро скину ссылку), написанного на c# на серверном линуксе. Ранее я так запускал похожую штуку на питоне. Там было все просто: указал путь к интерпретатору питона, оно заработало.
С c# (.Net Core) все оказалось чуть сложнее. Для начала я так и не смог найти в Visual Studio настройки "скомпилировать под линукс". Есть обходной путь: компиляция через командную строку. Сделал.
Залил архивчик на сервер, пытаюсь запустить - нифига. После убитых трех часов на поиск решения я нагуглил: надо было просто дать разрешение на запуск моему боту. Т.е. просто сказать: "юзер такой-то имеет право на запуск этого файла". А если бы я догадался почитать что-то по линуксу (у меня серверная Ubuntu 18.04) проблемы бы не было.
Запускаю телеграм бота (скоро скину ссылку), написанного на c# на серверном линуксе. Ранее я так запускал похожую штуку на питоне. Там было все просто: указал путь к интерпретатору питона, оно заработало.
С c# (.Net Core) все оказалось чуть сложнее. Для начала я так и не смог найти в Visual Studio настройки "скомпилировать под линукс". Есть обходной путь: компиляция через командную строку. Сделал.
Залил архивчик на сервер, пытаюсь запустить - нифига. После убитых трех часов на поиск решения я нагуглил: надо было просто дать разрешение на запуск моему боту. Т.е. просто сказать: "юзер такой-то имеет право на запуск этого файла". А если бы я догадался почитать что-то по линуксу (у меня серверная Ubuntu 18.04) проблемы бы не было.
Forwarded from Архив КС/РФ(Сиона-Футуриста) (Красный)
В программировании есть такое, нынче не модное понятие - паттерны проектирования. Это - стандартные подходы к решению типовых задач.
Для написания хорошо работающего кода эти знания в принципе не нужны, но и чисто понтами их назвать нельзя. Ближайшая аналогия из не-IT мира - единообразие в оформлении технической и конструкторской документации. Можно конечно изобрести свою структуру документа, написать все каким-нибудь дизайнерским шрифтом, но скорее всего, читатели такого не оценят.
Названия паттернов, особенно в переводе на русский, поражают воображение новичков и взрывают мозг своей оторванностью от реального мира: абстрактная фабрика, легковес, одиночка, хранитель и тд.
Простейший пример паттерна - фасад. Предположим, есть у нас база данных ФСИН, хранящая массу занимательной информации и нам нужно сделать сервис для проверки наличия непогашенных судимостей.
Можно предоставить пользователям доступ к ней напрямую, ограничив его права, но всегда есть риск, что пользователь попадется слишком умный или наоборот - на выходе получим либо несанкционированный доступ к данным, либо обрушенную систему. Поэтому мы выставляем ''фасад'' - форму на сайте для ввода личных данных и поле для результата: да или нет.
Чтобы выбрать такое очевидное решение, знать о паттернах конечно же не нужно, но случаи бывают разные. Например, при обсуждении каких-то решений сильно упрощается жизнь.
Можно косноязычно распинаться 15 минут, описывая своё гениальное предложение перед коллегами, а можно предложить: "давайте используем такой-то паттерн?" Отдельным бонусом идет облегчение взаимодействия в интернациональной команде: уровень языка у всех разный, кому-то тяжело долго говорить, кому-то - воспринимать информацию на слух. Но ''use abstract factory'' поймут все квалифицированные программисты вне зависимости от знания английского.
К сожалению, давать паттерны в вузах, да и просто изучать в теории практически бесполезно. Я ещё не видел ни одного доходчивого описания сложных паттернов. Намного лучше, когда по твоему коду тебе говорят: о, да ты тут почти реализовал такой-то паттерн, такое запоминается намертво.
Eshu Marabo
Для написания хорошо работающего кода эти знания в принципе не нужны, но и чисто понтами их назвать нельзя. Ближайшая аналогия из не-IT мира - единообразие в оформлении технической и конструкторской документации. Можно конечно изобрести свою структуру документа, написать все каким-нибудь дизайнерским шрифтом, но скорее всего, читатели такого не оценят.
Названия паттернов, особенно в переводе на русский, поражают воображение новичков и взрывают мозг своей оторванностью от реального мира: абстрактная фабрика, легковес, одиночка, хранитель и тд.
Простейший пример паттерна - фасад. Предположим, есть у нас база данных ФСИН, хранящая массу занимательной информации и нам нужно сделать сервис для проверки наличия непогашенных судимостей.
Можно предоставить пользователям доступ к ней напрямую, ограничив его права, но всегда есть риск, что пользователь попадется слишком умный или наоборот - на выходе получим либо несанкционированный доступ к данным, либо обрушенную систему. Поэтому мы выставляем ''фасад'' - форму на сайте для ввода личных данных и поле для результата: да или нет.
Чтобы выбрать такое очевидное решение, знать о паттернах конечно же не нужно, но случаи бывают разные. Например, при обсуждении каких-то решений сильно упрощается жизнь.
Можно косноязычно распинаться 15 минут, описывая своё гениальное предложение перед коллегами, а можно предложить: "давайте используем такой-то паттерн?" Отдельным бонусом идет облегчение взаимодействия в интернациональной команде: уровень языка у всех разный, кому-то тяжело долго говорить, кому-то - воспринимать информацию на слух. Но ''use abstract factory'' поймут все квалифицированные программисты вне зависимости от знания английского.
К сожалению, давать паттерны в вузах, да и просто изучать в теории практически бесполезно. Я ещё не видел ни одного доходчивого описания сложных паттернов. Намного лучше, когда по твоему коду тебе говорят: о, да ты тут почти реализовал такой-то паттерн, такое запоминается намертво.
Eshu Marabo
Forwarded from Архив КС/РФ(Сиона-Футуриста) (Красный)
Известная особенность экономики РФ - большая доля госучастия - не обошла и IT рынок. Вы думаете обычный комп ничем не отличается от госкомпа? Как бы не так: существует специальное регулирующее ведомство, отвечающее за порядок обеспечения безопасности информации в государственных инфосистемах.
Оно называется ФСТЭК и по-сути является бюрократическим органом, занятым: созданием рекомендаций и стандартов, лицензированием и сертифицированием инфосистем и IT компаний.
Как это водится для наших регулирующих ведомств, оно отстает от своей индустрии лет на 10. Его сотрудники практически ничего не тестируют на защищённость. Есть перечень из 200+ потенциальных угроз безопасности. Если хотите работать с государством, будьте добры, опишите, как вы планируете с ними бороться и как будете доказывать принимающей стороне, что реально с чем-то боретесь. При необходимости - подтвердите, что имеете сертификат: ''тут пилят безопасный софтец!''
Требований для получения такого сертификата масса, в некоторых случаях доходит до необходимости наличия специально защищенного помещения для проведения совещаний по проекту. Проще посадить одного виртуального лицензированного инфосека и торговать лицензией, чем реально приводить компанию в соответствие им.
Подобный подход породил новое направление «IT-бизнеса» - "аренду" лицензии. Компания каким-то образом получает лицензию, после чего начинает продавать коллаборацию с собой: разрабатываете что-то для государства и нужна лицензия? Пожалуйста! Зачастую, заплатить им проще и дешевле получения сертификата.
Ещё одно направление подобного «бизнеса» - продажа переделанного и лицензированного опенсорсного ПО. Примеры: Alt Linux, Astra Linux, Postgres pro. Если "линуксы" - это банальное утешение для жертв ФСТЭКа, то в postgres pro (система управления базами данных) даже что-то переделали, улучшив функциональность.
Но есть от этого ведомства и польза: ФСТЭК формирует требования к защите информации, заставляя разработчиков на этапе проектирования ПО не допускать использование простых, но небезопасных решений - таким образом качество работы программистов несколько улучшаетсяя.
Разумеется, никакой ФСТЭК не спасёт от раздолбайства: пароль на бумажке, приклеенной к монитору, состоящий из символов 123qw, и отсутствие разграничения прав пользователей - главные и самые трудно решаемые дыры в инфобезопасности.
Eshu Marabo
Оно называется ФСТЭК и по-сути является бюрократическим органом, занятым: созданием рекомендаций и стандартов, лицензированием и сертифицированием инфосистем и IT компаний.
Как это водится для наших регулирующих ведомств, оно отстает от своей индустрии лет на 10. Его сотрудники практически ничего не тестируют на защищённость. Есть перечень из 200+ потенциальных угроз безопасности. Если хотите работать с государством, будьте добры, опишите, как вы планируете с ними бороться и как будете доказывать принимающей стороне, что реально с чем-то боретесь. При необходимости - подтвердите, что имеете сертификат: ''тут пилят безопасный софтец!''
Требований для получения такого сертификата масса, в некоторых случаях доходит до необходимости наличия специально защищенного помещения для проведения совещаний по проекту. Проще посадить одного виртуального лицензированного инфосека и торговать лицензией, чем реально приводить компанию в соответствие им.
Подобный подход породил новое направление «IT-бизнеса» - "аренду" лицензии. Компания каким-то образом получает лицензию, после чего начинает продавать коллаборацию с собой: разрабатываете что-то для государства и нужна лицензия? Пожалуйста! Зачастую, заплатить им проще и дешевле получения сертификата.
Ещё одно направление подобного «бизнеса» - продажа переделанного и лицензированного опенсорсного ПО. Примеры: Alt Linux, Astra Linux, Postgres pro. Если "линуксы" - это банальное утешение для жертв ФСТЭКа, то в postgres pro (система управления базами данных) даже что-то переделали, улучшив функциональность.
Но есть от этого ведомства и польза: ФСТЭК формирует требования к защите информации, заставляя разработчиков на этапе проектирования ПО не допускать использование простых, но небезопасных решений - таким образом качество работы программистов несколько улучшаетсяя.
Разумеется, никакой ФСТЭК не спасёт от раздолбайства: пароль на бумажке, приклеенной к монитору, состоящий из символов 123qw, и отсутствие разграничения прав пользователей - главные и самые трудно решаемые дыры в инфобезопасности.
Eshu Marabo
Некоторое время назад мне в руки попала слитая база данных пользователей телеграма: соответствие id пользователя и его телефонного номера, указанного при регистрации.
База изначально - csv файл с разделителем |. Большая часть - иранские номера. Подробнее про БД можно почитать тут:
https://t.iss.one/ssleg/86
С неделю назад я начал делать бота на c#, который будет отвечать пользователям, слит их номер или нет. Также хочу добавить функцию ''слит ли номер друга''. Пока что упёрся в два узких места:
1. Bot Api телеграма имеет ограничение: не более 30 сообщений в секунду вообще, не более 1 сообщения в секунду одному человеку.
2. Бот не умеет в поиск профиля человека по нику или id, потому либо на часть запросов буду отвечать ''настройки приватности человека не позволяют получить информацию'', либо сделаю отдельным сервисом клиент, который умеет искать.
P.S. Никаких персональных данных я разглашать не буду, ответ будет в формате ''номер человека: +7903*****67'' или вроде того.
База изначально - csv файл с разделителем |. Большая часть - иранские номера. Подробнее про БД можно почитать тут:
https://t.iss.one/ssleg/86
С неделю назад я начал делать бота на c#, который будет отвечать пользователям, слит их номер или нет. Также хочу добавить функцию ''слит ли номер друга''. Пока что упёрся в два узких места:
1. Bot Api телеграма имеет ограничение: не более 30 сообщений в секунду вообще, не более 1 сообщения в секунду одному человеку.
2. Бот не умеет в поиск профиля человека по нику или id, потому либо на часть запросов буду отвечать ''настройки приватности человека не позволяют получить информацию'', либо сделаю отдельным сервисом клиент, который умеет искать.
P.S. Никаких персональных данных я разглашать не буду, ответ будет в формате ''номер человека: +7903*****67'' или вроде того.
Telegram
СЛЕГ!
По "утечке 40 млн" могу сказать следующее:
На малой выборке моих приятелей, 7 из 13 человек в этой базе есть. Исходный формат этой базы - кронос. Это специальная БД, разработанная в ГИВЦ ФСБ РФ (сейчас называется по другому).
Ещё одно подтверждение, что…
На малой выборке моих приятелей, 7 из 13 человек в этой базе есть. Исходный формат этой базы - кронос. Это специальная БД, разработанная в ГИВЦ ФСБ РФ (сейчас называется по другому).
Ещё одно подтверждение, что…
Пользоваться ботом я хочу предоставить всем желающим. Изначально я планировал 3-5 запросов бесплатно, остальное - за небольшой донат (50-100р). Для сбора платежей даже сделал специального бота, но все уперлось в анонимность: сборы идут как на юр лицо или самозанятого, через Яндекс кассу, чек автоматом уходит в налоговую, надо ли оно мне? Потыкать в бота-сборщика платежей можно тут: @payment_zion_test_bot
Внимание! Бот привязан к тестовым реквизитам, предоставленным телегой, даже если возникнет желание кинуть ему копеечку - не делайте этого! Телеграм предоставляет тестовых ботов, которые генерят платежную информацию для тестов, в них можно попасть через @botfather
Вообще, инструментарий для сбора платежей в телеграме шедеврален: для программиста все безумно просто. Для пользователя все чуть хуже: на мобильном клиенте все прекрасно, десктопный платежи не поддерживает, что с веб-версией я не интересовался, если кто сидит через браузер, напишите, открывается ли платёж при нажатии на кнопку.
Пока работают два сервиса: Яндекс.Касса и Stripe, оба требуют юр. лицо или самозанятость. Ещё есть сбербанк, но на момент тестирования его бот, какая неожиданность, лежал.
Внимание! Бот привязан к тестовым реквизитам, предоставленным телегой, даже если возникнет желание кинуть ему копеечку - не делайте этого! Телеграм предоставляет тестовых ботов, которые генерят платежную информацию для тестов, в них можно попасть через @botfather
Вообще, инструментарий для сбора платежей в телеграме шедеврален: для программиста все безумно просто. Для пользователя все чуть хуже: на мобильном клиенте все прекрасно, десктопный платежи не поддерживает, что с веб-версией я не интересовался, если кто сидит через браузер, напишите, открывается ли платёж при нажатии на кнопку.
Пока работают два сервиса: Яндекс.Касса и Stripe, оба требуют юр. лицо или самозанятость. Ещё есть сбербанк, но на момент тестирования его бот, какая неожиданность, лежал.
Эшу быдлокодит
Пользоваться ботом я хочу предоставить всем желающим. Изначально я планировал 3-5 запросов бесплатно, остальное - за небольшой донат (50-100р). Для сбора платежей даже сделал специального бота, но все уперлось в анонимность: сборы идут как на юр лицо или самозанятого…
о, апдейт от подписчика: в web версии payments не работают.
Не прошло и года использования Visual Studio 2019, как я обнаружил в ней инструменты для просмотра текущих состояний переменных не через дебаг.
Отдельно меня добило то, что значения переменных можно править прямо на ходу, как будто это Spyder для питона.
Отдельно меня добило то, что значения переменных можно править прямо на ходу, как будто это Spyder для питона.
Forwarded from FEDOR BORSHEV
Запретить float
Что только не хранят программисты во float — деньги, количество и вес, сотни всего. Особенно умиляют координаты — неужели они их реально складывать и вычитать собираются?
Если кто не знает, float — это числа с плавающей точкой, которые не гарантируют точности. Верно, вам никто не обещает, что 0.1 + 0.2 будет равно 0.3. Если говорить грубо, причина в том, что в компьютере нет нецелых чисел — там вообще только нули и единицы.
Если вам надо хранить десятичные дроби, используйте специальные типы данных, которые для этого разрабатывались: Decimal, или что там у вас в языке. Подробнее почитайте на https://0.30000000000000004.com.
Что только не хранят программисты во float — деньги, количество и вес, сотни всего. Особенно умиляют координаты — неужели они их реально складывать и вычитать собираются?
Если кто не знает, float — это числа с плавающей точкой, которые не гарантируют точности. Верно, вам никто не обещает, что 0.1 + 0.2 будет равно 0.3. Если говорить грубо, причина в том, что в компьютере нет нецелых чисел — там вообще только нули и единицы.
Если вам надо хранить десятичные дроби, используйте специальные типы данных, которые для этого разрабатывались: Decimal, или что там у вас в языке. Подробнее почитайте на https://0.30000000000000004.com.
FEDOR BORSHEV
Запретить float Что только не хранят программисты во float — деньги, количество и вес, сотни всего. Особенно умиляют координаты — неужели они их реально складывать и вычитать собираются? Если кто не знает, float — это числа с плавающей точкой, которые не…
Таки да, года полтора назад, по неопытности, из-за float было много боли. Как правило, float начинает выдавать ерунду в 8-9 знаке и в целой части, и после запятой.
Я делал какие-то преобразования со временем в формате ticks (интервал длиной в сотню наносекунд). И долго не мог понять, почему у меня на промежутке времени в 30 лет вылезает неопознанная погрешность в 20-30 секунд.
В итоге, я просто перешел на double и проблема рассосалась. Но с тех пор возникло правило: начались странности с численными значениями? А проверь-ка, не используются ли где float?
Я делал какие-то преобразования со временем в формате ticks (интервал длиной в сотню наносекунд). И долго не мог понять, почему у меня на промежутке времени в 30 лет вылезает неопознанная погрешность в 20-30 секунд.
В итоге, я просто перешел на double и проблема рассосалась. Но с тех пор возникло правило: начались странности с численными значениями? А проверь-ка, не используются ли где float?
Forwarded from Архив КС/РФ(Сиона-Футуриста) (Красный)
Меня часто спрашивают: с чего начинать изучение программирования? Я всегда предлагаю ответить на вопрос: а зачем оно вам и насколько глубоко вы готовы погружаться в мир IT?
Впрочем, в большинстве случаев, совет один: начните с изучения основ Python. Да, он медленный, да, он довольно укуренный (не зря его голландец создал!). Но он даёт главное - быстрый результат. А также поддерживает интерес к кодингу.
Буквально за вечер можно слепить простенькую, но полезную программу из результатов запросов в гугле вида "питон как сделать то-то". Огромное сообщество пользователей даёт гарантию, что ответ найдётся на любой вопрос. С его помощью удобно автоматизировать рутину: надо делать что-то нудное и трудозатратное, но при этом однообразное? Спросите гугл, нет ли готового решения в Питоне для вашей проблемы.
А уже после первичного знакомства с программированием, получив уверенность в своих силах, можно искать другие варианты. Хотите стать веб программистом учите js+html+css, тестировщиком - Java или Python.
Если же хочется более глубоких знаний, тогда ваш выбор C# или Java на серьезном уровне, а для совсем упоротых - С++.
Eshu Marabo
Впрочем, в большинстве случаев, совет один: начните с изучения основ Python. Да, он медленный, да, он довольно укуренный (не зря его голландец создал!). Но он даёт главное - быстрый результат. А также поддерживает интерес к кодингу.
Буквально за вечер можно слепить простенькую, но полезную программу из результатов запросов в гугле вида "питон как сделать то-то". Огромное сообщество пользователей даёт гарантию, что ответ найдётся на любой вопрос. С его помощью удобно автоматизировать рутину: надо делать что-то нудное и трудозатратное, но при этом однообразное? Спросите гугл, нет ли готового решения в Питоне для вашей проблемы.
А уже после первичного знакомства с программированием, получив уверенность в своих силах, можно искать другие варианты. Хотите стать веб программистом учите js+html+css, тестировщиком - Java или Python.
Если же хочется более глубоких знаний, тогда ваш выбор C# или Java на серьезном уровне, а для совсем упоротых - С++.
Eshu Marabo
#телеграм
Некоторое время назад бот, используемый нами в Сионе для обратной связи с читателями весело отрекламировал, как будто от нашего имени, ставки на спорт. Я и так ковыряюсь в телеграмных ботах, по такому случаю сделал бота для обратной связи. Ботов я пишу на c#, точнее - .net core.
Что из себя представляет подобный бот? Ему пишут читатели, он пересылает все сообщения, которые отправляются ему, в группу, где сидят авторы канала. Если кто-то отвечает на пересланное ботом сообщение, текст ответа передается читателю. Все достаточно просто, но есть несколько узких мест. Например, API телеграм ботов может переваривать не более 30 сообщений от бота в секунду, притом 1 сообщение в секунду одному человеку и не более 20 сообщений в минуту от бота в групповые чаты.
Для выполнения этих требований родился отправитель сообщений, который каждую секунду проверяет очередь на отправку и делает рассылку в соответствии с вышеназванными правилами. Отправитель я сделал еще до эпопеи с ботом-фидбэком, потому делал на совесть, накрывая его автотестами.
Некоторое время назад бот, используемый нами в Сионе для обратной связи с читателями весело отрекламировал, как будто от нашего имени, ставки на спорт. Я и так ковыряюсь в телеграмных ботах, по такому случаю сделал бота для обратной связи. Ботов я пишу на c#, точнее - .net core.
Что из себя представляет подобный бот? Ему пишут читатели, он пересылает все сообщения, которые отправляются ему, в группу, где сидят авторы канала. Если кто-то отвечает на пересланное ботом сообщение, текст ответа передается читателю. Все достаточно просто, но есть несколько узких мест. Например, API телеграм ботов может переваривать не более 30 сообщений от бота в секунду, притом 1 сообщение в секунду одному человеку и не более 20 сообщений в минуту от бота в групповые чаты.
Для выполнения этих требований родился отправитель сообщений, который каждую секунду проверяет очередь на отправку и делает рассылку в соответствии с вышеназванными правилами. Отправитель я сделал еще до эпопеи с ботом-фидбэком, потому делал на совесть, накрывая его автотестами.
Telegram
Эшу быдлокодит
Пользоваться ботом я хочу предоставить всем желающим. Изначально я планировал 3-5 запросов бесплатно, остальное - за небольшой донат (50-100р). Для сбора платежей даже сделал специального бота, но все уперлось в анонимность: сборы идут как на юр лицо или…
#телеграм
Одно из узких мест при ботописании – отправка сообщений, которая может занимать длительное время. Предположим, пришлось отправлять 10 сообщений одному человеку подряд. Интенсивность отправки – на грани лимита, уходить на сервера телеграма сообщения будут с разной скоростью, и может так сложиться, что случается уход нескольких сообщений одновременно => превышение лимита API, => санкции. Напомню, это делалось для бота-проверки слитости ТГ акков, где планируется работа на предельной нагрузке в течении долгого времени.
Накрывая тестами отправитель, я закладывал, что в случае отправки потока медленных сообщений (с фотками например), скорость должна проседать, т.к. в одну секунду каждому подписчику должно уходить не более одного сообщения в секунду.
Вот условие задачи: есть буфер, из которого раз в секунду происходит попытка отправления 30 сообщений. Если сообщение еще не отправлено, он его не трогает, если уже отправлено - заменяет на новое и отсылает. Если поставить в тесте равномерное распределение времени ухода сообщения от 0 до 2 секунд, сколько должна быть средняя скорость отправки относительно ситуации, когда сообщения уходят мгновенно?
Я неверно оценил с ходу целевое значение скорости отправки, в результате, тесты никак не хотели сходиться. Прошло 20 часов поиска, дебага и рассмотрения каждой точки кода, чтобы понять, что надо было лучше учить статистику в универе: все работало корректно, а моя оценка снижения скорости была неверной.
Одно из узких мест при ботописании – отправка сообщений, которая может занимать длительное время. Предположим, пришлось отправлять 10 сообщений одному человеку подряд. Интенсивность отправки – на грани лимита, уходить на сервера телеграма сообщения будут с разной скоростью, и может так сложиться, что случается уход нескольких сообщений одновременно => превышение лимита API, => санкции. Напомню, это делалось для бота-проверки слитости ТГ акков, где планируется работа на предельной нагрузке в течении долгого времени.
Накрывая тестами отправитель, я закладывал, что в случае отправки потока медленных сообщений (с фотками например), скорость должна проседать, т.к. в одну секунду каждому подписчику должно уходить не более одного сообщения в секунду.
Вот условие задачи: есть буфер, из которого раз в секунду происходит попытка отправления 30 сообщений. Если сообщение еще не отправлено, он его не трогает, если уже отправлено - заменяет на новое и отсылает. Если поставить в тесте равномерное распределение времени ухода сообщения от 0 до 2 секунд, сколько должна быть средняя скорость отправки относительно ситуации, когда сообщения уходят мгновенно?
Я неверно оценил с ходу целевое значение скорости отправки, в результате, тесты никак не хотели сходиться. Прошло 20 часов поиска, дебага и рассмотрения каждой точки кода, чтобы понять, что надо было лучше учить статистику в универе: все работало корректно, а моя оценка снижения скорости была неверной.
Forwarded from Архив КС/РФ(Сиона-Футуриста) (Красный)
Интернет вещей: истинная опасность технологии 5G
Одной из технологий, с которыми часто связывают будущее, является интернет вещей - его развитие возможно, в том числе, благодаря скоростному 5G-интернету.
По-простому это будет выглядеть так: ваши чайник, холодильник, счетчики электричества, газа и воды, хорошо если не лампочки, имеют выход в интернет и активно передают и принимают данные, общаются с серверами и между собой.
Все это живет своей жизнью, работает максимально эффективно, подстраивается под ваш ритм жизни, управляется движением брови, сообщает о скором выходе из строя. А также сливает прямую и косвенную информацию о вас корпорациям добра.
Но это – только вершина айсберга, на которую наткнется большинство людей. Массовое внедрение этих технологий в быт – самый быстрый способ окупить затраты на разработку. Если внедрение пойдет успешно и принесет прибыль в обозримой перспективе, то за счет эффекта масштаба резко упадут цены на подключение к сети вообще всего: кухонные приборов, лампочек, даже отдельных деталей автомобиля.
На этом этапе стоит ждать открытие новых перспектив в науке и технике: возможность быстрой беспроводной координации работы различных узлов и агрегатов может породить что-то интересное.
Еще одно интересное следствие – децентрализация вычислений. Сейчас в большинстве случаев трудоемкие операции (майнинг криптовалюты, обучение нейросетей, перебор паролей) выполняют на серверах. В наступившем интернете вещей корпорации, обслуживающие сети, получат возможность делегировать часть работы своих серверов пользовательским устройствам. Процессор в условной кофеварке слабенький, но, если взять миллион кофеварочных процессоров – совокупная мощность получится весьма достойной.
Грядущий интернет вещей ставит несколько проблем для общества: безопасность конечных устройств, полную потерю приватности, ну и тотальную автоматизацию с оптимизацией.
Про приватность можно и не говорить: Google/Apple уже знают о нас многое, ну а с развитым интернетом вещей осведомленность "большого брата" будет практчиески тотальной.
Что касается автоматизации - если водосчетчик сам сумеет сообщить, когда начинает барахлить и неправильно считать, огромная индустрия с проверяющими, сертификатами и прочей мутью отправится мести улицы за ненужностью. И так вымрут очень многие профессии.
Ну и главное - хакеры станут практически вездесущими. Везде, где будет доступ через интернет, будет возможность и несанкционированного подключения. Если в случае с бытовой техникой массового потребления на безопасность можно относительно безболезненно забить - вряд ли кто-то захочет взламывать стиральную машинку - то в медицинской и производственной технике это уже чревато.
Eshu Marabo
Одной из технологий, с которыми часто связывают будущее, является интернет вещей - его развитие возможно, в том числе, благодаря скоростному 5G-интернету.
По-простому это будет выглядеть так: ваши чайник, холодильник, счетчики электричества, газа и воды, хорошо если не лампочки, имеют выход в интернет и активно передают и принимают данные, общаются с серверами и между собой.
Все это живет своей жизнью, работает максимально эффективно, подстраивается под ваш ритм жизни, управляется движением брови, сообщает о скором выходе из строя. А также сливает прямую и косвенную информацию о вас корпорациям добра.
Но это – только вершина айсберга, на которую наткнется большинство людей. Массовое внедрение этих технологий в быт – самый быстрый способ окупить затраты на разработку. Если внедрение пойдет успешно и принесет прибыль в обозримой перспективе, то за счет эффекта масштаба резко упадут цены на подключение к сети вообще всего: кухонные приборов, лампочек, даже отдельных деталей автомобиля.
На этом этапе стоит ждать открытие новых перспектив в науке и технике: возможность быстрой беспроводной координации работы различных узлов и агрегатов может породить что-то интересное.
Еще одно интересное следствие – децентрализация вычислений. Сейчас в большинстве случаев трудоемкие операции (майнинг криптовалюты, обучение нейросетей, перебор паролей) выполняют на серверах. В наступившем интернете вещей корпорации, обслуживающие сети, получат возможность делегировать часть работы своих серверов пользовательским устройствам. Процессор в условной кофеварке слабенький, но, если взять миллион кофеварочных процессоров – совокупная мощность получится весьма достойной.
Грядущий интернет вещей ставит несколько проблем для общества: безопасность конечных устройств, полную потерю приватности, ну и тотальную автоматизацию с оптимизацией.
Про приватность можно и не говорить: Google/Apple уже знают о нас многое, ну а с развитым интернетом вещей осведомленность "большого брата" будет практчиески тотальной.
Что касается автоматизации - если водосчетчик сам сумеет сообщить, когда начинает барахлить и неправильно считать, огромная индустрия с проверяющими, сертификатами и прочей мутью отправится мести улицы за ненужностью. И так вымрут очень многие профессии.
Ну и главное - хакеры станут практически вездесущими. Везде, где будет доступ через интернет, будет возможность и несанкционированного подключения. Если в случае с бытовой техникой массового потребления на безопасность можно относительно безболезненно забить - вряд ли кто-то захочет взламывать стиральную машинку - то в медицинской и производственной технике это уже чревато.
Eshu Marabo
Потыкав палочкой в PostgreSQL, поиграшись в создание таблиц и баз, я уперся в то, что ответы на мои вопросы вида "как сделать все по феншую" перестали гуглиться, потому засел за документацию. Огромный респект компании Postgrespro за качественный перевод официальной документации размером в... 2656 страниц. И все они написаны на первый взгляд нормальным языком, да еще пронизаны плотной сетью гиперссылок, что делает процесс изучения крайне удобным.
Текст задачки из прошлого поста: Ecть буфер, из которого раз в секунду происходит попытка отправления 30 сообщений. Если сообщение еще не отправлено, он его не трогает, если уже отправлено - заменяет на новое и отсылает. Если поставить в тесте равномерное распределение времени ухода сообщения от 0 до 2 секунд, сколько должна быть средняя скорость отправки относительно ситуации, когда сообщения уходят мгновенно?
Напрашивается ответ: она должна составить 15 в секунду, т.е. 0.5 от максимума, что на практике оказалось неверно.
Рассмотрим работу отправителя сообщений по шагам:
1. Положили в буфер 30 сообщений, выдали команду "отправить"
2. Через секунду ушла половина сообщений - 15 штук, 15 штук остались зависшими, т.е. 50%. На место ушедших поставили новые, нажали "отправить"
3. В третий такт ушли оставшиеся 15 сообщений со стартовой загрузки и половина от помещенных в буфер в прошлый такт, т.е. в сумме 75%. Помещаем на их места новые, жмем "отправить".
4. В четвертый такт уходит 25% (хвост со 2 такта) + (75%/2 c 3 такта), т.е. всего - 62.5%. Их места занимают новые, отправляются.
5. В пятый такт уходил 37.5% остатков с 3 такта + половина с прошлого такта, итого 68.75%.
Надо будет воскресить в памяти тервер и сделать аналитическое решение для автотестов, чтобы было прям по феншую, но пока я удостоверился, что мой отправитель сообщений работает корректно. Поставил экспериментально измеренное ограничение в 0.7 от скорости в идеальных условиях (т.е. 21 в случае, описанном в задаче) и продолжил разбираться в ботах.
#телеграм
Напрашивается ответ: она должна составить 15 в секунду, т.е. 0.5 от максимума, что на практике оказалось неверно.
Рассмотрим работу отправителя сообщений по шагам:
1. Положили в буфер 30 сообщений, выдали команду "отправить"
2. Через секунду ушла половина сообщений - 15 штук, 15 штук остались зависшими, т.е. 50%. На место ушедших поставили новые, нажали "отправить"
3. В третий такт ушли оставшиеся 15 сообщений со стартовой загрузки и половина от помещенных в буфер в прошлый такт, т.е. в сумме 75%. Помещаем на их места новые, жмем "отправить".
4. В четвертый такт уходит 25% (хвост со 2 такта) + (75%/2 c 3 такта), т.е. всего - 62.5%. Их места занимают новые, отправляются.
5. В пятый такт уходил 37.5% остатков с 3 такта + половина с прошлого такта, итого 68.75%.
Надо будет воскресить в памяти тервер и сделать аналитическое решение для автотестов, чтобы было прям по феншую, но пока я удостоверился, что мой отправитель сообщений работает корректно. Поставил экспериментально измеренное ограничение в 0.7 от скорости в идеальных условиях (т.е. 21 в случае, описанном в задаче) и продолжил разбираться в ботах.
#телеграм
Telegram
Эшу быдлокодит
#телеграм
Одно из узких мест при ботописании – отправка сообщений, которая может занимать длительное время. Предположим, пришлось отправлять 10 сообщений одному человеку подряд. Интенсивность отправки – на грани лимита, уходить на сервера телеграма сообщения…
Одно из узких мест при ботописании – отправка сообщений, которая может занимать длительное время. Предположим, пришлось отправлять 10 сообщений одному человеку подряд. Интенсивность отправки – на грани лимита, уходить на сервера телеграма сообщения…
Forwarded from СЛЕГ! <Z> ️
Государственная база полнее, свежее, но как всегда, пять разных наименований Москвы. 3 разных Питера, два Волгограда и так далее.
У нас в прессе строится цифровоеГУЛАГ государство, а в реале государевы базы данных выглядят так, что в них каждую ночь тролли ебались.
Когда там появятся программисты, дочитавшие учебник SQL до главы foreign key я не знаю.
У нас в прессе строится цифровое
Когда там появятся программисты, дочитавшие учебник SQL до главы foreign key я не знаю.