Pull to refresh
-6
0
Александр @ALito

Разработчик

Send message

Полезные команды GNU/Linux для разработчика. Часть 1

Level of difficultyEasy
Reading time11 min
Views12K

В этой статье поговорим про команды GNU/Linux, которые удобно использовать разработчику для решения повседневных задач. Подборка ориентирована на тех, кто не хочет залезать глубоко в систему, но по работе вынужден иногда ходить на Linux-сервер. Здесь мы собрали то, чем пользуемся сами и к чему привыкли, однако почти все упомянутые задачи можно решить и другими способами.

Статья написана по мотивам ИТ-посиделки, где мы обменивались полезными лайфхаками. Все команды, которые успели обсудить, мы разделили на две части. В первой поговорим про запросы общей информации о пользователях и системе, работу с файлами, процессами и текстом. Во второй части - о bash и работе с сетью, в частности ssh.

Читать далее
Total votes 15: ↑11 and ↓4+9
Comments9

Учим домашний сервер Linux засыпать при простое и просыпаться по запросу

Reading time13 min
Views14K
Всё началось с, казалось бы, обыденного изменения в моём домашнем сервере для хостинга бэкапов Time Machine: я хотел, чтобы он уходил в сон, когда находился в состоянии простоя, и пробуждался при необходимости. Уход в сон при простое — кажется, в Windows эта функция встроена с Windows 98? Насколько сложно будет это настроить на современной версии Ubuntu?

Честно говоря, мне требовалось нечто большее, чем засыпание при простое, мне нужно было ещё и пробуждение по запросу; оказалось, вот это второе требование реализовать довольно сложно. Я много раз заходил в тупик, но продолжал искать решение, которое «просто работает» без необходимости ручного включения сервера для каждого бэкапа. Вы можете прочитать статью целиком, чтобы узнать о моём пути, или просто прочитать готовые инструкции.


Читать дальше →
Total votes 25: ↑25 and ↓0+25
Comments22

Программы-клиенты для протоколов недетектируемого обхода блокировок сайтов: V2Ray/XRay, Clash, Sing-Box, и другие

Level of difficultyMedium
Reading time16 min
Views190K

В предыдущей статье “Современные технологии обхода блокировок: V2Ray, XRay, XTLS, Hysteria и все-все-все” я рассказывал про прокси-протоколы. Теперь настало время рассказать про клиенты: консольные, GUI для десктопа и для мобильных платформ. 

Надеюсь, что эта статья вам окажется полезной, потому что, как выяснилось, найти хороший клиент даже для тех же V2Ray/XRay в наше время не так-то просто. Потому что большая часть того, что находится при поиске в интернете “в лоб” и даже в списках типа Awesome V2Ray - или уже неподдерживаемое, или довольно кривое, или не умеющее в актуальные версии и фичи (например, XTLS и uTLS), а самые жемчужины прячутся где-нибудь в глубинах Github’а и сторов.

Читать далее
Total votes 49: ↑48 and ↓1+56
Comments52

Если вы отказались от регулярных выражений, то теперь у вас три проблемы

Level of difficultyMedium
Reading time18 min
Views21K

Известная шутка программистов гласит, что если решение вашей проблемы включает в себя парсинг текста при помощи регулярного выражения, то теперь у вас есть две проблемы. Некоторые программисты, прочитав шутку, решают попробовать иной подход. Возможно, регулярные выражения не так уж нужны. Возможно, задачу можно решить простым split строки или чем-то подобным. Однако другие могут задуматься немного глубже и задаться вопросом: «А если я сделаю нечто настолько дерзкое, что в результате получу три проблемы?» Мой пост написан в таком духе!

В нём используется код на Python, однако его легко можно адаптировать под любой язык с поддержкой функций высшего порядка.
Читать дальше →
Total votes 55: ↑53 and ↓2+65
Comments70

Кащеева смерть — защищаем свои пароли с помощью аппаратного хранилища ключей Android

Reading time3 min
Views5.4K

Несколько лет назад меня начала посещать мысль, что менеджеры паролей всё-таки «для честных людей». Как раз все встречные и поперечные стали заявлять, что у них теперь сквозное шифрование… И настали типа спокойные и безопасные времена (ну если не считать миллиардов, которые крадут с криптобирж каждый второй день, прослушки всех этих чатов со сквозным шифрованием, слива баз паролей, взлома LastPass…)

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

Шли годы…

