• На каком сайте/приложении можно по-быстрому набросать дизайн сайта?

    @Wazzap_007
    Можно попробовать ninjamock
    Ответ написан
    Комментировать
  • Как пушить на github чтобы не вводить каждый раз логин и пароль?

    bukinion
    @bukinion
    Некороткий мануал по SSH + GitHub & BitBucket (на Win, почти тоже и на Lin)

    Вначале надо найти ключи
    $ ls -al ~/.ssh
    # Спискок файлов в директории .ssh, если они есть
    # id_rsa.pub # Нам интересны эти два брата, точнее этот публичный код (паб)
    # id_rsa # Это для сверки с пабом


    Если их нет, то будем генерить, после чего ласково попросят пароль, он должен быть сложным, в конечном итоге вводится он будет только один раз при старте сессии.
    $ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
    # Enter file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]
    # Enter passphrase (empty for no passphrase):
    # Enter same passphrase again:


    Кстати, пароль можно и поменять:
    $ ssh-keygen -p # Введете старый, а потом новый.

    Консоль выведет следующее:
    # Your identification has been saved in /Users/you/.ssh/id_rsa.
    # Your public key has been saved in /Users/you/.ssh/id_rsa.pub.
    # The key fingerprint is:
    # 01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db your_email@example.com


    Теперь надо добавить ваши ключи в ssh-агент
    Удостоверьтесь в том, что он у вас есть — запустите
    $ ssh-agent -s

    Должен быть следующий однострочный (!) вывод, номер pid будет другим, все остальное от лукавого:
    Agent pid 59566

    Если нет, то скорее всего в терминале другая оболочка, тогда:
    $ eval $(ssh-agent -s)
    Agent pid 59566


    Вот теперь можно добавить ключи в ssh-агент
    $ ssh-add ~/.ssh/id_rsa

    Далее, добавим ключи в VCS-сервисы github и bitbucket, для этого скопируйте содержимое id_rsa.pub, и вставьте в настройках своего аккаунта на VCS (например, "SSH and GPG keys" для Github). Активируем ключи.

    для github:
    $ ssh -T git@github.com

    чуть длинней, для bitbucket, вначале надо создать файл-конфиг, ~/.ssh/config, куда добавить следующие строки:
    Host bitbucket.org
    IdentityFile ~/.ssh/id_rsa # Тут приватный ключ!


    После чего запустить следующую команду:
    $ ssh -T git@bitbucket.org

    В каждом случае, если все пройдет успешно, то вы получите следующие сообщения:
    Hi #{username}! You've successfully authenticated, but GitHub does not provide shell access.


    или
    conq: logged in as tutorials.
    You can use git or hg to connect to Bitbucket. Shell access is disabled.


    К слову, что Github, что Bitbucket выдали мне в этот раз такое:
    Thу authenticity of host 'github.com (192.30.253.113)' can't be established.
    RSA key fingerprint is 12:12:12...12.
    Are you sure want to conecting (yes/no)?


    Ответил yes, консоль что-то ответила и все работает.

    Если же вы используете алиасы для хостов, то и активация должна быть через алиас:

    $ ssh -T git@alias


    Если работаете с Sourcetree (рекомендую для винды), то есть такой момент, что программа не принимает стандартный формат этих ключей и что бы работать с программой через ssh придется из полученного ключа (приватный) сгенерировать их в другом формате понятном putty. Для этого используется программа puttygen. Которая входит в поставку Sourcetree.


    Занудно, но уже финал близок, далее нам нужно настроить ~/.bashrc, которого на винде нет, именно он будет содержать инициализационные настройки для консоли и запускать ssh-агент, который будет включать ваши ключи, запоминать сессию:
    # Note: ~/.ssh/environment should not be used, as it
    #       already has a different purpose in SSH.
    
    env=~/.ssh/agent.env
    
    # Note: Don't bother checking SSH_AGENT_PID. It's not used
    #       by SSH itself, and it might even be incorrect
    #       (for example, when using agent-forwarding over SSH).
    
    agent_is_running() {
        if [ "$SSH_AUTH_SOCK" ]; then
            # ssh-add returns:
            #   0 = agent running, has keys
            #   1 = agent running, no keys
            #   2 = agent not running
            ssh-add -l >/dev/null 2>&1 || [ $? -eq 1 ]
        else
            false
        fi
    }
    
    agent_has_keys() {
        ssh-add -l >/dev/null 2>&1
    }
    
    agent_load_env() {
        . "$env" >/dev/null
    }
    
    agent_start() {
        (umask 077; ssh-agent >"$env")
        . "$env" >/dev/null
    }
    
    if ! agent_is_running; then
        agent_load_env
    fi
    
    # if your keys are not stored in ~/.ssh/id_rsa or ~/.ssh/id_dsa, you'll need
    # to paste the proper path after ssh-add
    if ! agent_is_running; then
        agent_start
        ssh-add
    elif ! agent_has_keys; then
        ssh-add
    fi
    
    unset env


    И снова не финал, скорее всего так как вы не пользовались SSH, то ваши уже существующие локальные репо будут работать по http/https, поэтому надо сменить адреса. Адреса удаленных репозиториев проверяются командой $ git remote -v. Для смены адресов git есть специальная команда: $ set-url, ввести следующее:
    $ git remote set-url origin git@github.com:USERNAME/OTHERREPOSITORY.git


    Вернуть все на Родину можно аналогично
    Ответ написан
    1 комментарий
  • Есть ли аналог сайта для python как javarush?

    @svlugovoy
    https://devman.org/ раньше было бесплатно, а сейчас смотрю прикрутили монетизацию с определенного уровня...
    Ответ написан
    Комментировать
  • Как быстро сохранить файл в vim?

    Как пример.

    vimrc
    " Ctrl-Enter: force save file
    nnoremap <silent> <C-Enter> :<C-u>write!<CR>
    
    " Shift-Enter: force save file when buffer was changed
    nnoremap <silent> <S-Enter> :<C-u>update!<CR>

    " Ctrl-s: force save file
    inoremap <silent> <C-s> <Esc> :write!<CR>i

    Для ожидаемой работы <C-s> в терминале, добавить в конфиг:
    bash ~/.bash_profile или ~/.bashrc
    stty ixoff -ixon
    zsh ~/.zshrc
    stty start undef
    stty stop undef
    setopt noflowcontrol
    Ответ написан
    8 комментариев
  • Какие книги посоветуете для начального изучения программирования?

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

    @nirvimel
    1. Купите недорогой VPS (от $15/год, можно даже дешевле) и поднимите на нем личный VPN. В Сети есть куча подробных руководств как это делается. Только не надо говорить, что у вас нет на это денег, интернетом вы же не бесплатно пользуетесь. Просто примите это как небольшую дополнительную плату за интернет за ваш спокойный сон.
    2. Работая через VPN (обязательно), заведите себе новый почтовый ящик на зарубежном сервере у компании, у которой нет никакого бизнеса и любых коммерческих интересов в РФ. Пусть это будет не мажорный гигант индустрии, а скромная компания, малоизвестная в РФ. Главное - это наличие SSL в веб-интерфейсе и в IMAP, в остальном почта есть почта, она просто работает, и этого достаточно.
    3. Работая через VPN, заведите себе новый аккаунт в vk facebook и/или google (если вы неспособны полностью отказаться от использования социалок). При регистрации указывайте место проживания подальше от РФ. Учитывайте, что все гиганты индустрии, имеющие большой бизнес в РФ, полностью сотрудничает с ГБ, но аккаунты нерезидентов, зарегистрированные и посещаемые с зарубежных IP, они не станут сливать по умолчанию (но по первому запросу сольют мгновенно). Так что забудьте про любые приваты в социалках, ведите все общение так, как будто все это читает весь ваш квартал и все те, кому бы вам меньше всего хотелось это показывать. Для приватного общения пользуйтесь только безопасной почтой (пункт 2) и защищенными чатами, на telegram jabber на зарубежных серверах. Все это касается только тех, кто не может окончательно завязать с пагубной зависимостью от соц.сетей. Очевидно, наиболее безопасным (и полезным для здоровья) вариантом является полный отказ от социалок.
    4. Не вбрасывайте в старые ящики и соц.аккаунты адреса и ссылки на новые чистые, не указывайте новые адреса в любых исходящих и старайтесь, чтобы они не попали во входящие. Помните, что в любой социалке и любом веб-интерфейсе почты (сотрудничающей) кнопка "удалить" скрывает удаляемое только от вас самих и не более того.
    5. (Самый неприятный пункт) Забудьте про vk, mail.ru и российские gmail и facebook. - КАК? - Так! Я понимаю, что это не легко, что они давно стали частью вашей жизни. Но это придется сделать! Поговорите сами с собой, спросите себя что для вас важнее: ваша личная безопасность, спокойствие и крепкий сон или старые привычки, которыми вы опутаны, и которые не хотят отпускать вас? Учтите, что продолжая пользоваться местными социалками (и сотрудничающими иностранными), вы продолжаете каждый день генерировать на себя тонны компромата, который может обернуться против вас в самый неожиданный момент самым неприятным образом. Проявляя активность в своих старых аккаунтах, вы не даете им "протухнуть" и не даете даже формального повода добрым компаниям снести их через пол года, после истечения отведенного законом срока хранения (как известно, vk не ограничивается минимальным сроком хранения, а хранит все метаданные и текст практически вечно за исключением видео/аудио).
    Ответ написан
    26 комментариев
  • Правильно ли я тестирую форму в Django?

    @deliro
    Правильнее будет спросить, что ты делаешь так.
    1) Модель построена ужасно. on_delete=models.CASCADE - дефолтное поведение связей при удалении, не понимаю, зачем его указывать. default=1 - это какой-то костыль, который накроется медным тазом в самый неподходящий момент. Про имена атрибутов я уже молчу.

    2) Твоя вьюха не выдерживает ничего, кроме правильных данных. Что будет, если юзер не авторизован? Что будет, если пришёл GET запрос (или любой другой не POST)? Что будет, если форма невалидна? Тесты не фейлятся в этих случаях (так как их нет, хахаха) - значит ты тестируешь не так.

    3) Юзера создавать нужно методом create_user, сейчас ты создаёшь юзера, забивая ему в БД хэш пароля, равный W123456. Конечно, не при каких обстоятельствах ты не залогинишься под этим юзером. Следовательно, весь остальной тест фейлится. Автоинкрементный ID явно указывать нельзя, за исключением тех случаев, когда ты бэкап БД накатываешь на чистую БД. Вот так creview = Creview.objects.get(id=1) тоже не делай. У тебя тест создаёт ровно один объект Creview, получить ты его можешь, например, вот так: Creview.objects.first()
    Ответ написан
    3 комментария
  • Что делать с неадекватным фикспрайсом на Upwork?

    opium
    @opium
    Просто люблю качественно работать
    когда вы оставляете заявку вы всегда указываете цену , сами, САМИ.
    Ответ написан
    3 комментария
  • Что же мне выбрать?

    @deliro
    0) В ВУЗах не учат программировать. Ни в Москве, ни в Смоленске. Тебе дадут общие знания по алгоритмам, дискретке, матану и, возможно, ты научишься думать.
    1) Корочка играет там, где она нужна. В данный момент единственное её применение - миграция в другую страну и получение рабочей визы (для этого нужен диплом). Устраиваться в пределах РФ - разницы нет. Исключение - госструктуры.
    2) Реально
    3) В Москве можно обзавестись связями и работой трени/джуна, т.к. удалённо вряд ли тебя кто-то захочет брать без опыта. Я б поехал, не ради ВУЗа.

    UPD.
    Вася Пупкин написал, что общага развращает. Это действительно так для развратных и инфантильных людей, которые отбились от ежовых руковиц родителей. Для целенаправленного и отвественного человека это будет лишь сменой места жительства и круга общения. Ну и некоторые неудобства в виде соседей-свиней или полуразбитых душа/туалета.
    Ответ написан
    9 комментариев
  • Как из списка кортежей получить список?

    DDDsa
    @DDDsa
    a = [('1', '2', '3'), ('a', 'b', 'c'), ('I', 'II', 'III')]
    result = []
    for i in a:
        result.extend(i)
    
    print(result)
    >>> ['1', '2', '3', 'a', 'b', 'c', 'I', 'II', 'III']

    Вместо result.extend(i) можно написать просто result += i

    Вот еще красивое через list comprehension:
    a = [('1', '2', '3'), ('a', 'b', 'c'), ('I', 'II', 'III')]
    result = [j for i in a for j in i]
    
    print(result)
    >>> ['1', '2', '3', 'a', 'b', 'c', 'I', 'II', 'III']


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

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

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    У Вас порою выбора не будет.

    Примеры из жизни:
    1. К примеру веб-разработчику на Python желающиему изучить как применять Flask без умения читать по-английски не возможно это сделать. Потому что по-русски до 15 статей и то не дают точной и ясной информаци. А вот по-английски есть книга от Miguel Grinberg и в его "Flask. Web-development" настолько ясно и подробно, что больше ничего и не надо!
    2. Другой пример: научиться модульному тестированию. Вроде по-русски разве что ленивый не написал, а вот по факту есть только одна книга для новичков которая формирует ПРАВИЛЬНОЕ понимание это книга Art Of Unit Testing от Roy Osherove. И можно было сказать, что "есть же перевод", но в этом переводе вместо "спринт", "забег", да и само навание перевели как "искусство автономного тестирования". Ну или всем понятный "Framework" перевсти как "Каркас" ну я если честно очень в недоумении....

    Оно вам надо? Если есть время учиться именно по-английски это НАДО делать!
    Ответ написан
    3 комментария