• Как в JS сделать численное значение от и до?

    первое
    if (x >= 30 && x <= 120) {}

    второе
    Number.isInteger(x)

    UPD: второе не работает в IE11 и ниже
    Ответ написан
    Комментировать
  • Как вывести матрицу в окно??

    @nirvimel
    1. Открыть окно.
    2. Проглотить красную таблетку.

    cc99eec3e5ce44629de4954611c0d29e.jpg
    Ответ написан
    1 комментарий
  • Обойти строку в for in можно, но 'str' object is not an iterator. Не все, что в for in - итераторы?

    aRegius
    @aRegius
    Python Enthusiast
    >>> s = 'ABC'   #iterable, но не iterator
    >>> for char in s:
    	        print(char)
    
    A
    B
    C

    >>> s = 'ABC'
    >>> it = iter(s)   #а вот уже iterator, созданный из iterable
    >>> for i in range(4):
    	        print(next(it))
    
    A
    B
    C
    Traceback (most recent call last):
      File "<pyshell#35>", line 2, in <module>
        print(next(it))
    StopIteration
    >>>
    Ответ написан
    4 комментария
  • Как правильно создать алгоритм решения такой задачи?

    Daemon23RUS
    @Daemon23RUS
    Какой Лагранж ? Какая интерполяция ? Это школьная программа. Но как верно заметили коллеги, здесь нужно задействовать нейронную сеть. К сожалению они не сообщили какую. Я сообщу: задействовать нужно сеть в своей голове, или голове соседа.
    P.S. бонусом решение "... числа 1 ; -2 ; 3 ; -4 ; 5 ... " - формула: (-n)*(-1)^n
    Ответ написан
    3 комментария
  • Как сортировать словарь Python 2.7?

    @encyclopedist
    Словарь в питоне - неупорядоченная структура данных. Он не помнит порядка. Поэтому чделать то что вам хочется с помощью стандартного словаря невозможно.

    Но для этого в стандартной библиотеке предусмотрен специальный словарь OrderedDict (в модуле collections)

    Чтобы создать OrderedDict с элементами в определенном порядке, нужно передать список пар:

    users = OrderedDict([
        ("girafenok", {"password": "2341", "upload_files": 0, "files_size": 0}),
        ("bastax", {"password": "qwerty123", "files": 2, "files_size": "45 B"}),
        ("kuku", {"password": "kuku1332", "files": 0, "files_size": "12 GB"}),
    ])
    Ответ написан
    Комментировать
  • И все-таки PHP 7 быстрее Python 3?

    Tark
    @Tark
    Pyramid'альный мир
    Но какая разница? У вас ведь скрипты ещё и с базами данных общаются?
    Предположим, написали вы сервис на чистом РНР без фреймворков, а для теста написали аналогичный сервис на Python/Django. Предположим, что на чистом РНР можно получить 10к запросов/сек, а на Django - жалкие 4к. Печаль.

    Но ваш сервис, например, будет использовать 5 запросов к БД, каждый из которых будет отрабатываться за 1мс. 5мс - чисто на запросы к БД.

    Итого: на РНР запрос будет выполняться за 5.0001мс, на Python/Django - за 5.00025мс... Неужели есть какая-то разница?
    Ответ написан
    6 комментариев
  • Что наследуется в ООП?

    Класс наследуется, интерфейс реализуется.
    interface I {}
    class A {}
    class B extends A implements I {}

    Класс обычно называют чертежом объекта. А интерфейс - это контракт, который объект обязан выполнить.

    Возьмем, например, Велосипед, Грузовик и Мотоцикл.

    Мотоцикл - это почти Велосипед, он делается по тому же чертежу с небольшими дополнениями. Это наследование. Грузовик при этом ни от Велосипеда, ни от Мотоцикла не наследуется, у него совсем другой чертёж.

    Но каждый из этих объектов реализует контракт ТранспортноеСредство. Если у вас есть объект, являющийся ТранспортнымСредством, вы всегда уверены, что доедете из пункта А в пункт Б и при этом вам совершенно неважно сколько у этого объекта колёс.

    А вот если у вас есть контракт Автомобиль, то вы знаете, что можете выполнить такие действия как ОткрытьКапот, ВключитьСтеклоочистители. Велосипед при этом не сможет реализовать такой интерфейс. А Грузовик будет реализовывать оба контракта: хотите - передвигайтесь, хотите - открывайте капот.
    Ответ написан
    2 комментария
  • Как отсортировать два логически связанных массива?

    @Aves
    let names = ['Mihail', 'Vasya', 'Gena' ], ages = [20, 44, 32];
    [names, ages] = names
      .map((name, i) => [name, ages[i]])
      .sort((a, b) => a[0].length - b[0].length)
      .reduce((res, pair) => (res.forEach((e, i) => e.push(pair[i])), res), [[],[]]);
    Ответ написан
    Комментировать
  • Можно ли перенести драйвер из linux в android?

    denisandroid
    @denisandroid
    BASH ,PHP , MYSQL, C++, JAVA . (PHP, JAVA,MYSQL)
    Минимально требуется исходный код модуля драйвера вашей камеры. Определить что это за модуль, дальше требуется скомпилировать этот модуль под архитектуру андроид процессора, дальше требуется закинуть модуль в андроид (если этого не получится, то вам прийдется брать boot.img и его модифицировать) дальше с помощью busubox и тд пробовать загрузить модуль, если вышло то ваша камера должна работать. Также делает и paragonNTFS на андроиде(программа позволяет ntfs носители монтировать, при этом она грузит модуль, отслеживает устройства и монтирует их вручную куда укажете)
    Ответ написан
    Комментировать
  • Почему Python оборачивает элементы списка в кортежи?

    crazyzubr
    @crazyzubr
    Python backend-developer
    Потому что запись
    x = ('string',)
    y = (1,)

    Равнозначна
    x = 'string',
    y = 1,
    Ответ написан
    Комментировать
  • Странное поведение встроенной функции. Не правда ли?

    @deliro
    С первого взгяда может показаться нелогичным, но логика здесь есть.

    Когда используется all? Когда мы проверяем, что все переменные в iterable-объекте - True (неважно, какого вида). Сформулировав по-другому, можно сказать: "all сообщает о том, что в списке все объекты не False". Т.к. Список пуст - значит в нём нет объектов, которые есть False.

    С any похожая логика. "any сообщает о том, что в списке есть хотя бы один элемент True". Т.к. список пуст - значит в нём нет хотя бы одного объекта, который True.
    Ответ написан
    1 комментарий
  • Можно ли написать компилятор в машиный код на языке очень высокого уровня?

    @dzavalishin
    1. Поверьте человеку, который пишет на Си с 1985 года (30 лет, вроде бы?) - НИКОГДА не пишите на Си ничего, если только к вашему виску не приставили пистолет. Исключение одно - ядро ОС. Да и то...

    2. Что угодно можно написать на чём угодно. Вопрос удобства.

    3. Писать компилятор надо на языке с развитыми средствами поддержки жизни проекта. Таких два - Java и C#. Можно (а если Вам это комфортно, то и нужно) использовать функциональные расширения соответствующих платформ. Scala/F#.

    4. На говноязыках серьёзные вещи писать не нужно. Ключевое свойство говноязыка - обсуждение вокруг него о том, как бедные программеры перетрудились явно прописывать руками типы всех переменных. На таких ЯП можно писать затычки и примочки.

    5. Не применяйте генераторы лексических и грамматических анализаторов, пока не научитесь писать компилятор руками. Ключевое слово - парсинг рекурсивным спуском. Это реально просто, если грамматика языка - LR1. Для начала надо взять простой язык. Очень простой.

    6. Базовый компилятор с кодогенерацией для стековой машины нужно уметь писать за два дня. Если вы хотите это уметь.

    7. Бекэнды (реальную кодогенерацию) писать НЕ НУЖНО. Вообще. Вы её хорошо не напишете ни-ко-гда. Проще генерировать на выходе Си и докомпилировать приличным си-компилятором.
    Ответ написан
    Комментировать
  • Лисп или хаскел?

    Начнём с того, что Лисп не функциональный. Тем, кто приходит в Лисп из мира императивных языков может так казаться, но я пришел в Лисп после Хаскела и я тебе точно говорю, Лисп - не функциональный.
    Теперь по теме - оба языка крайне интересны и способны взорвать мозг, но Хаскел вставляет сильнее, он действительно заумный и изобилует супер-дупер новыми изощренными технологиями программирования (Аппликативные функторы, комбинаторы, монады, ленивые вычисления), но что тебе действительно взорвёт мозг - это чистота языка (нельзя совершать побочные эффекты т.е. не напишешь в консоль где хочешь, не присвоишь значение переменной), отсутствие циклов и декларативность (ты не пишешь "как", а пишешь "что" представляет из себя задача). Но это только в начале. Когда освоишься, оказывается, что Хаскел очень выразителен и краток. Но есть у него и минусы - он очень сложен, ОЧЕНЬ. Серьезно, даже через пол года, у тебя по-прежнему будут проблемы. Уверен, 95% хаскелистов не объяснят в подробности, как работает Hello world на хаскеле, который выглядит так:
    main::IO ()
    main = do
    putStrLn "Hello world!"

    выглядит не сложно, но вот что скрывается под водой: все вычисления происходят в монаде IO т.к. только в ней разрешены побочные эффекты. Побочный эффект (действие ввода-вывода) выполняется только тогда, когда вернётся в main т.к. побочные эффекты разрешены только в main (поэтому и только в монаде IO т.к. main возвращает IO () ). Что такое IO ()? Это как бы список действий, которые туда запихиваются и объединяются в цепочку, чтобы быть последовательными (вне монады порядок выполнения твоих инструкций не определён, счастливого дебага). Эти действия на самом деле не выполняются сразу, а представляют из себя "обещание" сделать это действие, которое реализуется как только что-то уже действующее не затребует результат, в нашем случае это консоль... в общем и это только верхушка айсберга, я еще про типы не говорил, про извлечение и упаковку в монаду, про отображения множеств, карринг и тд.
    В общем хаскел это интересно, но очень сложно. Даже если не пообломаешь зубы, у тебя очень долго будут проблемы с дебагом, с пониманием всяких астральных техник, которые плодятся день и ночь, вроде стрелок или линз. Да и понять чужой код на хаскеле часто очень сложно, потому что каждый считает, что просто обязан применить все заумные штуки, которые он знает, ведь разве не для этого он учил хаскел? А ведь потом люди будут читать это...
    Теперь пара слов о Лиспе - тут у меня меньше опыта, но идея такая - это программируемый язык программирования. Кроме того, что в нём есть макросы - специальные инструменты, чтобы писать программу которая напишет программу, так и сам язык представляет из себя синтаксическое дерево в своём первозданном виде, что открывает безграничные возможности в метапрограммировании. В общем идея такая - этот язык в умелых руках становится абсолютно чем захочешь. Нравится хаскел и ФП? Отлично, сейчас реализуем. Хочешь ленивые вычисления? На! Хочешь классы? Вот! Хочешь логическое программирование? Держи! При всём этом язык крайне прост, может даже проще Си.
    Так, что я тебе посоветую? Наверное, начинай с Хаскела - он тащит за собой огромную теоретическую базу и целый арсенал таких приёмов программирования, которые тебе и не снились. Выучишь, освоишься - подумай о лиспе. Но! Тебе в любом случае нужно будет ставить Emacs - это самая лучшая среда для этих обоих языков, а Emacs конфигурируется на Emacs Lisp, так что у тебя будет возможность на него посмотреть. Посмотри видео по емаксу https://www.youtube.com/playlist?list=PLECBtie1W1t... (там и про Emacs Lisp есть глава), потом качаешь "Хаскел во имя добра" и "О хаскел по-человечески" и читаешь их параллельно - в первой хорошее мягкое введение, а во второй практика - она нужна сразу, чтобы хотябы знать, как создать проект с помощью cabal и собрать его, а то Липовача пол книги в интерпретаторе сидит.
    Ответ написан
    1 комментарий
  • Переменная не хочет переопределяться. Почему?

    HoHsi
    @HoHsi
    Если хотите использовать асинхронные операции в синхронном стиле, придется прикрутить промисы

    /** Переписываем с промисами */
    function getLoc(options) {
      if (navigator.geolocation ){
        // Запускаем новый промис
        return new Promise((resolve, reject) => {  
          navigator.geolocation.getCurrentPosition((pos) => {
            resolve(pos);
          }, (err) => {
            reject(err);
          }, options);
        });
      } else {
        // Если нет, возвращаем заглушку, или можете сделать "reject"
        return Promise.resolve({
          pos: {
            coords: {
              latitude: 0,
              longitude: 0
            }
          }
        });
      }
    }
    
    getLoc()
    .then((pos) => {
      const {
        latitude: lat,
        longitude: lon
      } = pos.coords;
    
      console.log("Wow");
      console.log("So promissed");
      console.log(lat, lon);
    })
    .catch((err) => {
      // Пользователь отказался давать координаты
      console.log(":(");
      console.error(err);
    });
    Ответ написан
    2 комментария
  • ES6 или TypeScript? Что востребованней?

    miraage
    @miraage
    Старый прогер
    TypeScript включает в себя ES6.
    Поэтому, если Вы ас в TypeScript - Вы ас в ES6.
    Ответ написан
    Комментировать
  • Стоит ли сейчас учить TypeScript?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    но вторая его версия пишется на TypeScrip


    Какая разница на чем его пишут, если вы можете писать на чем захотите.

    Давайте проясним. TypeScript это ES6/ES7-stage1 + информация о типах. То есть если вы знаете ES6/ES7-stage1 то вы автоматически знаете TypeScript (добавится только информация о типах и некоторые нюансы, но в целом они строго следует стандарту).

    То есть вот это валидный TypeScript:
    class Foo {
        bar = 'default property value';
    
        constructor(untypedArg) {
           this.foobar = untypedArg;
        }
    }


    Одновременно с тем что это валидный TypeScript код это так же валидный код с точки зрения ES (с учетом драфтов находящихся в stage1, вроде пропертей для объектов)

    Это не Dart, который является другим языком. Это надстройка над JS и не более, кроме возможности (опциальной) декларации типов - там ничего больше нет. Но зато для больших проектов эта информация позволяет избавиться от кучи багов.
    Ответ написан
  • Что мой провайдер знает обо мне?

    @nirvimel
    Когда я захожу на определенный сайт, провайдер видит URL?

    Да.

    А если я захожу на https?

    Известен IP сервера и имя домена. Больше ничего.

    Откуда провайдер узнает, что я скачиваю определенный фильм/программу через torrent?

    Торрент-клиент общается с трекером по HTTP. Все видно насквозь: конкретные торренты + вся статистика (когда начато скачивание, когда закончено, когда пошла раздача, сколько роздано). Возможно подключение к трекеру и по HTTPS, но rutracker.org такой возможности не дает (мне тоже интересно почему).

    Все пакеты которые я получаю и раздаю значит провайдер скачивает себе, чтобы узнать что это за фильм/программа?

    Провайдер не хранит у себя весь трафик. Это технически невозможно. Но трафик обрабатывается, классифицируется и ведутся логи о том какой тип трафика когда входил/уходил от абонента.

    Или он отслеживает факт скачивания .torrent файла, а затем делает вывод по идущим пакетам, что это скачивается?

    В основном отслеживаются коммуникации между торрент-клиентом и трекером (там все самое интересное). Коммуникации между пирами требуют значительных мощностей для расшифровки, поэтому логгируется только факт коммуникации с определенным пиром, но не содержимое.

    Когда я пользуюсь VPN, что видит провайдер?

    Видит шифрованный траффик на конкретный IP. По IP можно узнать, что этот диапазон продается под VPSы. Сам факт шифрованного трафика вешает абонента в списки тех, "кому есть что скрывать", а значит подозреваемых при любом розыске.

    Что я зашел на определенный IP и с него идут зашифрованные потоки?

    Дальнейшее направление трафика от VPN-сервера отследить невозможно (по крайней мере, на оборудовании провайдера в автоматическом режиме). Но при целенаправленной слежке за абонентом в принципе возможно по временным меткам сопоставить трафик абонента с трафиком любого сервера.

    OpenVPN будет работать через VPN IP и в браузере и при обновлении Windows, драйверов, ...?

    В зависимости от настройки. Но в общем случае, да, так.

    Читал, что в Windows есть такая особенность, что если провайдер как-то урезает пакет, то VPN отключается и сайту показывается мой реальный IP?

    Это не связанно с провайдером. Это особенность Windows. Когда VPN отваливается, весь трафик вылетает наружу в открытом виде. Опять же зависит от настроек. Но это еще одна цена "удобства" при использовании Windows.

    При этом провайдер видит на каком я сайте, что скачиваю?

    VPN отвалился - хацкер спалился.

    Таких фишек много?

    Смотря о чем речь. В сфере сетевой безопасности и анонимности различных нюансов вообще много.

    Как от них защитится?

    Учить мат.часть. Разбираться в сетевых протоколах и в устройстве ОС.

    Если пользуюсь каким-то расширением типа ZenMate, dotvpn, провайдер аналогично как и с VPN видит что что-то отправляется и приходит на определенный VPN IP?

    Расширения очень разные. Они могут базироваться на совершенно разных технологиях. Ни один специалист вам не скажет за все расширения. Не исключено, что многие из них, по сути - honeypot, то есть созданы с целью слежения за любителями анонимности, привлекают своим удобством и дают ложное чувство безопасности.

    При использовании Tor, кто-то пользуется моим IP, пока я пользуюсь чужим?

    Нет. Если у вас не сконфигурирован Exit Node.

    Что при этом видит провайдер, что я получаю потоки данных с определенных IP и каждый раз разный IP?

    У них есть система точного обнаружения использования Tor. Это факт остается в логах с теми же последствиями, что и для VPN.

    Провайдер видит URL?

    Через Tor и VPN - нет.

    Каким образом можно полностью управлять сетью на ПК, видеть что, куда и когда отправляется или приходит на ПК (Windows, Linux)?

    Видеть все: https://www.google.com/search?q=Wireshark
    Блокировать все лишнее: https://www.google.com/search?q=Comodo+Firewall
    Ответ написан
    22 комментария
  • Как запускать tmux с уже сплитованными панелями?

    Aitem
    @Aitem
    Ответ написан
    Комментировать
  • Какой из дистрибутивов Linux подойдет для веб и java?

    @mitekgrishkin
    Какая среда лучше всего подойдет для начала программирования? - Среда на этой неделе прекрасно подойдет для начала программирования
    Ответ написан
    Комментировать