Задать вопрос
  • Тупиковое и медленное развитие, лекарство?

    voronkovich
    @voronkovich
    Нужно позволить всякому шлаку проплыть мимо вас. Не нужно вкладывать много времени в изучение того, что завтра изменится. Лучше тратить время на фундаментальные вещи, срок жизни которых больше 5-10 лет.
    Примеры:
    • Реляционные СУБД. Я использую их уже лет 10, и ничего принципиально нового (с точки зрения разработчика) в них не появилось. Я как изучил SQL 10 лет назад, так и пользуюсь им до сих пор. В тоже время, я знаю достаточно хипстеров, которые каждый день пишут на новом фреймворке и при этом не смогут составить запрос с joinами. Изучайте реляционные базы данных и SQL - они будут жить еще лет 20-ть;
    • ООП. У меня на полке лежит книга банды 4-х, которую я купил давно. Мне не нужно каждый год покупать новый экземпляр из-за того, что шаблоны проектирования вдруг взяли и "устарели". Изучайте ООП. Оно будет актуальным еще очень долгое время;
    • Регулярные выражения;
    • Командные оболочки sh/bash;
    • и т.д.

    Короче говоря, не тратьте время на синтаксис, тратьте его на семантику.

    И поменьше читайте хабр. Полезной информации там все меньше и меньше, и в то же время, подобные ему ресурсы создают у людей чувство неполноценности, из-за того что они не используют "этот новый супер-мега фреймворк".
    Ответ написан
    5 комментариев
  • Тупиковое и медленное развитие, лекарство?

    Konstantin18ko
    @Konstantin18ko
    Стоматолог
    Хочешь быстро выкачивать в продакшен? Вруби режим Vanille. Пиши, параллельно свой проект. Зацепись за один язык как основной и дальше учи всё в нем вдоль и поперёк. Затем, как всё выучишь, хватай самый сложный фраемворк и от сложного к простому начинаешь разбирать. Это мой подход.
    Для наглядной статистики: я врач, у меня 8 часовой рабочий день. С сентября 2016 начал изучать PHP и JavaScript. С 1 января по 9 января 2017 пишу програму которая помогала мне писать истории больных. Сейчас программа пользуется популярностью и ей пользуется вся ординаторская. Сейчас проект переписывается на Symfony 3.
    Что мне понадобилось: время после работы, интернет.
    Ответ написан
    22 комментария
  • Чем открыть exe файл для редактирования?

    15432
    @15432
    Системный программист ^_^
    Если вы ожидали найти там исходники, такого не будет. .exe содержит скомпилированный код и ресурсы типа иконок, библиотек, диалогов. Если ресурсы относительно несложно поменять через всякие Resource Editor, то чтоб модифицировать .exe файл, нужно его дизассемблировать, понять устройство ассемблерного кода и внести изменения вручную, это далеко не так просто. Например, этим занимаются при взломе программ - кейгены, патчи, кряки.

    Ответ на ваш вопрос будет таков:
    Просто "открыть" можно через 7-zip
    Незащищенные .exe дизассемблируются через IDA Pro
    Запакованные или защищенные .exe нужно предварительно распаковать (в самом тупом случае - через UPX, в сложных - дизасмить распаковщик и динамически отлаживать)
    Ответ написан
    1 комментарий
  • Почему все серверы ставят на Linux?

    @dinegnet
    С чего это вы решили?

    У меня половина серверов на FreeBSD (ради нативного ZFS прежде всего)
    У моего основного хостера - примерно 30% на FreeBSD

    На Solaris тоже сервера встречаются (не веб-сервера, а скажем внутрибанковские).

    Linux довольно распространен в web - и только.

    Есть еще сервера внутри предприятий (автоматизация),
    есть еще магистральные роутеры,
    есть SAN-сервера
    и пр. и пр.

    Просто они не публично доступные, поэтому у вас не перед глазами - тем не менее через них проходит много и лично ваших данных.

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

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Как я понял: речь про баланс: контроль игрового мира <-> объём передаваемых данных по сети.
    Вопрос хороший.
    Не всегда нужно делать всё на сервере, иначе объём трафика - возрастёт дико во время игры. Но также, нельзя доверять клиентским данным.
    Поэтому, всегда делается аппроксимация: промежуточная визуализация - вычисляется на клиенте, а пришедшие на сервер данные - всегда тщательно проверяются сервером в рамках логики(модели) работы игрового мира. И если отклонения слишком велики - фиксируется "читерство", иначе - по получению новых позиций объектов, клиент плавно, но с ускорением ("параболически") устраняет расхождения с серверным игровым миром: синхронизирует актуальное состояние мира сервера с отображаемым пользователю.
    Это происходит в 99% случаев незаметно для глаз игрока за монитором.

    На сервере и на клиенте - лучше всего дублировать логику механики и синхронизировать каждые N-кадров или принудительно по каким-либо важным игровым событиям.
    Ответ написан
    Комментировать
  • Какую файловую систему лучше использовать для Windows и Linux?

    chupasaurus
    @chupasaurus
    Сею рефлекторное, злое, временное
    Вариантов целых 1: NTFS, поскольку под ext*,btrfs и другие нормальных драйверов под Win нет, а вот ntfs-3g вполне ничего.
    FAT не рассматривается по причине отсталости.
    Ответ написан
    2 комментария
  • Как хранить данные в базе веб сервиса?

    Sanasol
    @Sanasol Куратор тега PHP
    нельзя просто так взять и загуглить ошибку
    Одна таблица с клиентами всех пользователей

    единственный нормальный вариант.

    Отдельная таблица с клиентами для каждого пользователя, имя User1_clients

    Отдельная база данных для каждого пользователя

    200-500-1000 клиентов? как это вообще обслуживать?

    На Хабре читал про вариант с виртуализацией, когда для каждого пользователя создается виртуальная машина со своей версией веб-приложения и БД

    Аналогично. Бесконечные серверные ресурсы? Как обслуживать?
    Ответ написан
    3 комментария
  • Как развить навык проектирования приложения или как стать Senior?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Исключительно опыт.

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

    Со временем, вы можете и сами прийти к world best practice, но нужно помнить, что в каждом проекте могут быть свои уникальные нюансы, и world best practice тоже нужно оценивать критически.

    Что делать?
    Участвовать в сложных проектах, интересоваться историей этого проекта - как пришли к тому или другому решению.
    Можно и нужно почитывать книги, но понимать, что не все решения легко интегрируются, особенно в середине.
    Ответ написан
    Комментировать
  • Как развить навык проектирования приложения или как стать Senior?

    devspec
    @devspec
    Помогло? Отметь решением
    Вам помогут только время и большое количество реализованных проектов. Всё приходит с опытом.
    Я, например, каждые полгода делаю ревью собственного кода за предыдущие полгода и ужасаюсь - как я мог так писать? А ведь полгода назад я мнил себя профессионалом... и так каждые полгода ))
    Ответ написан
    2 комментария
  • Как в OpenVPN пускать через впн только выбранные сайты?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    route add " + domain_ip + " via " + remote_ip + " dev " + interface
    Ответ написан
    6 комментариев
  • В чём разница между new и Object.create()?

    petermzg
    @petermzg
    Самый лучший программист
    Так тут же написано.

    создаёт новый объект с указанными объектом прототипа и свойствами.
    Ответ написан
    Комментировать
  • Как нормально исключить из области обработки изображения некоторый массив Point (c#)?

    petermzg
    @petermzg
    Самый лучший программист
    Хотите скорости, то забудьте про GetPixel
    Используйте Bitmap.LockBits
    Ответ написан
    1 комментарий
  • Кому и где можно продать стартап?

    opium
    @opium
    Просто люблю качественно работать
    блин коммет сервер это даже не смешно в 2017 году, реально было как то актуально лет 10 назад , сейчас количество юзеров стремится к нулю, а стартапы с падающей аудиторией стоят примерно ничего.
    Ответ написан
    2 комментария
  • Верстка сайтов на XML (в топку HTML), кастомные теги и индексация поисковиками, как обстоят дела?

    @codecity
    Лет 10 назад встречались сайты на чистом XML для данных и XSLT для преобразования этих данных в HTML. Причем преобразование работало средствами браузера IE без JS (там была такая функция).

    Многим эта идея нравилась -- разделение на данные и их представление.

    Возможно идея и хорошая, но эволюция так сказать выбрала другой путь -- движение в сторону упрощения. Сейчас, как я вижу, от XML-я вообще отказались, его заменил более простой формат представления -- JSON. Вместо XSLT применяются либо HTML-шаблоны как в Angular, либо JSX.
    Ответ написан
  • Как начать брать крупные заказы на фрилансе?

    mzcoding
    @mzcoding
    Web-Разработка
    Мне в свое время помогло устройство в компанию, работа в команде. Вам тоже необходимо поработать в команде, желательно опытной. Узнать и применить на практике BDD, SOLID , начать использовать гит, трекер задач и т.д. Желательно чтобы компания писала SOA проекты или проекты с микросервисной архитектурой. Найдите такую, пойдите туда сперва хотя-бы за еду) Через пол года -год у Вас не будет таких вопросов на тостере :)
    Ответ написан
    1 комментарий
  • Есть ли способы спарсить facebook?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Да, такое есть: набираете за копейки кучку школоло, даете им задачу, платите и получаете результат.
    Ответ написан
    1 комментарий
  • Как динамически подключать библиотеки?

    @Ariox41
    Посмотрите в сторону boost::DLL

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

    В документации много примеров, особых проблем не должно возникнуть.

    Пример из документации, на всякий случай:
    // my_plugin_api.hpp
    #include <string>
    
    class my_plugin_api {
    public:
       virtual std::string name() const = 0;
       virtual float calculate(float x, float y) = 0;
    
       virtual ~my_plugin_api() {}
    };

    Реализация плагина:
    // my_plugin_sum.cpp
    #include <boost/config.hpp> // for BOOST_SYMBOL_EXPORT
    #include "../tutorial_common/my_plugin_api.hpp"
    
    namespace my_namespace {
    
    class my_plugin_sum : public my_plugin_api {
    public:
        my_plugin_sum() {
            std::cout << "Constructing my_plugin_sum" << std::endl;
        }
    
        std::string name() const {
            return "sum";
        }
    
        float calculate(float x, float y) {
            return x + y;
        }
    
        ~my_plugin_sum() {
            std::cout << "Destructing my_plugin_sum ;o)" << std::endl;
        }
    };
    
    // Exporting `my_namespace::plugin` variable with alias name `plugin`
    // (Has the same effect as `BOOST_DLL_ALIAS(my_namespace::plugin, plugin)`)
    extern "C" BOOST_SYMBOL_EXPORT my_plugin_sum plugin;
    my_plugin_sum plugin;
    
    } // namespace my_namespace

    Собственно, загрузка библиотеки:
    #include <boost/dll/import.hpp> // for import_alias
    #include <iostream>
    #include "../tutorial_common/my_plugin_api.hpp"
    
    namespace dll = boost::dll;
    
    int main(int argc, char* argv[]) {
    
        boost::filesystem::path lib_path(argv[1]);          // argv[1] contains path to directory with our plugin library
        boost::shared_ptr<my_plugin_api> plugin;            // variable to hold a pointer to plugin variable
        std::cout << "Loading the plugin" << std::endl;
    
        plugin = dll::import<my_plugin_api>(          // type of imported symbol is located between `<` and `>`
            lib_path / "my_plugin_sum",                     // path to the library and library name
            "plugin",                                       // name of the symbol to import
            dll::load_mode::append_decorations              // makes `libmy_plugin_sum.so` or `my_plugin_sum.dll` from `my_plugin_sum`
        );
    
        std::cout << "plugin->calculate(1.5, 1.5) call:  " << plugin->calculate(1.5, 1.5) << std::endl;
    }

    Вывод:
    Loading the plugin
    Constructing my_plugin_sum
    plugin->calculate(1.5, 1.5) call:  3
    Destructing my_plugin_sum ;o)
    Ответ написан
    Комментировать
  • C# - Как присвоить переменной определенному месту в предложении?

    DanielDemidko
    @DanielDemidko
    Программист
    Следующая инструкция разобьёт считанную строку на массив слов, в независимости от количества пробелов между ними и присвоит его переменной wordsArray. Вы также можете указать любые свои символы для разбивки.
    String[] wordsArray = 
    Console
         // Считываем строку
        .ReadLine()
         // Разбиваем её
        .Split(
         //Массив разделительных символов, вызов .ToArray необходим
                 " ".ToArray(),
        // Указание пропускать повторы разделительных символов
                 StringSplitOptions.RemoveEmptyEntries )
    Ответ написан
    1 комментарий
  • При подключении RDP, VPN соединение отключается. Как это исправить?

    @res2001
    Developer, ex-admin
    VPN подключается локальным администратором?
    Если да, то скорее всего при подключении нового пользователя предыдущего просто выкидывает и соответственно все что было запущено локальным админом завершается, в т.ч. и VPN соединение рвется.
    Для решения проблемы нужно VPN подключение перевести в какой-то автономный режим, чтоб не нужно было держать залогиненного пользователя для его работы.

    Еще как вариант - видимо у вас не сервере не лицензированы службы RDS, а в таком режиме Win Server позволяет одновременно работать максимум 2 пользователям, если не ошибаюсь. Возможно у вас висят отключенные сеансы двух админов, при очередном логине один из сеансов убивается с соответствующими последствиями.
    В этом случае нужно контролировать подключенных пользователей, если сеанс не нужен то производить "выход", а не отключение. Настроить для всех пользователей, кроме того под которым подключается VPN автоматический выход при неактивности.
    Либо лицензировать службы терминалов на большее количество пользователей.
    Ответ написан
    Комментировать
  • При подключении RDP, VPN соединение отключается. Как это исправить?

    Jump
    @Jump
    Системный администратор со стажем.
    Два варианта решения проблемы-
    • Делаем подключение к VPN на роутере или на сервере но как службу, а не как процесс пользователя.
    • Делаем из сервера - сервер терминалов.


    Наиболее адекватный и универсальный - первый вариант.
    Ответ написан
    Комментировать