Читать далее
Total votes 13: ↑12 and ↓1+13
Comments3

Переходим на Go: 16 материалов для самостоятельного изучения языка

Level of difficultyEasy
Reading time5 min
Views43K

Привет! Меня зовут Владислав Попов, я автор курса «Go-разработчик» Яндекс Практикума. Когда-то я сам был студентом — хотел учиться Go, но такого курса в Практикуме не было, поступил на Python. Прошёл вводную часть — и тут стартовал желанный курс по Go. В тот же вечер оформил возврат и перепоступил. Попал в первый поток, прошёл его, и после сдачи итогового проекта мне предложили стать тестером курса «Продвинутый Go-разработчик».

Оба курса были ещё не идеальны — что-то требовало доработки, некоторые темы казались мне недостаточно раскрытыми. Я сообщил об этом команде курса и предложил варианты, что можно улучшить. В какой-то момент о них узнал продакт-менеджер — и так я получил приглашение поработать с командой Практикума. Мне предстояло разработать концепцию и внести предложения по рефакторингу курса, но я сделал бросок пантеры и написал несколько уроков с нуля. Команде они понравились. Так я стал работать в Практикуме.

За время работы с Go я понял, что сам язык не очень сложный и подходит даже в качестве первого, но нужно выучить синтаксис и погрузиться в некоторые особенности, которые отличают Go от других языков: например, интерфейсы и особенности встраивания. А ещё важно на старте хорошо знать Git и ориентироваться в работе SQL (причём любого).

Эта подборка составлена менторами нашего курса по Go-разработке для практикующих программистов. Она родилась благодаря коллективному разуму наших наставников, которые занимают позиции синьор-разработчиков на Go в разных компаниях.

Читать далее
Total votes 16: ↑12 and ↓4+11
Comments12

Бэкап данных с btrfs и LVM bash скриптами

Reading time4 min
Views20K
image

Уже было много постов о резервном копировании, особенно много для ОС Linux. Озаботился и я настройкой резервного копирования.
Требовалось создавать бэкапы системы, данных с примонтированного раздела и LVM томов (диски виртуальных машин). Были мысли использовать Bacula, т.к. знаком с ней, но поскольку дома только 1 компьютер клиент-серверная архитектура только создавала бы дополнительные сложности при восстановлении в случае повреждения системы. Значит систему и данные просто копируем, образ LVM раздела создаем с помощью dd. Хотелось делать резервную каждый день (хотя бы данных) и хранить минимум 14 дней. Но поиски готовых и простых решений, удовлетворяющих всем потребностям не увенчались успехом. А значит берем в руки bash и пишем свой велосипед. В этой статье я делюсь тем, что вышло.
Читать дальше →
Total votes 17: ↑14 and ↓3+11
Comments14

Уведомления о входах на сервер (SSH/TERMINAL) дешево и сердито

Reading time2 min
Views20K
Приветствую сообщество. Это первая публикация, далеко не профи-администратора, но просто захотелось поделиться короткой и простой наработкой, которая может оказаться полезной для такого же новичка как я сам.

Сложилось так, что потребовалось контролировать около 30 VDS-ок на Debian, которые мне благополучно «передали» под надзор (а я как бы больше программист, чем *nix-администратор). И первая мысль, что пришла в голову после базовых операций по смене и проверке доступов, была «Если я что-то упустил, хочу оперативно знать о подключениях». Есть рецепты (в том числе на Хабре) связывания события авторизации по SSH и почтовых уведомлений, которые я использовал как базу, но мне хотелось все-таки оперативности и некоторой информативности. В общем получил я в итоге вот такую «систему», которая в течение месяца вполне успешно работает и сообщает мне о любом факте авторизации.

  1. С помощью мануалов по API-телеграм получен токен и чат-ид для бота уведомлений (тут распространяться не буду, это все легко и просто находится в 1-2 строке поисковика).
  2. Создано два скрипта, код от которых будет размещен ниже. В принципе можно все сунуть и в один файл, но т.к. я хотел модульности, то я вынес в отдельный скрипт функцию отправки уведомления в телеграм-бота.
  3. В два файла настроек добавил вызов скрипта регистрации события входа на сервер и перезапустил службу SSH.

На все про все уходит минут 5-10, не больше. Ну а теперь собственно техничка.

PS. Все выполнялось на Debian9 x 64 (если это важно).
Читать дальше →
Total votes 42: ↑41 and ↓1+40
Comments14

