Pull to refresh
43
0
Imposeren @Imposeren

User

Send message
Потому-что там еще есть внешний цикл, который в первой итерации поменяет freq[256] на 1+freq[c2]. Итого: из кода в статье «выкинули» важный кусок кода, и скорее всего анализатор всё-же прав

Upd: возможно я вас неправильно понял — я подумал что парвый цикл с поиском c1 вы совсем выкинули, но наверное подразумеваете, что он остаётся.
И всё-таки я был невнимателен: там еще есть внешний цикл for (;;), и поэтому freq[256] == 1 только первый раз, а второй раз это уже будет равно 1+freq[c2] из прошлого цикла. Но тогда и понятно от чего жалуется PVS: чисто формально, если добиться freq[c2] == 1000000000L, то на втором проходе внешнего бесконечного цикла уже возможна ситуация, когда нельзя будет попасть внутрь if, также подобная ситуация может возникнуть если в процессе работы цикла останутся только элементы равные 0, или больше 1000000000L. Так-что формально анализатор всё-таки прав. Плюс в примере в статье нужно добавить внешний бесконечный цикл и условия по которому он обрывается.

И считаю, что всё же стоит подумать: как сделать чтобы при первом проходе c1 определялось без цикла.
А вот это, как по мне, хорошее замечание. И тогда можно еще перед циклом назначать v = 1, вместо 1000000000L. Правда вот теперь я начинаю сомневаться и подозревать себя в невнимательности — уж очень странно получается…

Bobrovsky, что скажете: справедливы наши с paluke замечания?

P.S. а если предположить что элементы freq на самом деле не отрицательные, то c1 почти всегда будет 256. А если элементы вообще только положительные, то совсем всегда… И в итоге — просто всегда, т.к. нулевые значения игнорируются (if (freq[i] != 0 && freq[i] <= v)), т.е. первый цикл вообще бесполезен и можно сразу сделать c1=256. Так могут элементы freq быть отрицательными или нет? Если судить из «названия», то это частоты, и они отрицательными быть не должны.

P.P.S. Соответственно если значения не отрицательные, то и во втором цикле, при v == 1 можно делать break тем самым немного «оптимизировав код». Правда я больше питонист и не в курсе — может в C# break в каких-то странных случаях может ухудшать производительность, но думаю это маловероятно.
вроде бы из-за того, что freq[256] = 1, c1 как минимум будет равен 256, но конечно лучше реальные исходники посмотреть, непонятно что могли «упростить» в процессе обрезания кода для вставки в пост.
Еще и в дерево. И металл то, если с такой головкой перетянуть, плохо себя чувствовать будет (что легко сделать если нет зенковки), а дерево так вообще треснуть может… Так-что тут не только «режет глаза»…
Убрали ссылки на сайт и на видео. На сайт еще ладно, но на видео где он его рекламировал его, и с которого всё это началось, можно было и оставить
«Видим» мы всё-равно лишь изображение «упавших на сетчатку фотонов», и отсутствие упавших фотонов мы всё-равно видим как «изрбражение». При этом природа по которой из данной области не поступало фотонов абсолютно не важна. Поэтому говорить о «видно» можно абсолютно про что угодно, а в если учитывать особенности восприятия, инертность зрения, наличие хоть каких-то линз, то может быть «видно» и то, чего на самом деле вообще нет.
А в чем проблема? Например у некоторых райских птиц часть оперения поглощает 99.95% света. В приближении можно сказать, что они также «видны/не видны» как и это сфера. Тем не менее мы ведь можем говорить о том, что видим это оперение?

image
Основная идея в том, что лучше использовать готовый инструмент умеющий отображать и код с ошибками, и статистику. Лично я sonarqube так и не пользовался до сих пор, поэтому написал про то что знаю.
А почему не захотели конвертировать во что-то, что можно отображать прямо в Jenkins? Например Warnings Plugin + Analysis Collector Plugin. Там вроде легко парсинг из xml настраивается. И исходники подсветить можно:
wiki.jenkins.io/display/JENKINS/Static+Code+Analysis+Plug-ins#StaticCodeAnalysisPlug-ins-source

Плюс можно «глубже» в пайплайн встраивать, например health-check настраивать:

                    warnings([
                        canComputeNew: false,
                        canResolveRelativePaths: false,
                        defaultEncoding: '',
                        excludePattern: '',
                        healthy: '',
                        includePattern: '',
                        messagesPattern: '',
                        parserConfigurations: [
                            [
                                parserName: 'PyLint',
                                pattern: 'reports/flake8.report'
                            ],
                            [
                                parserName: 'JSLint',
                                pattern: 'reports/jshint.xml'
                            ]
                        ],
                        unHealthy: ''
                    ])
                    step([
                        $class: 'AnalysisPublisher',
                        defaultEncoding: '',
                        failedNewHigh: '0',
                        failedNewLow: '5',
                        failedNewNormal: '0',
                        failedTotalHigh: '0',
                        failedTotalLow: '50',
                        failedTotalNormal: '32',
                        healthy: '0',
                        unHealthy: '200',
                        unstableTotalLow: '40',
                        unstableTotalNormal: '33',
                        useStableBuildAsReference: true
                    ])
Может можно пушить поддомены с основного домена? Например на сайте foobar.com пушить google.foobar.com. Некоторые браузеры наверняка и такое запрещают, но видимо не все.
* Делаются копии конкурентов: примерно тех же что отдаёт гугл
* Делается «копия» гугла с выдачей «копий конкуррентов»
* history.pushState запихивает в историю «копию гугла с нужными результатами»
* В результате пользователь может попасть на поддельные сайты конкурентов, а раз копии во владении «хакера», то он может и клики трекать, и пароли собирать, и вообще делать что-угодно.

Естественно проблема обеспечения похожей работоспособности и видимой активности на созданных копиях никуда не девается.
Тут вся соль именно в «длинных волокнах». Короткие вроде бы и так используются как различного рода датчики, о которых чуть ли не в школьной программе упоминается (по крайней мере я помню это со школы). На википедии легко находится «волоконно-оптический датчик»
На самом деле могли и «конкретные имена» находить.

aws.amazon.com/ru/rekognition/image-features

> РАСПОЗНАВАНИЕ ЛИЦ
> Rekognition Image позволяет находить похожие лица в больших наборах изображений. За счет этого можно создавать списки найденных на изображениях лиц. Быстрый и точный поиск Rekognition Image возвращает все лица, максимально похожие на указанное.

> СРАВНЕНИЕ ЛИЦ
> Rekognition Image позволяет оценить вероятность того, что лица на двух разных изображениях принадлежат одному и тому же человеку. С помощью Rekognition можно сверять изображение пользователя с исходной фотографией на основании значения сходства в режиме, близком к реальному времени.

Короче вариантов того что именно они делали — много, а деталей о том что делали — мало.
Как я понял, хотят узнать:
Можно ли прочитать лицензию на PVS-Studio без скачивания самого софта
Скорее всего сравнивают по массе, а не по радиусу
это html entity запись для ≈, которую не пропустил парсер хабра, например для неразрывного пробела такая запись будет &nbsp;
Даже с простейшими градусами уже возникают проблемы: они не обязательно являются типом, возможно это просто другая форма представления, ведь 30° это тоже самое, что pi/6
«Doctor Who» The Waters of Mars
На свиную почку очень даже похоже

Information

Rating
Does not participate
Location
Киевская обл., Украина
Date of birth
Registered
Activity