• Запрет разглашать свои навыки, это норма?

    BasiC2k
    @BasiC2k
    .NET developer (open to job offers)
    Да, это корявая защита, чтобы ты не искал другую работу. Обходится легко - размещает резюме, только без фамилии и фото. Если всё-таки уволят по этой причине - суд восстановит тебя на работе (с компенсацией вынужденного прогула). Идти к ним или нет - решайте сами.
    Ответ написан
    Комментировать
  • Запрет разглашать свои навыки, это норма?

    Jump
    @Jump
    Системный администратор со стажем.
    Насколько это вообще распространенный и... законный что ли пункт?
    Законный в какой стране? Во всех странах законы разные. В России это требование противоречит закону, поэтому такой договор может быть признан ничтожным.

    А насколько распространенный - неизвестно, не слышал чтобы кто то вел статистику работодателей по степени адекватности.
    Ответ написан
    Комментировать
  • Запрет разглашать свои навыки, это норма?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Сделано для того, чтобы ты не мог разместить резюме и искать работу с указанием своих навыков.
    БЕГN оттуда!
    И обязательно напиши здесь что это за контора, чтобы все про неё знали
    Ответ написан
    Комментировать
  • Запрет разглашать свои навыки, это норма?

    AleksandrB
    @AleksandrB
    Совсем недавно вывел "Hello world"
    Они не имеют право запрещать разглашать общедоступную информацию, не принадлежащую им. Я подписывал кучу nda и ни разу не встречал такое.

    А вообще, рекомендовал бы я тебе бежать от таких договор куда подальше. Как правило если такие пункты встречаются в договоре, значит дальше тебя такие муки... и каждый - от уборщицы до сео будут пытаться тебя кинуть и обмануть
    Ответ написан
    Комментировать
  • Что за ошибка Using $this when not in object context?

    Как уже сказал первый отвечающий: вы пытаетесь вызвать статистически метод GetFullName(). Нужно сделать хотя бы так:
    $user = new CUser();
    $userName = $user->GetFullName();
    if (!$userName)
      $userName = $user->GetLogin();
    Ответ написан
    Комментировать
  • Сообщать ли менеджеру о minor-баге?

    BorLaze
    @BorLaze
    Java developer
    "Если отладка — процесс удаления ошибок, то программирование должно быть процессом их внесения."
    Э. Дейкстра


    Если в конторе за допущенный баг следуют санкции - в болото такую контору.
    Ответ написан
    Комментировать
  • Как избавиться от ошибки too many open files?

    shambler81
    @shambler81 Куратор тега Linux
    находится в интернете в первой строчке https://winitpro.ru/index.php/2019/11/19/oshibka-t...
    может немного отличаться от ОС
    Ответ написан
    Комментировать
  • Стоит ли сегодня новичку изучать C/C++?

    gbg
    @gbg
    Любые ответы на любые вопросы
    И так, случайные чуваки из интернета, перед вами человек, о знаниях, умениях, навыках и способностях вы ничего не знаете.

    И он спрашивает вас - а стоит ли мне заниматься X?

    НУ ОТКУДА МЫ ЗНАЕМ, стоит ли вам заниматься X? Вот я программирую уже больше 20 лет, 16 из них я программирую на C++, 14 - получаю за это зарплату в виде пяти, а потом и шестизначной суммы

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

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

    Если у вас есть желание работать типа в айти 5/2 с 9 до 18, получать стабильные 90к рэ в месяц - есть более "легкие" пути.

    Чем грозит неправильный выбор при высокой зарплате? Размазыванием слез и других жидкостей по хабру в духе "ребята, мне 25 годиков, на мне жена, дите, ипотека, я получаю три штуки баксов в месяц, но я совсем выгорел, у меня депрессия, тревога, импотенция, жена говорит, что я эмоционально холоден к ней, изменяет и грозит разводом...

    КАКОГО ПСИХОТЕРАПЕВТА МНЕ ВЫБРАТЬ, ШТОБ ПОМОХ?"
    Ответ написан
    4 комментария
  • Развертывание web приложения на Go?

    mirrr
    @mirrr
    Программист и просто хороший человек
    Опишу свой способ, который перекликается со способом Алексей . Все это делается одним bash-скриптом, но распишу примерный алгоритм.

    1) Создаем юзера под которым будет работать приложение и переключаемся на него:
    useradd -s /bin/bash <имя_пользователя>
    su <имя_пользователя>


    2) Генерируем новый ключ для деплоя
    ssh-keygen -t rsa -C "<имя_пользователя>@<домен_сервиса>"
    cat ~/.ssh/id_rsa.pub

    Например, в gitlab добавляем этот ключ Project>Settings>Deploy Key

    3) Клонируем приложение и собираем приложение
    cd ~
    git clone ssh://______.git app 
    # здесь не буду расписывать, можно устанавливать через go get и т.д. способы отличаются
    # для go get нужно прописать $GOPATH в .bash_profile


    4) Создаем systemd service
    exit #выходим из-под юзера
    nano /etc/systemd/system/<service_name>.service

    Вписываем:
    [Unit]
    Description=<description>
    
    [Service]
    Restart=always
    RestartSec=10
    EnvironmentFile=-/<service_path>/env
    WorkingDirectory=/<service_path>/appDir
    ExecStart=/<service_path>/appDir/appName
    LimitNOFILE=524576
    LimitNPROC=524576
    User=<user>
    Group=<userGroup>
    StandardOutput=syslog
    StandardError=syslog
    SyslogIdentifier=<service_name>
    
    
    [Install]
    WantedBy=multi-user.target


    5) Запускаем сервис и ставим в автозагрузку:

    systemctl start <имя_сервиса>
    systemctl enable <имя_сервиса>


    Посмотреть статус:

    systemctl status <имя_сервиса>

    6) Разрешаем просмотр логов и перезапуск сервиса под созданным пользователем
    Добавляем в /etc/sudoers строчки:

    Defaults:<имя_пользователя> !authenticate
    <имя_пользователя> ALL=/usr/bin/systemctl restart <имя_сервиса>, /usr/bin/systemctl stop <имя_сервиса>, /usr/bin/systemctl start <имя_сервиса>, /usr/bin/journalctl


    Теперь эти операции не будут требовать пароля:
    sudo journalctl -f  -u <имя_сервиса> 
    sudo systemctl stop <имя_сервиса>
    sudo systemctl start <имя_сервиса>
    sudo systemctl restart <имя_сервиса>


    7) настраиваем виртуальный хост nginx для проксирования на порт приложения, если требуется:
    server {
        listen 80;
        server_name site.ru;
    
        client_max_body_size 256m;
        access_log  /var/log/nginx-site-acc;
        error_log /var/log/nginx-site-err;
        log_not_found off;
    
        location ^~ / {
            proxy_pass http://localhost:<порт_приложения>;
            proxy_set_header Host $host:$server_port;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_buffer_size 16k;
            proxy_buffers 32 16k;
            proxy_connect_timeout 300;
            proxy_send_timeout 300;
            proxy_read_timeout 300;
        }
    
        location ^~ /files {
            alias /home/<имя_пользователя>/app/some_files;
        }
    }
    Ответ написан
    Комментировать
  • Развертывание web приложения на Go?

    evnuh
    @evnuh
    Поиск Гугл помог мне, впусти и ты его в свой дом
    Как это работает, чтобы понимали. Я опишу истинно правильный путь, но долгий: (как подсказал pygame , по бенчмаркам https://gist.github.com/hgfischer/7965620 всё же нативный хттп сервер в Go быстрее, чем nginx с fcgi, т.к. у Go гавняная реализация fcgi, поэтому вместо fcgi быстрее будет обычный http proxy_pass).

    1) Ставится веб-сервер нормальный, а не тот, который есть в самом Go. То есть, ставим nginx. Настраиваем ему все url маршруты, настраиваем отдачу статики.

    2) За динамикой nginx будет обращаться к нашему Go демону. По протоколу fast-cgi. Именно по нему, потому что nginx его умеет и вообще он хорош (upd: но не в Go). Это короч бинарный протокол по которому nginx передаёт в нашу Go программу HTTP заголовки запроса от браузера и получает обратно HTTP ответ. Для этого ставим простейшую обёртку для fast-cgi под названием spawn-fcgi, она будет преднастраивать и запускать нашу Go программу, готовую для общения по протоколу fast-cgi.

    3) На случай, если наша Go программа падает. Либо уже у нас есть система, которая следит за демонами и поднимает их в случае падения (systemd, upstart), тогда конфигурируем её, либо ставим таковую и тоже конфигурируем.

    Привожу пример как это всё сделано у меня (самый популярный стек технологий) на Debian:

    1) nginx
    server {
    	server_name otboi.****;
    	listen 80;
    	include fastcgi_params;
    ...
    	
    	location / {
    		fastcgi_pass unix:/var/run/otboinik.sock;
    	}


    2) systemd конфиг, который стартует нашу Go программу, завёрнутую в spawn-fcgi
    [Unit]
    Description=Otboinik
    
    [Service]
    Restart=always
    Environment=OTBOINIK_BIN=/opt/гыы/otboinik/bin/otboinik
    Environment=OTBOINIK_PID=/var/run/otboinik.pid
    Environment=OTBOINIK_USER=гыыыы
    Environment=OTBOINIK_SOCKET=/var/run/otboinik.sock
    Environment=OTBOINIK_SOCKET_USER=гыыыыы
    Environment=OTBOINIK_SOCKET_MODE=0666
    ExecStart=/usr/bin/spawn-fcgi -s $OTBOINIK_SOCKET -M $OTBOINIK_SOCKET_MODE -n -P $OTBOINIK_PID -u $OTBOINIK_USER -U $OTBOINIK_SOCKET_USER -G $OTBOINIK_SOCKET_USER $OTBOINIK_BIN
    
    [Install]
    WantedBy=multi-user.target


    3) Сам Go код
    import (
    	"net/http"
    	"net/http/fcgi"
    )
    
    type Server struct {
    }
    
    func (s Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
           // чиста пример
            jsonblob := r.FormValue("events")
    	if jsonblob == "" {
    		w.WriteHeader(http.StatusNotAcceptable)
    		return
    	}
    }
    
    func main() {
    	server := Server{}
    
    	func() {
    		fcgi.Serve(nil, server)
    	}()
    
    	waitchan := make(chan int, 1)
    	<-waitchan
    }
    Ответ написан
    4 комментария
  • Почему выводится только первый подходящий элемент массива?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    в return
    Ответ написан
    Комментировать
  • Как подменить схему базы данных в Entity Hibernate?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    Остановись, друг! Ты явно не туда идешь!
    Код не должен зависить от среды вообще. Это слишком сильная связанность.
    Prod, test, qa, staging, dev (etc..) должны быть разделены на уровне конфигурации.
    Ответ написан
    6 комментариев
  • Как описать структуру PHP объекта?

    anton_reut
    @anton_reut
    Начинающий веб-разработчик
    Чтобы делать "каскад" последовательных методов тебе нужно в каждом методе возвращать этот же объект.

    class Base {
    	
    	public function test($string){
    		// Что то делаем.
    		return $this;
    	}
    	
    	public function chek($string){
    		// Что то делаем.
    		return $this;
    	}
    	
    	public function hello(){
    		// Что то делаем.
    		return $this;
    	}
    }

    А писать в коде удобнее так:

    $base
    ->test('string1')
    ->chek('string')
    ->hello();
    Ответ написан
    2 комментария
  • Стоит помогать бывшим клиентам?

    petermzg
    @petermzg
    Самый лучший программист
    Если только исправить твои ошибки, то нормально. А вот переделать функционал, это уже тебя используют. Такое нужно останавливать.
    Ответ написан
    Комментировать
  • Сделать свой тип из строки в PHP уже можно?

    glaphire
    @glaphire Куратор тега PHP
    PHP developer
    Надо сделать класс-обертку над строкой, и внутри делать валидацию строки на заданный формат перед сохранением.
    Ответ написан
    3 комментария
  • Зачем требуются различные СУБД, если можно использовать структуры данных языка, например словари и списки в питоне?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Если на структурах языка реализовать весь набор функций, предоставляемых СУБД, то получится новая СУБД. Зачем тратить время и силы на написание СУБД, если есть уже готовые?
    Ответ написан
    Комментировать
  • Уроки SQL с тестами?

    Zoominger
    @Zoominger
    System Integrator
    https://www.sql-ex.ru/?Lang=0
    Ультра-балдёжный и бесплатный.
    Ответ написан
    Комментировать
  • Попинайте. Работодатель сказал, что у меня код PHP устаревший. В чем именно проблемы?

    Stalker_RED
    @Stalker_RED
    @mysql_query() уже одного этого кусочка хватает для того, чтобы сильно усомниться в скиллах.

    Функция mysql_query устарела более семи лет назад, и в современных версиях языка ее вообще нет.
    Подавление ошибок через @ - вообще шедевр. У вас, значит, запрос с ошибкой, или база упала - но ваш код это просто игнорирует и делает вид, что так и надо. Зашибись :)

    Читайте https://phptherightway.com/
    Ответ написан
    Комментировать