Свобода воли. Основы пофигизма (Кохелет)

Level of difficultyEasy
Reading time13 min
Views7.1K

Давным‑давно, в те древние седые времена, когда еще существовали мудрые цари, один из них — по имени Экклезиаст, сформулировал основной постулат пофигизма. «Все есть суета сует», сказал он. Пример гражданина Экклезиаста показывает, что даже царь, никогда не слышавший о метафизике, атомных реакторах, демократии, компьютерах, феминизме и прочих удивительных явлениях природы, тем не менее может достигнуть истинного понимания реальности. Многие считают гражданина Экклезиаста фаталистом, что конечно же не соответствует действительности. Вышеназванный царь является пофигистом (разница между фатализмом и пофигизмом существенна, но о ней позже).

Вообще, существует множество заблуждений о пофигизме. В чем только нас пофигистов не обвиняют. Что мы бездельники, фаталисты, грешники, безвольные существа (все это утверждают люди, которые считают что ничего не делать это просто, что уже свидетельствует об их предвзятости). Но понятно, что нам пофигистам абсолютно пофиг что другие думают о нас. Еще эти предвзятые товарищи любят говорить: что тоже хотели бы стать пофигистами, но не могут (вообще‑то они лицемерят, не хотят они быть пофигистами, а лишь только пытаются подчеркнуть свою значимость, на их значимость нам тоже пофиг). Но они абсолютно правы; ведь невозможно указать путь к пофигизму. Пофигистом невозможно стать, им можно только быть. Невозможно стремиться к пофигизму, ведь это не путь, а состояние души.

В отличии от других философских течений в пофигизме нет догм. Какие догмы могут быть в пофигизме? Да никакие. И в то же время любые. И если вы скажете, как так? Ведь одно утверждение противоречит другому, вы будете абсолютно правы. И если вы будете настаивать, что такое невозможно, думаю вы понимаете какой будет ответ: нам пофиг. Любой пофигист посчитает такой ответ исчерпывающим и не нуждающимся в объяснениях. Но я все‑таки постараюсь разъяснить, ведь мне пофиг — что считает любой пофигист.

Читать далее
Total votes 25: ↑19 and ↓6+20
Comments45

Создаем диаграмму миграций Django проекта

Level of difficultyMedium
Reading time13 min
Views2.8K

Наверное странная идея — нарисовать диаграмму миграций проекта Django. Вроде как — а зачем? Но если у Вас некий достаточно большой и достаточно старый проект, да еще над которым постоянно работает хотя бы небольшая команда — разобраться в зависимостях миграций становится уже сложновато.

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

Итак приступим
Total votes 3: ↑3 and ↓0+3
Comments3

Настраиваем automount в Linux

Reading time4 min
Views14K

Сегодня мы поговорим про такую практику в Linux, как automount

Мы настроим сервер NFS для предоставления некоторых общих ресурсов и настроим автоматическое монтирование для автоматического доступа к этим общим ресурсам при необходимости.

Читать далее
Total votes 9: ↑6 and ↓3+4
Comments5

Локальный сервер для разработки (dns, nginx & git)

Reading time5 min
Views24K

В итоге мы получим домашний сервер с фейковым доменом, на поддомене которого мы развернём GitLab и настроим работу gitlab-runner'а для деплоя наших веб-проектов.

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

Читать далее
Total votes 15: ↑14 and ↓1+13
Comments14

Port Knocking для Windows

Reading time9 min
Views8.7K

Мне довольно часто приходится настраивать "одинокие" терминальные сервера(и не только терминальные) в "Облаках", с "легким, быстрым" доступом к нему по RDP.

Все объяснения для пользователей\заказчиков, что такие сервера должны быть доступны только с доверенных IP или через VPN воспринимаются "в штыки" и тогда приходится рисковать...

Конечно сервер защищается от Bruteforce(а), используются парольная политика, нестандартный порт, но все равно сервер постоянно под угрозой, в среднем в месяц можно увидеть по 15000 попыток подобрать пароль.

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

Первое что пришло в голову - Port Knocking, использую его на RouterOS, но беглое гугление показало что для Windows не существует подобного штатного функционала, поиск сторонних средств которые могли бы помочь организовать задуманное не дал результата,  больше покопавшись нашел только странные и страшные поделки на Java не внушавшие доверия.

Тогда решил написать PortKnocking для Windows. Написать его решил на PowerShell, чтоб не пришлось устанавливать на сервер дополнительно Java или Python.

