3 заметки с тегом

Использую

SSH без пароля и приватный доступ к GIT

Для доступа к серверу по SSH без ввода пароля, необходимо, чтоб он нас узнавал. Для этого, добавим наш публичный ключ на удаленный сервер. Разместим его в домашней директории пользователя, под которым будем подключаться, в файле ~/.ssh/authorized_keys.

Если ключа нет, сгенерируем его:

# генерация пары public/private rsa ключей (создаст 2048 битный RSA ключ)
ssh-keygen -t rsa -b 2048
# или можно сгенерировать 4096 битный ключ с комментарием
ssh-keygen -t rsa -b 4096 -C "КОММЕНТАРИЙ"

После размещения ПУБЛИЧНОГО ключа на сервере в списке авторизованных, он перестанет запрашивать пароль при подключении.

# сделать это можно используя команду ssh-copy-id (если она имеется)
ssh-copy-id user@server
# или при помощи последовательности команд
cat ~/.ssh/id_rsa.pub | ssh user@server "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >>  ~/.ssh/authorized_keys"
# если возникли сложности с командами, добавьте ключ вручную в файл ~/.ssh/authorized_keys

Теперь, мы можем подключаться без пароля.

# подключаемся по SSH
ssh user@server
# работает, далее давайте настроим приватный доступ к GitHub — убедимся, что он нас не узнает
user@server:~$ ssh -T git@github.com
Permission denied (publickey).
# так и есть, не узнал

Для того, чтоб он нас узнавал, необходимо добавить наш ПРИВАТНЫЙ ключ в SSH-клиент и установить соединение с использованием личного ключа используя атрибут -A.

# добавляем ключ в SSH-клиент
ssh-add ~/.ssh/id_rsa
# подключаемся по SSH с использованием добавленного ключа (указав атрибут -A)
ssh -A user@server
#  проверяем узнает ли нас теперь GitHub
user@server:~$ ssh -T git@github.com
Hi KirillArtemenko! You've successfully authenticated, but GitHub does not provide shell access.
#  теперь можно работать со своими приватными репозиториями

На этом все. Приятного использования!

16 марта   Git   SSH   UNIX   Использую   Комманды   Консоль   Совет   Терминал

ObjDict v.1.0 — Словарь как объект

После длительного общения с JS, в Python, иногда, разобрав очередной JSON в словарь мне очень не хватало обращения к его вложенным элементам используя точечную нотацию (как у объектов, в JS ведь все объекты).

Хотелось вместо громоздкого json[’a’][’b’][’c’] использовать изящное json.a.b.c обращение.

Представляю вашему вниманию простой класс-обертку на базе базовых словарей, достаточно просто «обернуть» им словарь, после чего, к нему можно обращаться как к объекту используя точечную нотацию как у JS.

Класс objdict — расширяет dict, позволяя обращаться к его свойствам, как к атрибутам object-a, но при этом, сохраняя его полноценным dict-ом.

class objdict(dict):

    def __init__(self, *args, **kwargs ):
        dict.__init__(self, *args, **kwargs )
        for key, value in self.items():
            if isinstance(value, dict):
                self[key] = objdict(value)

    def __getattr__(self, name):
        if name in self:
            return self[name]
        else:
            raise AttributeError("No such attribute: " + name)

    def __setattr__(self, name, value):
        self[name] = value

    def __delattr__(self, name):
        if name in self:
            del self[name]
        else:
            raise AttributeError("No such attribute: " + name)

Пример использования dot-нотации (присваивание тоже доступно):

>>> my_dict = {'a': {'b': {'c': 'OK'}}}
{'a': {'b': {'c': 'OK'}}}

>>> my_dict.a.b.c # пример ошибки
AttributeError: 'dict' object has no attribute 'a'

>>> my_objdict = objdict(my_dict) # преобразуем в objdict

>>> my_objdict # внешне остается таким же словарем, но...
{'a': {'b': {'c': 'OK'}}}

>>> my_objdict.a.b.c # получить свойство на 3-м уровне проще простого
'OK'

>>> my_objdict.a.b = 'END' # задать или удалить значение тоже не составляет труда
>>> my_objdict.a.b
{'a': {'b': 'END'}}

@ToDo: В версии 1.1 планирую добавить .get() обработчик с форматом objdict.get(’a.b.c’, ’default value’) для получения значения без необходимости перехвата AttributeError, будет еще более удобным для работы c JSON.

2 февраля   Python   Использую   Код

Используемый софт

Я являюсь убежденным про-Mac пользователем, для меня не существует системы удобнее и приятнее как с технической так и эстетической точки зрения. Но я уверен, что Mac не панацея и каждый должен выбирать себе именно то, что удобно и приносит удовольствие именно ему. Отдаю предпочтение темным темам оформления.

iTerm2

Отличная замена стандартного терминала, существенно расширяет возможности стандартного терминала. Работает на компьютерах Mac с MacOS 10.8+.

Также по скриншоту видно, что я предпочитаю оболочку Oh My Zsh.

PyCharm

Данный комплекс как и заявляют разработчики, действительно позволяет не заботиться о рутинных процессах и позволяет сосредоточится на основной задаче. В нем есть все необходимое для удобного перемещения по коду в большом проекте, проверки валидности синтаксиса и импортов, формитирование кода, тестирование, работа с Git, БД и многое-многое другое.

Это относиться ко всей линейке продуктов компании, таких как WebStorm, PhpStorm, RubyMine или Goglang.

Dash

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

Foobar

Очень простая песочница для быстрого тестирования кода с поддержкой различных языков программирования для Mac.

Список поддерживаемых языков: Apple Script, Apple JavaScript, Bash, Shell, PHP, Perl, Python, Ruby, DOM (CoffeeScript, JavaScript, jQuery), HTML, Markdown, Processing.js, WebGL (CoffeeScript, JavaScript), Swift, Objective-C, Go, C/C++, Node.js.

Postico

Легковесный клиент для PostgreSQL с простым и удобным в использовании интерфейсом.

Sequel Pro

Такой-же легкий и простой клиент, но уже для MySQL.

Продолжение следует...

2017   Использую   Программы