Задать вопрос
  • Есть ли защита пакета от backdoor внедренного maintainer'ом?

    Adamos
    @Adamos
    Обычно есть два репозитория - один с бинарниками, другой с исходниками.
    Не верите майнтейнерам - компилите сами, кто ж вам мешает.
    Не верите заодно и автору - читайте код, он открыт.
    Кто угодно может проверить, собрать все самостоятельно и убедиться в аутентичности или заметить подлог.
    Поэтому обычно майнтейнерам можно доверять...

    Можете спросить себя, какая у вас защита от бэкдора в проприетарном софте, который вам предоставляется в бинарном виде в аренду на условиях лицензии. Так, для сравнения.
    Ответ написан
    5 комментариев
  • Как оптимизировать sql запрос?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Копать в сторону EXPLAIN и индексов.
    Ответ написан
    Комментировать
  • Стоит ли начинать учить Angular 1.x или дождаться 2.x и не забивать себе голову?

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

    С концептуальной точки зрения все то же самое. Просто что-то стало проще, модули заменили на es6 модули, упростили DI, директивы сменились webcomponents и т.д.

    Словом... учите JS и ES2015 (с babel.js) а остальное так.

    По поводу того насколько что отливается - советую посмотреть вот эту презенташку.
    Ответ написан
    Комментировать
  • Что учить, не могу определиться!?

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

    Берусь за jquery, json, sass,lessи ничего толком выучить не могу

    Учить JSON? бред. Осоздайте необходимость появления форматов типа JSON/XML/etc. Целенаправленно учить less/sass, то же не ок. Учите CSS (less/sass/postcss это лишь инструменты которые позволяют вам более грамотно организовать ваш код), и не в плане свойства/селекторы, а в плане подходов к верстке (БЭМ, MCSS и т.д.). Ну и да, заучите что такое DRY и почему вообще возникла необходимость в инструментах типа less/sass.

    ajax

    Не изучайте AJAX, изучайте HTTP. Тогда будет проще отделить реализацию от общей концепции. Хватит бездумно говорить "сделаю AJAX запрос", давайте говорить "сделаю HTTP запрос".

    короче направление простое - когда у вас будет более мение стабильный фундамент - то можно приступать к более высокоуровневым вещам.
    Ответ написан
    15 комментариев
  • Ваши действия, если джуниор не успевает выполнить задачу?

    codingal
    @codingal
    Front end и не только
    "не успевать" могут не только джуниоры, люди с 10+ опыта тоже могут "промахиваться" с оценками.
    Тут нужно не просто обсудить, а понять причину - спросить как он собирается решать задачу и будет ясно, понимает ли вообще человек что надо делать или нет. Если нет полного понимания - добавить в пару кого-то более опытного, либо посидеть самому и пройтись по этапам решения устно или на бумажке.
    Ответ написан
    Комментировать
  • Какую архитектуру(mvc, hmvc...) выбрать для интернет магазина?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Какую архитектуру(mvc, hmvc...) выбрать для интернет магазина?

    CQRS + Event Sourcing.

    REST или SOAP, склоняюсь больше к SOAP. т.к платежные системы начали переходить на SOAP

    только REST (ну или RPC), SOAP это боль и унижение (если вы конечно не пишите и клиент и сервер на .NET)

    php 7? можно попробовать на

    А смысл? Потом проапдейтитесь.

    Нагрузка предполагаемая около 100 000 посещений в день, максимум.

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

    Обмен данными асинхронный (ajax или websokets не знаю что лучше выбрать..)

    Не знаю как правильно пишется, Июнь или Июль? Ирак или Иран?. websockets помогут если у вас очень интенсивный обмен данными между клиентом и сервером. В остальном long-poling попроще. Хотя я думаю вам push-уведомления вообще не нужны.

    redis(для кэша, push, всяких оповещений)

    Только для кэша и можно еще как шину данных и очередь использовать.

    Клиент написан на js.

    А можно на чем-то другом? (языки транслирующиеся в js не в счет).
    Ответ написан
    21 комментарий
  • В чем могут помочь js фреймворки(React, Angular)?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    C MVC фреймворками все понятно, но они меня не интересуют. А что делать с инструментами, нацеленными больше на фронтенд (React, Angular) ?


    Открою вам страшную тайну - MVC фреймворки как раз на фронтэнд и нацелены, а не на бэкэнд.

    ReactJS - библиотека, а не фреймворк. Это вопервых. И решает эта библиотека задачу оптимизации взаимодействия с DOM при связывании данных между представлением и моделью данных.

    Angular - полноценный фреймворк, к которому можно подключить тот же React для вьюх. Используют его в основном при реализации Single Page Application-ов.

    Были ли у вас практические задачи, с которыми мог справиться только js фреймворк? Какие?

    Все задачи можно решить на чем угодно. Вопрос в сроках и кривости. Angular позволяет организовать структуру приложения, разделить его на слои, предоставляет ViewModel... все то что писать с нуля маленький ад и скучно. Ну и опять же все можно покрыть тестами и т.д.

    Могут ли быть полезны данные инструменты в совместной работе с Rails, например?

    Если брать ангуляр - я его использую только в контексте SPA. Это может быть не все приложение а только какая-то его часть но все же... А для SPA разницы нет вообще на чем бэкэнд реализован. От бэкэнда нужна только апишка.

    Реакт же можно использовать в принципе для построения view на клиенте. Так что можно и его юзать. Зависит от задачи. Скажем если в задачи входит организация работы жирной формы - то лучше взять knockout.js. А если вам нужно рендрить какие-то данные в реалтайме - можно вооружиться реактом.

    Нужно ли вообще тратить время и искать себе задачи, которые можно решить привычным jQuery, который в большей степени знают все (вопрос дальнейшей поддержки) ?

    Куча народу знает jQuery но не знает JS. И это грусть и печаль. Скорее всего если у вас в задачах стоит реализовать слайдер какой или что-то такое то ни Angular ни React вам не нужны. Ну или в контексте сайтиков тоже не особо есть от них польза (только в специфических случаях). А вот если пишите приложения какие-то, можно уже задуматься ибо если вам придется реализовывать весь бойлерплейт, да еще и не будет DI то с высокой долей вероятности (все же нормальные разработчики существуют) вы получите шматок гуано дико связанный и приносящий боль при рефакторинге. А еще использование только jQuery это на 99% отсутствие каких-либо тестов на фронтэнде.

    p.s. Я на ангуляре пишу админки к примеру для своих проектов. Ну и все все все что вписывается в концепцию SPA. Реакт планирую использовать как альтернативу phonegap (react-native вышел), поскольку он является слоем абстракции над формированием представления (за счет промежуточного виртуального DOM).
    Ответ написан
    1 комментарий
  • Нормально ли такое тестовое задание?

    SerJook
    @SerJook
    кодер
    Посылай таких работодателей в лес.
    Ответ написан
    Комментировать
  • Как прeодолеть зону комфорта, стать фрилансером не обанкротившись?

    kumaxim
    @kumaxim
    Web-программист
    Для начал ответь сам себе на вопрос "А чем тебе неудобна текущая золотая клетка"? Можешь не писать здесь, но определись для себя.

    Далее нужно осознать, что фриланс - это подвид бизнеса. Есть книжка Р.Киосаки "Квадрант денежного потока". Там всех людей, работающих в экономике разделяют на 4 части:
    1. Р - наемные работники
    2. П - предприниматели
    3. Б - бизнес
    4. И - инвесторы

    Фриланс - это сегмент П. Ты работаешь один, возможно зарабатываешь больше чем работая по найму, но вот ты заболел, продуло тебя где-то, температура 38.5.... Сомневаюсь что ты из стали сделан и сможешь в таком состоянии писать код.
    Сегмент П очень хорошо охарактеризовал г-н Залогин из Локус Медиа. Он сказал примерно так: "Вы человек-велосипед - пока крутите педали - едите, как только перестали - упали"

    Переходя к твоему вопросу о выходе из зоны комфорта.
    Первое что рекомендую перед началом своего бизнеса - оплати все долги. Закрой ипотеку, погаси автокредит, все потребительские заемы и т.д. В случае если ты провалишься(первый блин, обычно, комом) по крайней мере ты со своей семьей не под мостом окажешься.
    Второе - содержание семьи. Никакие твои заработки не должны влиять на твою жену/ребенка. Твои родные, как минимум, должны иметь крышу над головой + еду на столе. Посчитай сколько ты платишь за комуналку + еду. Далее умножаешь эту сумму на 24 месяца. Это финансовая подушка твоей семьи.
    Третье - планирование. Бизнес без бизнес-плана - это не более чем хобби. С 16 лет стремился зарабатывать в сети. Продавал ссылки на sape.ru в 2008-2009, работал с трафиком в 2010-2012, продавал китайские безделушки с 2013-2014... Сейчас ушел в разработку одного SaaS-решения. Первые пару месяцев оптимизм из ушей хлещет, думаешь "Да все будет, да это фигня, преодалею...." Но вот начинаются черные полосы: ТИЦ сайта в планируемый апдейт не вырос до нужного значения, твой сайт на 9 месте в выдаче, вместо требуемой тебе 3-4 позиции, товар из Китая на таможне завис.... Да я могу до бесконечности перечислять проблемы, которые возникали у меня... А время - деньги: тебе нужно платить аренду, зарплату, рекламу, кредиты и т.д. Не платишь - начинается ругань, из Максима Александровича я сразу превращаюсь в мошенника, кидалу, сволочь... эх, во общем суть ты понял. Думай на 2 шага вперед, вот что я хочу сказать
    Четверное - не делай бизнес с полного нуля. Перт Осипов(проект Бизнес Молодость) в каком-то из видео говорил, что мы не ценим самое ценное что у нас есть, мы воспринимаем это как должное, когда для других людей это может быть сравни бриллианту среди кучи стекляшек. Вы не первый день работайте в ИТ по какой-то специализации, так ведите эту специализацию и дальше. Занимайтесь своим любимым делом.
    Пятое - не пытайтесь все делать сами. Когда я запустил свой самый первый интернет-магазин по Китайским безделушкам я все делал сам: рисовал дизайн, верстал его, настраивал рекламу, обзванивал клиентов, носил товар на почту.... В общем занимался вообще всем! Причем за всей этой рутиной я не видел, что мой сайт работает не эффективно, я упускаю из виду 20% горячих клиентов, 10% моих бандеролей исчезают в глубинах Почты России... Вы как первое лицо компании должны знать все процессы своего предприятия, иначе Вы не сможете им управлять, но Вам не нужно все процессы делать самому. Отдайте часть на аутсорс или делегируйте наемному сотруднику.
    Шестое - я на этом очень сильно обжегся около 3-х лет назад.... Ставьте своим сотрудникам четко достижимые KPI(ключевые показатели эффективности). Например, есть у меня форма заказ обратного звонка на сайте. Человек пишет туда своего Имя и номер телефона, после чего эти данные попадают в CRM. Для менеджеров, которые у меня обрабатывают вызовы клиентов один из KPI звучит так: перезвонить клиенту в течении 15 минут после поступления от него заявки, если она поступила в рабочее время. Причем все KPI Вы должны сформулировать максимально точно и подробно. Я сам с KPI работаю так: есть у человека базовый оклад и базовый набор KPI, которые ему необходимо выполнять. Если он их выполняет - получает оклад, выполняет лучше - получает оклад + премию. Причем оклад у меня сам небольшой, около 6 т.р., но нижняя з/п у меня примерно в 2,5 раза выше.

    Первые 4 пункта - это как мягко выйти, вторые два - как не свалиться.

    В целом о бизнесе в РФ могу сказать что его делать относительно легко. Достаточно просто делать что-то хорошо и по человечески относится к своим клиентам. Примерно за 1 год Вы нарабатываете определенную базу контактов(поставщики/партнеры/клиенты), которые Вас знают и доверяют Вам. А далее главное все это не растерять.

    Вам могут все Ваши родные/коллеги/друзья говорить "Да ты что, сейчас санкции, налоги, коррупция..." Поверьте, все это херня! Под прессом можно работать и зарабатывать, причем когда его снимут - Вы получите взрывной рост. А все эти отговорки про санкции, коррупцию, высокие налоги... Да просто у кого-то очко играет!
    Ответ написан
    14 комментариев
  • Как посчитать даты (вычислить возраст) в PHP (даты хранятся в Unix Time)?

    saksmt
    @saksmt
    PHP-developer, Backend
    /** @var \DateTime $dateBirth */
    $diff = (new \DateTime())->diff($dateBirth);
    $formatted = sprintf("%d лет", $diff->y);
    Ответ написан
    Комментировать
  • Как прослушать в директиве изменения в сервисе(Angular js)?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Для этого лучше использовать события. Они сработают моментально, не завязаны на $digest циклах и т.д. Лепить для этого добра байндинги неоправданно большой оверхэд. Вообще если речь идет о уведомлении о изменении состояния глобально, то лучше просто в $rootScope эмитить событие которое будет распространяться вниз по всем дочерним.

    p.s. почему вы не пользуетесь промисами? вместо
    myService.auth(data, function () {
        alert('success');
    });

    можно делать так:
    myService.auth(data).then(function () {
    });

    при этом у вас появляется масса возможностей. Можно вклиниваться в цепочки промисов, можно ждать пока не завершится несколько паралельных запросов. Можно посредством цепочки промисов видоизменять данные:
    myService.auth().then(function (userId) {
        return user.get(userId);
    }).then(function (user) {
        // тут можно чего с пользователем поделать
        return user.friends;
    }).then(function (friends) {
       if( !friends.length) {
            return $q.reject('У вас 0 друзей :(');
       }
       return $q.all(friends.map(function (user) {
            profile.get(user.id);
       });
    }).then(function (friendsProfiles) {
        $scope.friends = friendsProfiles;
    }, function (error) {
         alert(error);
    });

    надеюсь понятно обрисовал возможности. Сервис $http и почти все сервисы в ангуляре возвращают промисы. Забудьте о тупых колбэках.
    Ответ написан
    1 комментарий
  • Какой смысл в использовании шаблонизаторов?

    Смотря о чем именно речь. Мешать верстку и логику - всё-таки плохо, и есть много на то причин.
    С другой стороны всякие шаблонизаторы со специфичной разметкой на мой взгляд очень неудобны.
    Сам пользуюсь вот таким методом:
    function template() {
    		if (!is_null($this->template) && is_file("template/{$this->template}.tpl.php")) {
    			extract($this->data, EXTR_SKIP);
    			ob_start();
    			require "template/{$this->template}.tpl.php";
    			$content = ob_get_clean();
    			return $content;
    		} else {
    			throw new Exception('Не указан шаблон: '.$this->template);
    		}
    	}

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

    Несколько иначе сделал:
    1. Слой заливается под углом с помощью border (поддержка IE8)
    2. По hover родительского блока меняем толщину border до вдвоебольшей чем размер родительского блока
    3. Анимация возможна с помощью transition или animate, но ни то, ни другое не поддерживается в IE8
    Пример: codepen.io/anon/pen/DpCfk
    Ответ написан
    Комментировать
  • Как в angular обратится к динамично созданому елементу?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Ух... включаю режим телепата.

    У вас предположим есть такой код:

    angular.module('app', [])
    
    .directive('foo', function () {
        return function (scope, el, attr) {
            el.append('<div bar></div>');
        }
    }
    .directive('bar', function () {
        return function (scope, el, attr) {
            console.log('init bar directive');
        }  
    });


    есть такой шаблон
    <div ng-app="app">
        <div foo></div>
    </div>


    И при запуске приложения мы в консольке не видим нашего консоль лога и расстраиваемся.

    А почему так? а потому что angular не отслеживает появление/удаления новых элементов сам по себе, и не пытается на каждый чих искать директивы. Для этого его нужно попросить собрать директиву.

    angular.directive('foo', function ($compile) {
        return function (scope, el, attr) {
            var child = $compile('<div bar></div>')(scope);
            el.append(child);
        }
    });


    Если вам нужно при инициализации директивы это добро делать, проще вынести в template директивы и тогда angular все сам будет делать, так как он внутри всеравно будет делать $compile.

    Подробнее тут: https://docs.angularjs.org/api/ng/service/$compile
    Ответ написан
    Комментировать
  • Существуют ли SSH-proxy для логирования?

    Попробуйте ELF библиотеку snoopy (snoopy logger). Есть готовые пакеты под большинство rpm/deb-систем.
    Логирует все исполняемые консольные команды, все запускаемые скрипты и тд. Обойти можно только отключив прелоад библиотеки (собственно надо иметь права суперпользователя).
    Вывод в логах крайне подробный и информативный. Пример:
    Aug 10 06:30:01 ctrx snoopy[15967]: [uid:0 sid:15967 tty: cwd:/root filename:/usr/bin/scp]: scp www-data@***********:/home/www-data/downld02.txt /var/www/ctrx.com/collect/downld02.txt
    Aug 10 06:30:01 ctrx snoopy[15968]: [uid:0 sid:15968 tty: cwd:/root filename:/srv/www/forum.ctrx.com/bin/collect-stats]: /srv/www/forum.ctrx.com/bin/collect-stats
    Aug 10 06:30:01 ctrx snoopy[15966]: [uid:0 sid:15966 tty: cwd:/root filename:/srv/www/www.ctrx.com/bin/process-collect-data]: /srv/www/www.ctrx.com/bin/process-collect-data
    Aug 10 06:30:01 ctrx snoopy[15969]: [uid:0 sid:15969 tty: cwd:/root filename:/usr/bin/sync-video]: /usr/bin/sync-video
    Aug 10 06:30:01 ctrx snoopy[15971]: [uid:0 sid:15969 tty: cwd:/root filename:/usr/bin/basename]: basename /usr/bin/sync-video
    Aug 10 06:30:01 ctrx snoopy[15973]: [uid:0 sid:15969 tty: cwd:/root filename:/usr/bin/flock]: flock -n 9
    Aug 10 06:30:01 ctrx snoopy[15974]: [uid:0 sid:15969 tty: cwd:/root filename:/usr/bin/rsync]: rsync -a -L --log-file=/var/log/sync.log www-data@**********:/srv/video /var/www/ctrx.com/alias.ctrx.com/docs/projects/ctrx.com/
    Aug 10 06:30:02 ctrx CRON[15963]: pam_unix(cron:session): session closed for user root
    Aug 10 06:30:02 ctrx snoopy[15977]: [uid:106 sid:44096 tty: cwd:/ filename:/bin/cat]: cat /proc/diskstats


    Как видно логируется точная дата, хост, uid, sid, терминал, pwd, команда

    Далее можете уже на хосте настроить syslog-ng/rsyslog что бы отделять логи snoopy (по умолчанию летит все в auth.log) и если есть необходимость пересылать по tcp/udp на коллектор логов для дальнейшего анализа и хранения

    Лично я пытаюсь его совместить со стандартным auth, authpriv и разделять по host/user что бы видеть кто когда логинился и что выполнял, а так же отсеять мусор от служебных пользователей типа zabbix (от zabbix-agentd), который выполняет кучу команд и в принципе не нужен в логах

    P.S. Кстати благодаря этой библиотеке многое узнал о процессах протекающих в разных системах (Debian 6,7, Arch, RH5, Ubuntu Server 12.04/14.04) без моего ведома, о их "скрытой жизни". Особенно поразила Ubuntu Server в плохом смысле.
    Еще был найден баг в Debian 6 в скриптах bash_completion. В Wheezy уже починили.
    Ответ написан
    Комментировать
  • Как остановить исходящий флуд с моего сервера?

    desperadik
    @desperadik
    Истина где-то рядом.
    Все говорят что это уязвимость Elasticsearch.
    Вот тут типа пример скрипта, который "типа" очищает IptableX.

    #!/bin/sh
    
    # remove malware
    rm -f /boot/Ip*
    rm -f /boot/.Ip*
    rm -f /boot/..Ip*
    rm -f /usr/.Ip*
    rm -f /tmp/29*
    rm -f /.my*
    rm -f /etc/rc2.d/S55Ip*
    rm -f /etc/rc3.d/S55Ip*
    rm -f /etc/rc4.d/S55Ip*
    rm -f /etc/rc5.d/S55Ip*
    rm -f /var/lib/update-rc.d/IptabLex
    rm -f /markus/tomee/bin/getsetup*
    
    # block IPs in firewall
    iptables -P INPUT ACCEPT
    iptables -F
    iptables -A INPUT -i lo -j ACCEPT
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -I INPUT -s 222.184.0.0/16 -j DROP
    iptables -I INPUT -s 222.185.0.0/16 -j DROP
    iptables -I INPUT -s 222.186.0.0/16 -j DROP
    iptables -I INPUT -s 222.187.0.0/16 -j DROP
    iptables -I INPUT -s 222.188.0.0/16 -j DROP
    iptables -I INPUT -s 222.189.0.0/16 -j DROP
    iptables -I INPUT -s 222.190.0.0/16 -j DROP
    iptables -I INPUT -s 222.191.0.0/16 -j DROP
    iptables -I INPUT -s 59.0.0.0/8 -j DROP
    iptables -I INPUT -s 119.0.0.0/8 -j DROP
    iptables -I INPUT -s 162.221.12.0/22 -j DROP
    iptables -I INPUT -s 218.0.0.0/8 -j DROP
    iptables -I INPUT -s 23.239.192.0/19 -j DROP
    iptables -A INPUT -p tcp --dport 21 -j ACCEPT
    iptables -A INPUT -p tcp --dport 64344 -j ACCEPT
    iptables -A INPUT -p tcp --dport 80 -j ACCEPT
    iptables -A INPUT -p tcp --dport 81 -j ACCEPT
    iptables -P INPUT DROP
    iptables -P FORWARD DROP
    iptables -I OUTPUT -d 222.184.0.0/16 -j DROP
    iptables -I OUTPUT -d 222.185.0.0/16 -j DROP
    iptables -I OUTPUT -d 222.186.0.0/16 -j DROP
    iptables -I OUTPUT -d 222.187.0.0/16 -j DROP
    iptables -I OUTPUT -d 222.188.0.0/16 -j DROP
    iptables -I OUTPUT -d 222.189.0.0/16 -j DROP
    iptables -I OUTPUT -d 222.190.0.0/16 -j DROP
    iptables -I OUTPUT -d 222.191.0.0/16 -j DROP
    iptables -I OUTPUT -d 59.0.0.0/8 -j DROP
    iptables -I OUTPUT -d 119.0.0.0/8 -j DROP
    iptables -I OUTPUT -d 162.221.12.0/22 -j DROP
    iptables -I OUTPUT -d 218.0.0.0/8 -j DROP
    iptables -I OUTPUT -d 23.239.192.0/19 -j DROP
    iptables -P OUTPUT ACCEPT
    iptables -L -v -n


    Этот скрипт только удаляет файлы IptableX, но никак не очищает систему полностью от руткита. На свой страх и риск.
    Потом обязательно надо будет закрыть порт Elasticsearch, или откатиться к более поздней версии.

    А лучше вообще переставить систему с резерва, потому что от руткитов очень сложно избаваиться.
    Ответ написан
    4 комментария
  • Как остановить исходящий флуд с моего сервера?

    RicoX
    @RicoX
    Ушел на http://ru.stackoverflow.com/
    Первое это блокируем на фаирволе весь трафик кроме того IP с которого заходите вы, второе прогоняем стандартные проверки на руткиты например через rkhunter, если ничего прогоняем проверку на вирусню тем же ClamAV, если снова ничего смотрим подозрительные процессы, особенно обращаем внимание на те что в верху iftop. Если тыкать пальцем в небо то можно предположить, что ваш сервер принимал участие в одной из Amplification атак и трафик генерил либо DNS либо NTP - их проверяем в первую очередь. Да и настройте фаирвол.
    Ответ написан
    Комментировать
  • PHP, есть что-то похожее на "initscript"?

    Rpsl
    @Rpsl
    Кратко о себе
    Ответ написан
    Комментировать
  • Как защитить открытый PHP код?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Качественной защиты не будет. Если ваш продукт будет интересен кому-либо, его взломают и он рано или поздно появится на варезах разных.

    Жадность это плохо, если хотите что бы люди реально покупали - делайте продукт как SaaS с возможностью купить отдельно для установки на локали. Либо можно бросить силы на поиски нуленых версий и просить удалить раздачи.
    Ответ написан
    4 комментария