Т.к. есть опыт c телеграм ботами(@SuperMon_Bot), решил добавить и информирование о работе PortKnocking через телеграм.

Определился, что вся задумка должна состоять из нескольких скриптов.

Читать далее
Total votes 10: ↑7 and ↓3+4
Comments34

Наглядное руководство по SSH-туннелям

Reading time8 min
Views130K

Прим. переводчика: автор статьи рассматривает практические сценарии и примеры организации SSH-туннелей. А для лучшего понимания того, как это работает, графически показывает потоки трафика.

Туннели SSH — это зашифрованные TCP-соединения между клиентами и серверами SSH. Трафик входит с одной стороны туннеля и прозрачно выходит с другой. Изначально этот термин относился к туннелям на виртуальных сетевых интерфейсах TUN/TAP, однако сейчас так обычно называют проброс портов SSH.

Читать далее
Total votes 75: ↑75 and ↓0+75
Comments17

Мобилизация: юридические рекомендации предпринимателям

Reading time8 min
Views8.6K

Всем привет! Меня зовут Роман Бузько, я пишу на юридические и финансовые темы преимущественно на VC c 2015 года. Это мой первый пост на Хабре. Статья представляет собой обновленную версию нашей недавней публикации. На следующей неделе будет продолжение, когда пыль осядет и будет чуть больше ясности.

Это и так должно быть понятно всем, но давайте я повторю: сейчас много вопросов, у всех паника, все быстро меняется, вокруг слухи и домыслы. Я тоже не знаю, что будет через неделю или месяц. Возможно, все из предложенного ниже будет уже не актуально или все законы поменяются.

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

Читать далее
Total votes 14: ↑11 and ↓3+17
Comments6

Taichi и 100-кратное ускорение Python-кода

Reading time12 min
Views35K

Python стал самым популярным языком во многих быстроразвивающихся областях, таких, как глубокое обучение и различные направления анализа и обработки данных. Но при этом за удобство работы с Python-кодом, за высокий уровень его читабельности, приходится платить производительностью. Конечно, все мы время от времени жалуемся на скорость работы программ, и Python, безусловно, не стоит винить во всех грехах. Несмотря на это, справедливым будет заявление о том, что природа Python, интерпретируемого языка, не способствует высокой производительности кода, особенно когда речь идёт о «тяжёлых» вычислениях (один из признаков таких вычислений — наличие в программе нескольких вложенных циклов).

Если вы когда-либо попадали в одну из следующих ситуация — тогда эта статья, определённо, написана для вас.

Читать далее
Total votes 53: ↑53 and ↓0+53
Comments5

Мобильные операторы и люди: война и мир

Reading time10 min
Views21K

1. Им друг без друга нельзя


В комментариях к статье про мобильных операторов много кто просил сделать продолжение и рассказать, как простой народ с “Большой Четверкой” взаимодействует. Что ж, рассказать там действительно есть чего, потому как людей у нас в стране много, все они разные, и на появление в зоне видимости подозрительных антенн все тоже реагируют… по-разному.

image
Читать дальше →
Total votes 72: ↑64 and ↓8+79
Comments142

Автоматическая расшифровка заказа c автоответчика (практическое применение транскрибатора)

Reading time8 min
Views1.4K

Стандартная ситуация: клиенты звонят в нерабочее время, попадают на автоответчик и диктуют на автоответчик заказ.

Была поставлена задача - в получающихся аудиофайлах вытаскивать смыслы и автоматически фиксировать заказ в CRM.

Читать далее
Total votes 4: ↑4 and ↓0+4
Comments9

Личный опыт: переезд на собственное хранилище репозиториев в GitLab CE

Reading time6 min
Views13K

На связи Саша Хрущев, технический директор IT-компании WINFOX. Рассказываю, как мы быстренько развернули свое независимое локальное хранилище репозиториев в GitLab CE, сколько времени это заняло и какие особенности вам нужно учитывать при переезде, чтобы все прошло гладко. 

Читать далее
Total votes 7: ↑5 and ↓2+4
Comments39

Information

Rating
Does not participate
Location
Уфа, Башкортостан(Башкирия), Россия
Date of birth
Registered
Activity

Specialization

Backend Developer
Middle
From 150,000 ₽
Git
OOP
Python
PostgreSQL
Linux
Django
Celery
Bash
Redis
SQL