• ООП головного мозга?

    Vadiok
    @Vadiok
    Веб разработчик
    Нельзя на 100% быть уверенным, что присваиваемое значение не придется как-то обрабатывать (например, приводить преобразование значение имени из "иванов ИВАН" в "Иванов Иван"). Если пользоваться сеттерами, то доп. обработка реализуется внутри класса и все. Если значения устанавливались напрямую через свойства, то придется возвращаться к использованию сеттеров, попутно переписывая присвоение свойств объектам класса во всех местах, где объекты этого класса используются.
    Ответ написан
    Комментировать
  • ООП головного мозга?

    AtomKrieg
    @AtomKrieg
    Давай я поищу в Google за тебя
    Когда вы пишете лабораторку или собственный маленький проектик, то можете делать как вам угодно.
    А теперь представьте себе ситуацию когда в команде программистов вы написали класс с публичными переменными, а потом подошел руководитель проекта и сказал что на каждое присваивание переменной надо делать запись в лог-файл. Теперь все программисты, которые пользовались вашим классом, вместо работы переписывают код с переменных на сеттеры.

    Советую почитать "Совершенный код", чтобы не задавать подобные вопросы.
    Ответ написан
    2 комментария
  • Что мой провайдер знает обо мне?

    @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 комментария
  • Ruby для браузерных игр?

    romy4
    @romy4
    Exception handler
    можно
    Ответ написан
    Комментировать
  • Как спроектировать авторитетный игровой сервер?

    saboteur_kiev
    @saboteur_kiev Куратор тега Разработка игр
    software engineer
    1. Никак. Но у многих игр есть определенный критичный пинг, выше которого играть некомфортно.
    Выход - изначально проектировать игровую механику таким образом, чтобы популярный пинг (до 10-20 мс) был более-менее комфортен.
    2. У вас немного каша даже в том смысле, как вы описываете игру. Это шутер, это реал-тайм стратегия, это симулятор? У каждого свои фичи, но даже 50 мс вполне достаточно, чтобы более-менее адекватно успевать отрисовку. В большинстве случаев клиент некритичные вещи отрисовывает сразу по действию, а получая ответ-подтверждение от сервера уже доделывает более критичные (например уменьшить жизнь можно сразу, а уничтожить корабль можно только после подтверждения от сервера).
    3. Конечно сервер должен регулировать действия. Все критичные вещи должны быть вычислены на сервере. Клиент может делать предупреждающие вычисления, которые дублируют то, что делает сервер, но только в плане отрисовки. Для этого алгоритм должен совпадать. Но подтверждение с сервера обязательно. Иначе такую игру взломать поддельными пакетами будет доступно любому школьнику.
    4. В МОБА играх всего 10 игроков. Между моментальной и быстрой синхронизацией уйма времени.
    Например игроку из России комфортно играть на русском и европейском сервере. А на американском пинг свыше 20-30 уже ВЕСЬМА заметен.

    Протокол конечно же UDP, какой же еще.
    Оптимизация - уменьшение трафика, максимально продумать что именно следует передавать, от этого отталкиваться в механике.
    Ответ написан
  • Как сделать экран РЛС?

    stasuss
    @stasuss
    быдлокодер со стажем
    вращать полупрозрачную картинку.
    Ответ написан
    Комментировать
  • Go reflection interface{}?

    uvelichitel
    @uvelichitel Куратор тега Go
    habrahabr.ru/users/uvelichitel
    Go - язык с относительно слабой типизацией. С - слабая система типов. Haskell - строго типизирован полноценной системой Хиндли-Милнер. В С что угодно можно передать пойнтером и в этом смысле любой код можно писать generic но unsafe, reflection невозможен. В Haskell все типизируется на этапе компиляции. Typechecker Haskell - это полноценная Тьюринг Машина, любой код generic и safe при этом, поэтому reflection просто не нужен. Go - прагматичный компромисс, на этапе компиляции передаваемый тип может быть неизвестен но всегда известен на этапе выполнения. В Go, runtime всегда знает тип всех данных отсюда и за этим reflection.
    Ответ написан
    6 комментариев
  • Phaser.js - как менять размеры игры, чтобы на разных экранах она всегда занимала весь экран?

    @GreatRash Автор вопроса
    Короче, раз уж мне никто не отвечает... После 3-х дней поисков я набрёл на решение на StackOverflow:

    (function() {
      var targetWidth = 640, // идеальная ширина приложения (под неё рисуем спрайты и т.п.)
            targetHeight = 960, // 640х960 - это iPhone 4, под меньшее разрешение наверно нет смысла делать
                
            deviceRatio = window.innerWidth / window.innerHeight,
            newRatio = (targetHeight / targetWidth) * deviceRatio,
                
            newWidth = targetWidth * newRatio,
            newHeight = targetHeight,
                
            game = new Phaser.Game(newWidth, newHeight, Phaser.CANVAS, ''); // последний аргумент - родитель (если пусто, значит canvas создастся в body)
                
            game.state.add('Boot', Boot);
            game.state.add('Preload', Preload);
            game.state.add('Game', Game);
                
            game.state.start('Boot');
    })();
    
    // ... Далее внутри Boot.js пишем
    
    Boot.protoytpe = {
      create: function() {
        this.scale.scaleMode = Phaser.ScaleManager.SHOW_ALL;
        this.scale.pageAlignHorisontally = true; // можно не выравнивать, но я остаил
        this.scale.pageAlignVertically = true;
        this.scale.forcePortrait = true;
      }
    };
    Ответ написан
    2 комментария
  • Для чего вы программируете?

    artem_b89
    @artem_b89
    Сетевой бездельник
    Для чего вы программируете?

    во славу сатане, конечно
    For-the-glory-of-Satan!-336484.png
    Ответ написан
    Комментировать
  • Как правильно написать авторизацию/аутентификацию?

    С полного нуля. Пользователь вводит логин + пароль:
    Пользователь входит через ВК


    Не имеет особого значения, ваша задача полученную информацию замапать на ID пользователя в ВАШЕЙ базе, с учетом необходимых проверок. ВК будет считаться доверенной стороной, т.е. ему вы доверяете процедуру проверки аутентичности юзера. Если аутентификация на вашей стороне - то проверяете вы (проверяете пароль по соленому хешу в базе, ну или как-то еще). Если у вас "быстрый вход" по ВК (без регистрации), то нужно сделать еще авторегистрацию, если userid не найден по данным от ВК. Правда, тут нужно быть готовым, что юзер захочет слинковать свои аккаунты, если он уже зарегался по логину/паролю. Ну или хотя бы предупредить при входе по ВК, что он в базе не найден и будет создан новый акк, чтобы он не удивлялся потом.

    Что писать в куки


    идентификатор сессии. Как уже сказали, должен быть сложным для копирования (скопированный идентификатор сессии - украденная сессия), уникальным. Погуглите алгоритмы или воспользуйтесь стандартыми. Сессии хранить или стандартными средствами, или попробовать редиску (там есть авто-expire, что приятно).

    Если нужно, чтобы у пользователя был только одновременный доступ с одного устройства - как быть?

    проверять наличие сессии для данного пользователя (по ID пользователя с этапа аутентификации). Если сессия уже есть - убивать ее, создавать новую (новое устройство успешно зайдет, старое - "разлогинится"). Юзеру правда ничего не помешает скопировать идентификатор сессии из кукисов на другой девайс, так что можете еще в сессию IP писать, или user-агента (поменялся - пересоздаем сессию).

    А если с нескольких?

    ничего дополнительно не проверять, допусть создание любого количества сессий.

    Как на каждой странице организовать проверку авторизован пользователь или нет?

    идем в хранилище сессий (стандартные механизмы PHP/Redis), запрашиваем/стартуем сессию по идентификатору, пришедшему в куках. Если такой сессии нет (устарела, либо никогда и не было, идентификатор юзер сам придумал) - авторизацию не выполняем. Если сессия есть - то в зависимости от того, что мы там храним, либо достаем USERID, и пробиваем по основной БД его права, либо достаем права из самой сессии, если мы их там закешировали. "Выдача" прав - есть процедура авторизации. Теперь в зависимости от набора прав - меняем логику внутри скрипта. В больших системах применяют понятия ролей и групп - это все можно погуглить. Вкратце - при авторизации определяется, в каких группах состоит пользователь. Затем, по множеству групп сопоставляются роли, которые "играет" пользователь в системе (администратор данных/пользователей, администратор бэкапа, главбух, менеджер и т.д. и т.п.). Роли фиксированы, и зависят от логики приложения - в зависимости от имеющихся у пользователя ролей меняется и поведение приложения.
    Также сейчас можно встретить claim-based подход, особенно в asp.net - тоже погуглите.

    Что хранить в сессии?

    Как минимум - USERID, но можно еще и закэшировать информацию о его правах, чтобы не читать постоянно ее из основной базы. Плюс, тут же хранить данные, относящиеся к САМОЙ сессии, например тот же IP входа, время входа и т.д. Тут зависит от задачи.
    Ответ написан
    Комментировать
  • Можно ли создать интерфейс к существующей библиотеки?

    k12th
    @k12th
    console.log(`You're pulling my leg, right?`);
    В чем вопрос? Очевидно, что технически возможно. libGDX идет под лицензией Apache 2, значит, юридически тоже никаких проблем быть не может. А уж потяните ли вы реализовать проект такой степени сложности — смотрите сами:)
    Ответ написан
    Комментировать
  • Сколько слотов RUST можно разместить на 4GB ОЗУ?

    DrunkMaster
    @DrunkMaster
    Тут такая аудитория которая долго будет думать над вашим вопросом:
    "А при чём тут Rust???"
    Ну я по крайней мере долго втыкал )))
    Ответ написан
    4 комментария
  • Кто-нибудь имел опыт поиска работы в Японии?

    @Volkerball
    Лично у меня такого опыта нету, но есть знакомые ребята с таким опытом.

    Найти работу удалённо вполне реально. Но всё зависит от вашего уровня японского (ну хоть английский-то у вас есть, я думаю) и вашей специализации.

    Если нулевой уровень и специализируетесь на Web и PHP, то попытайтесь хотя бы написать, к примеру, в конторку Shiawasedo. Они когда-то нанимали web-прогера вроде, может быть у них есть мыслишки ещё нанять.

    Если не подходите, то начинайте шерстить сайты https://japan.careerengine.org/ https://www.daijob.com/en/ и т.д. с соответствующими настройками: Overseas application OK и Japanese proficiency - Basic.

    Скорее всего, если вами заинтересуются, то будут мурыжить кучей скайп-интервью. А дальше всё будет зависеть от того, сможете ли вы их заинтересовать их так, чтобы они были готовы вам платить овер 20 манов(больше 100 тыс. рублей гросс) и мучаться с оформлением документов для вас. Следует учесть, что серьёзно настроенная компания подготовит для вас документы на годовую визу. Да и в годовой визе вы тоже заинтересованы - в случае увольнения у вас будет время для манёвров. Ну и остерегайтесь тех компаний, которые будут сладко зазывать: "Вы нам срочно нужны, сделайте визу, приезжайте на 3 месяца как турист, а на месте мы вам сделаем шоколадно". Не надо быть 7 пядей во лбу, чтобы понять подвох в таком предложении. Да и 3-месячных турвиз гражданам России не делают.

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

    P.S. Зарплаты у японских ITшников реально смешные по мировым меркам IT. Так что вас реально должно хотеться именно в Японию, а не куда-то ещё.
    Ответ написан
    6 комментариев
  • Не пропускает AddForce в Unity?

    @DrSpritz
    Вероятнее всего Вы работаете в юнити 5.x, а гайды, которые Вы смотрели, ориентированы на Unity 4.x.
    Дело в том, что раньше в Unity 4.x rigidbody/rigidbody2d были представлены в виде свойства описанного в MonoBehaviour, содержащего готовую ссылку на компонент Rigidbody (если конечно такой имелся текущем GameObject). В Unity 5.x это свойство убрали из MonoBehaviour и теперь, Вам необходимо будет получить доступ к компоненту Rigidbody2d самостоятельно.
    Ответ написан
    Комментировать
  • С чего начать изучать BigData?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    1) читаешь книжку БигДата www.mann-ivanov-ferber.ru/books/paperbook/big-data
    2) идешь на Каггл: https://www.kaggle.com/ осваиваешься
    если в п.2 питонщики не побьют - можно в
    3) лекции ШАД habrahabr.ru/company/yandex/blog/206058
    (где-то в районе Яндекс блога на Хабре ссылки на остальное поищи)

    чтобы не сдаться раньше времени - могещь еще материалы конференции посмотреть
    bigdataconf.com.ua/2015/agenda

    хз только где видео взять, и доклады кой-какие там годичной давности, но все равно
    Ответ написан
    Комментировать
  • Действительно ли важно правильное питание для мозга программиста (с точки зрения науки)?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    С другой стороны я вижу кучу программистов, бухающих по пятницам в усмерть

    Толковых среди них малова-то как-то.

    их вообще не парит, что алкоголь/никотин уничтожает какие-то там сферические нейроны мозга в вакууме

    угу, а еще последние исследования говорят что никатин убивает только слабые и больные клетки головного мозга, чем снижает риск заболевания альцгеймером. Так что еще под вопросом, вредно ли это. Конечно есть еще смолы и канцерогены, которые и приводят к раковым заболеваниям и т.д. но это уже предмет отдельного спора. Я вот на электронки перешел и в принципе доволен.

    И им плевать на научные статьи про холестерин, который забивает сосуды и мешает крови доставлять кислород в мозг

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

    Где правда?)

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

    Если вам интересно как какая-либо еда влияет на организм - есть чудная книжка - The Chine Study.
    Ответ написан
    2 комментария
  • Должна ли быть идентична модель данных на клиенте и сервере?

    zo0m
    @zo0m
    full stack developer
    Клиент и сервер 2 отдельных приложения, модель соответственно выбираете такую, как вам удобнее. Единственный момент, что часто удобно пользоваться идентичными моделями, чтобы писать меньше повторяющегося кода, ну и в поддержке получается чуть проще(возможно).
    Еще вариант - использовать упрощенную модель, повыкидывать ненужные поля, но те, что пересекаются оставить. Так вам может быть проще держать схему в голове.

    В общем, делайте, как вам удобнее.
    Ответ написан
    Комментировать
  • Какие перспективы у левел-дизайнера?

    @Elizavetta
    Matroid: gamedev/js-разработка
    В геймдеве карьера сильно зависит от успеха проектов, в которых работаете, поэтому все зависит от того, в каких конкретно играх/жанрах вы собрались дизайнить, насколько это крупные проекты, имя студии тоже важно. Но если вес сложится, это путь вне программирования, это специализация совмещает аналитику и дизайн.
    На западе, конечно, более востребована, так как в США, например, геймдизайн официальная профессия, по которой готовят сотни вузов.
    Ответ написан
    1 комментарий
  • Есть какая-нибудь программа для нарисовки 8битных спрайтов?

    rajdee
    @rajdee
    Front-end developer
    Их полно, одни из самых популярных GraphicsGale, Pyxel Edit, Pixelmator
    Ответ написан
    Комментировать