• Является ли нормальным постоянное создание экземпляров и использование их 1 раз?

    @nirvimel
    Создание временного объекта допустимо (по соображениям производительности), если класс этого объекта удовлетворяет нескольким условиям.
    Временный класс должен иметь только final поля (то есть никаких других полей кроме final он иметь не должен). И сам экземпляр этого класса (если не передается напрямую) должен храниться в final локальной переменной. Если это условие соблюдено (есть еще незначительные условия), то включается крутейшая оптимизация (кажется, начиная с Java 7, но точно не помню), которая на выходе дает код, практически эквивалентный тому, как если бы все поля этого класса передавались бы в функцию через параметры (никакой объект класса при этом не создается).
    Дополнительное условие, требуемое для включения этой оптимизации - код во всех его методах (включая конструктор) не должен вызывать сторонних эффектов (не обращаться к внешним классам, не вызывать new, и др.). Без опыта написания чистых функций проще всего соблюсти это ограничение, если вообще не создавать никаких методов, кроме конструктора, который только инициализирует поля значениями своих параметров.
    Еще одно условие - этот класс должен быть унаследован только от Object и должен запрещать наследование от себя (то есть сам должен быть final).

    Кстати, в последних версиях версиях Java (7/8) вообще много разных оптимизаций для тех, кто пишет final по умолчанию везде, и убирает только когда это совершенно необходимо.
    Ответ написан
    1 комментарий
  • Как правильно выключать Virtualbox при отключении основной ОС?

    @nirvimel
    В гостевой ОС в /etc/acpi/powerbtn.sh прописать shutdown -h now
    В host-ОС выполнить VBoxManage controlvm Ubuntu acpipowerbutton
    Ответ написан
    1 комментарий
  • Почему Google Analytics не видит реферер PhantomJS?

    @nirvimel
    Referer: https://google.com
    Переход с главной страницы гугла? Вы серьезно?

    Откройте Developoer Tools -> Network и посмотрите как выглядит реальный запрос при переходе по ссылке из SERP.
    Обратите внимание какой там реферер. И попробуйте разгадать значения всех полей в URL.
    Hit: Эти UIDы присутствуют там как раз для отслеживания уников в реальном трафике.
    Ответ написан
    Комментировать
  • Как прочитать указатель из памяти чужого процесса?

    @nirvimel
    ArtMoney недостаточно для написания полноценного runtime-патча. Потребуется полноценный отладчик, чтение и понимание фрагментов кода, которые ответственны за чтение/запись этого значения.
    Могу предсказать проблему, с которой вы столкнетесь, пытаясь выявить (якобы существующую) цепочку указателей - при каждом новом запуске это значение (и все указатели на него) будет появляться по новому адресу.
    spoiler
    Ибо не все так просто.
    Ответ написан
    3 комментария
  • Как защитить приложение клиент-банк от взлома?

    @nirvimel
    Подготовка:
    1. В чистую виртуальную машину с отключенной сетью ставится чистый Windows с лицензионного диска (никакая не СБОРКА! и не готовый образ).
    2. Никакой другой ПОЛЕЗНЫЙ софт на эту ВМ не ставится.
    3. Ставится банк-клиент, скаченный с официального сайта.
    4. Подключается сеть в режиме NAT.
    5. Заносятся все данные и ключи. Проверяется подключение к серверу (увидеть свой баланс).
    6. Делается снепшот виртуальной машины.

    Работа:
    1. Запуск ВМ. Работа в банк-клинте (как обычно). Откат ВМ к снепшоту, сделанному на этапе подготовки.

    Только не говорите, что это НЕ УДОБНО.
    Во-первых, это неправда; запустить/остановить/откатить VirtualBox (например) не сложнее, чем распечатать накладную в 1С.
    Во-вторых, если бы даже это было действительно не удобно, то это все равно не имело бы значения, когда речь идет о безопасности банковских операций.
    Ответ написан
    1 комментарий
  • Является ли нарушением авторских прав создание копий уже существующих игр?

    @nirvimel
    Загляните, например, сюда. Узнаете игрушки?
    Нет, вы не угадали, это вовсе не они, а их recreation (как это называют авторы). К известным играм от Westwood Studios, MicroProse и др. они отношения (как бы) не имеют, а представляют собой "оригинальную" разработку под GPL v2.

    Делайте выводы.
    Ответ написан
    3 комментария
  • Где найти библиотеку загрузки через торрент?

    @nirvimel
    Ответ написан
    Комментировать
  • Где еще применяется C (не C++), кроме Embedded Systems, можно с ним работать на UpWork?

    @nirvimel
    В основном это будет работа с legacy кодом (которому, больше лет, чем тем, кто с ним работает сегодня).
    Разрабатывать с нуля прикладное ПО на С довольно затратно по времени (а это не в интересах бизнеса). Современные ЯП позволяют вести разработку в более короткие сроки. Единственное исключение - области, в которых имеются жесткие ограничения ресурсов (тот самый embedded). В остальных областях время разработчика стоит дороже, чем несколько гигабайт памяти.
    Ответ написан
    Комментировать
  • Как расшифровать файлы на сервере после вирусы Damage Ransomware?

    @nirvimel
    Тут только два варианта:
    1. Вернуться на машине времени в прошлое и СДЕЛАТЬ БЕКАП!
    2. Заплатить вымогателям за любезно предоставленный урок жизни.
    Ответ написан
    Комментировать
  • Есть ли шанс у местной доски объявлений перед гигантами по типу авито?

    @nirvimel
    Секрет доминирования Авито на рынке не в его функционале (который можно скопировать при относительно небольших вложениях), а в колоссальном объеме контента. Контент создает органический трафик. Трафик приносит новый контент. ... PROFIT.
    Сегодня перебить этого гиганта будет очень трудно. Для этого предается  купить пол Яндекса  вложить в продвижение (а не в разработку!) голого (без такого объема контента) конкурента годовую прибыль Авито. Региональным доскам это не под силу в принципе.
    Ответ написан
    Комментировать
  • Можно ли в "кратко о себе" поставить ссылку на свой сайт?

    @nirvimel
    Многие так делают. Пройдитесь по профилям в топе, увидите.
    Ответ написан
    Комментировать
  • Что происходит с феном в ванной?

    @nirvimel
    Предохранитель сработает только, если в воду кинуть ОБА провода. Но достаточно мощный предохран >25А не сработает и так (электрики такие предохраны наоборот нахваливают, типа "не выбивает без причины").

    Если же опустить в воду только фазу, то ... в таком случае могло бы спасти только УЗО, но в где вы их видели в обычных квартирах?

    P.S.: Если вы уже прикидываете варианты, как устроить кому-то "несчастный случай", то спешу вас обломать: такие "несчастные случаи" ОЧЕНЬ легко расследуются.
    Ответ написан
    5 комментариев
  • Почему происходит всплеск нагрузки на процессор при запросе страниц сайта и как этот всплеск убрать или снизить?

    @nirvimel
    при переходе на сайт или с одной страницы сайта на другую наблюдаю в htop резкий всплеск нагрузки на cpu до 15%

    Получается 7 одновременных запросов страниц сайта сервер могут положить.

    Когда директор просит секретаршу заварить ему кофе, она включает чайник и продолжает играть в пасьянс. При этом игрой она занята 85% времени (15% возится с чайником).

    Вопрос: сможем ли мы положить секретаршу, если всем отделом (7 человек) одновременно попросим у нее кофе?
    Ответ написан
    5 комментариев
  • Как с помощью JavaScript можно определить скорость интернета пользователя?

    @nirvimel
    Есть только один способ узнать реальный предел скорости ширины канала - это нагрузить канал до предела. На этом принципе и основаны все спидтесты. Причем для получения достоверных результатов эта нагрузка должна держаться дольше, чем время загрузки одной страницы. И кому тогда нужна такая "оптимизация" загрузки?
    Ответ написан
    Комментировать
  • Зачем нужна статическая типизация, и можно ли обойтись без неё?

    @nirvimel
    Зачем нужна статическая типизация, и можно ли обойтись без неё?

    Для HelloWorld она совершенно не нужна.

    Ведь можно же просто объявить переменную, и суй в неё что твоей душе угодно, хоть строку, хоть число и т.д.

    Видимо, именно так мыслят авторы говнокода, которых проклинают последующие разработчики, которым "посчастливилось" дорабатывать их проекты.

    И что может за собой повлечь игнорирование статической типизации

    Вырванные волосы при отладке проекта на 5000 строк.
    Ответ написан
    1 комментарий
  • Можно ли запустить игры на Virtualbox?

    @nirvimel
    На материнке есть интегрированное видео?
    Да - Выбросте (в смысле продайте на авито) свою обгорелую и пользуйтесь интегрированной.
    Нет - Выбросте свою обгорелую и купите другую (на авито же).
    Ответ написан
    Комментировать
  • Что значит выражение "выстрелить себе в ногу?" (в виде кода)?

    @nirvimel
    *((int *) 0) = 1;
    Ни в одном другом языке это не осуществляется так просто.
    Ответ написан
    3 комментария
  • Как заставить текущий объект перезаписать самого себя?

    @nirvimel
    В режиме телепатии догадываюсь, что вы хотите реализовать. Видимо, речь идет о совершенно стандартном механизме порождения объекта соединения из объекта БД.
    Чтобы понять как строятся подобные велосипеды загляните в код любой ORM или вообще любой ООП-обертки над драйвером БД. Вы увидите в большинстве случаев следующую картину:
    1. Конфигурация БД представляет собой фабрику (да, да, те самые паттерны, которые неофитам НИНУЖНЫ).
    2. Метод connect возвращает объект соединение.
    3. Объект соединение (кроме методов по выполнению запросов) имеет метод close, который закрывает соединение (попытка выполнения запроса на закрытом соединении будет выдавать ошибку).
    4. Соединение (как объект) живет один раз и не может быть переоткрыто после закрытия. Но из фабрики БД всегда можно открыть новое соединение.

    Почему так:
    Главный принцип ООП: отдельному понятию - отдельный класс. БД (на стороне клиента) представляет собой только конфигурацию: адрес сервера, имя юзера, пароль, имя БД и прочие параметры. Соединение к БД - это отдельная сущность, через которую создаются транзакции и курсоры (отдельные сущности), через которые выполняются запросы. Результат выполнения запроса - отдельная сущность. Отдельная строка в выборке - отдельная сущность (если только не кортеж). И только отдельные поля в строке имеют примитивные типы данных.
    Ответ написан
    Комментировать
  • Как отобразить изображение по горизонтали без bitmap и matrix?

    @nirvimel
    Если известна ширина по горизонтали, то в каждой строке в цикле переставить пикселы (сколь там у вас байт на пиксел?) в обратном порядке.
    Ответ написан
    Комментировать
  • Какие установить правила для загрузки фото на сайт?

    @nirvimel
    Как реализовать функцию автоматического уменьшения / оптимизации фотографии если пользователь загружает фотографию больше установленного на сайте размера?

    При аплоде изображение (вместе с пометкой от кого оно пришло) ставится в очередь на обработку. В фоне (с низким приоритетом) крутится скрипт, который по одному забирает изображения из очереди конвертирует их (через ImageMagick, например) и прописывает в профиль (ну или куда там у вас) того юзера, который загрузил оригинал. После того как изображение получено, но до того как оно обработано на том месте можно показывать заглушку: "подождите (несколько секунд/часов/дней), идет обработка".
    Ответ написан
    6 комментариев