Кстати, мы тут сейчас поднимаем продакшн нашей LMS (готовим курс к запуску) и гоняем по сети всякие ключи-пароли и прочую конфиденциальную информулечку.
Чтобы ниггадяи её не спёрли, шифруем её с GPG. Ыыы!
Про GPG у меня был видос здесь. Если коротенько, это open source утилита шифрования и подписи данных. Ты генерируешь с GPG постоянную пару — приватный ключ и публичный ключ, твой собеседник генерит свою пару, и вы обмениваетесь публичными ключами (и только публичными, приватные остаются у вас). Информация шифруется публичным ключом собеседника и может быть расшифрована только с его приватным ключом.
И никакой коварный Павлентий не получит доступа к вашим данным!
После установки GPG — на докер-контейнер с Debian поставился с
Экспорт своего публичного ключа, чтобы отправить его собеседнику:
В файле
И всёёёё! И понеслась!
Зашифровать файл
Появится файл
Вжух!
Чтобы ниггадяи её не спёрли, шифруем её с GPG. Ыыы!
Про GPG у меня был видос здесь. Если коротенько, это open source утилита шифрования и подписи данных. Ты генерируешь с GPG постоянную пару — приватный ключ и публичный ключ, твой собеседник генерит свою пару, и вы обмениваетесь публичными ключами (и только публичными, приватные остаются у вас). Информация шифруется публичным ключом собеседника и может быть расшифрована только с его приватным ключом.
И никакой коварный Павлентий не получит доступа к вашим данным!
После установки GPG — на докер-контейнер с Debian поставился с
apt install gpg — генерим пару ключей:gpg --gen-key
Указываем имя, email и пароль. По мейлу будет идентифицироваться эта пара ключей. Для примера, указали, alexey@yandex.ru.Экспорт своего публичного ключа, чтобы отправить его собеседнику:
gpg --export --armor --output alexey.pub alexey@yandex.ruВ файле
alexey.pub сохранился наш публичный ключ, который передаём собеседнику. Импорт публичного ключа собеседника из файла sergey.pub происходит так:gpg --import sergey.pubИ всёёёё! И понеслась!
Зашифровать файл
my-secret-information.txt ключом собеседника:gpg --encrypt --sign -r sergey@yandex.ru my-secret-information.txtПоявится файл
my-secret-information.txt.gpg — это и есть зашифрованный файл. Отправляем его собеседнику и он расшифровывает его командой:gpg my-secret-information.txt.gpgВжух!
👍239🔥62❤12😁7
Давайте рассмотрим некоторые абстрактные поинты.
1) Врать в резюме — ништяк
2) Врать работодателям и делать свою работу за 2 часа в день, чтобы иметь возможность остальное время работать на другой работе или гонять лысого — ништяк
3) Менять работодателей хоть каждую неделю для роста ЗП — ништяк
Работают ли такие подходы? Пф, конечно. Вообще работает много интересных подходов.
Можно брать в долг и не отдавать. То есть устроился на работу в компанию, прозанимался у коллег и свалил в другую компанию, сливаясь от вопросов. Профит.
Можно тырить запчасти у рабочих ноутов или скрепки с рабочих столов.
Можно ныкать туалетную бумагу из офиса, чтобы не покупать дома свою.
Можно продавать конкурентам секреты со своей текущей работы.
Можно без палева хантить коллег в компанию конкурентов и зарабатывать на этом.
Можно... Да много чо можно. Гипотетически.
Но у таких соблазнительных способов жить эту жизнь есть одна противная проблема — это работает на коротком промежутке времени и бьёт по башке на длинном. Вообще без эзотерики, тут масса вполне очевидных, лежащих на поверхности причинно-следственных связей вырисовывается.
Приятно верить в то, что можно обустроить свою жизнь легко. Наврать в резюме, обмануть тут, там. Капитализм, не мы такие и так далее. Такой взгляд легко продаётся. Продать то, что для долгосрочного стабильного и большого успеха нужны соооовсем другие подходы, куда менее соблазнительные — сильно тяжелее.
Think about it!
https://youtu.be/4CJRM7j9qbM
1) Врать в резюме — ништяк
2) Врать работодателям и делать свою работу за 2 часа в день, чтобы иметь возможность остальное время работать на другой работе или гонять лысого — ништяк
3) Менять работодателей хоть каждую неделю для роста ЗП — ништяк
Работают ли такие подходы? Пф, конечно. Вообще работает много интересных подходов.
Можно брать в долг и не отдавать. То есть устроился на работу в компанию, прозанимался у коллег и свалил в другую компанию, сливаясь от вопросов. Профит.
Можно тырить запчасти у рабочих ноутов или скрепки с рабочих столов.
Можно ныкать туалетную бумагу из офиса, чтобы не покупать дома свою.
Можно продавать конкурентам секреты со своей текущей работы.
Можно без палева хантить коллег в компанию конкурентов и зарабатывать на этом.
Можно... Да много чо можно. Гипотетически.
Но у таких соблазнительных способов жить эту жизнь есть одна противная проблема — это работает на коротком промежутке времени и бьёт по башке на длинном. Вообще без эзотерики, тут масса вполне очевидных, лежащих на поверхности причинно-следственных связей вырисовывается.
Приятно верить в то, что можно обустроить свою жизнь легко. Наврать в резюме, обмануть тут, там. Капитализм, не мы такие и так далее. Такой взгляд легко продаётся. Продать то, что для долгосрочного стабильного и большого успеха нужны соооовсем другие подходы, куда менее соблазнительные — сильно тяжелее.
Think about it!
https://youtu.be/4CJRM7j9qbM
YouTube
Программист должен работать 2 часа в день!
Это видео можно воспринимать как мнение по поводу высказывания Антона по поводу того, что хороший программист должен работать 2 часа в день.
Поддержать меня на Бусти и получить доступ к доп контенту: https://boosty.to/mflenov
Обо мне: http://www.flenov.ru…
Поддержать меня на Бусти и получить доступ к доп контенту: https://boosty.to/mflenov
Обо мне: http://www.flenov.ru…
👍217❤20😁16✍8🔥4
Зашел тут на канал к Егору Бугаенко, а он — внезапно — кино снял! Короткометражку. Хорошо.
https://www.youtube.com/watch?v=9NYfVVTkqTg
https://www.youtube.com/watch?v=9NYfVVTkqTg
YouTube
Чашка | Mug | Short Film | короткометражный фильм (2023)
IMDB: https://www.imdb.com/title/tt30742076/ (очень ждем отзывы и оценки!)
Actor: Oleg Vasilkov
Directed by: Yegor Bugayenko
Photography: Maxim Krotkov
Music by: Anna Bulgakova
Sound by: Artem Tantsura
Editor: Stanislav Ilinsky
Executive Producer: Nikita…
Actor: Oleg Vasilkov
Directed by: Yegor Bugayenko
Photography: Maxim Krotkov
Music by: Anna Bulgakova
Sound by: Artem Tantsura
Editor: Stanislav Ilinsky
Executive Producer: Nikita…
👍49🔥9😁5✍2
А вот у нас есть же здесь великолепные специялисты из всяких хороших компаний, расскажите мне-бурундуку, пжалста, а с чем связано в альфа-банке, в яндексе и в ряде других компаний ограничение на используемые в пароле спецсимволы? Вот восклицательный знак, видите ли, можно в пароле использовать, а вопросительный — нннет.
Чем меньше разных символов в пароле, тем он безопаснее, да?
Новоизобретённая криптография от супер-решателей алгоритмических задач поддерживает только восклицательный, но никак не вопросительный знак?
Вопросы собстна всё те же
Чем меньше разных символов в пароле, тем он безопаснее, да?
Новоизобретённая криптография от супер-решателей алгоритмических задач поддерживает только восклицательный, но никак не вопросительный знак?
Вопросы собстна всё те же
Telegram
Что-то происходит
Качество ИТ-продуктов всё же стремительно падает. Не в России, вообще падает.
Бесконечное количество конференций, размусоливающих то, как делать (якобы) надо и как (якобы) не надо, новые практики, методологии, инструменты, фреймворки — а оно всё хуже и хуже…
Бесконечное количество конференций, размусоливающих то, как делать (якобы) надо и как (якобы) не надо, новые практики, методологии, инструменты, фреймворки — а оно всё хуже и хуже…
😁112👍12✍2
Если вдруг кто-то не знает, то получить текущую дату с таймзоной в Python уже давно (с 3.9) можно без pytz со стандартной либой:
Ляпота!
from datetime import datetime
from zoneinfo import ZoneInfo
now = datetime.now(ZoneInfo("Europe/Moscow"))
Ляпота!
👍303✍43🔥25❤15😁7
Аааа вот в гошечке, вот в гошечке:) Пакет работы со временем вообще кайф.
Вот, например, измерение времени между двумя точками:
Ы, каков! Обрати внимание на наличие в стандартной либе time.Since и его форматирование при выводе в строку — сразу красиво, не надо высчитывать нули самому сидеть. Или как интервалы задаются, через константы вроде time.Microsecond. Вах-вах.
И, конечно, это ещё не говоря о чисто-гошных приколдесах в духе select + time.After для ограничения максимального времени работы корутины. Хитры бобры!
Да, этот декабрь в Ботаним — месяц Go:) А в конце декабря стартуем DDD Хононова.
Вот, например, измерение времени между двумя точками:
package main
import (
"fmt"
"time"
)
func main() {
start_time := time.Now()
sum := 0
for i:=0; i < 1_000_000; i++ {
sum++
}
fmt.Printf("прошло времени: %v", time.Since(start_time))
// прошло времени: 734.209µs
time.Sleep(1 * time.Microsecond)
}
Ы, каков! Обрати внимание на наличие в стандартной либе time.Since и его форматирование при выводе в строку — сразу красиво, не надо высчитывать нули самому сидеть. Или как интервалы задаются, через константы вроде time.Microsecond. Вах-вах.
И, конечно, это ещё не говоря о чисто-гошных приколдесах в духе select + time.After для ограничения максимального времени работы корутины. Хитры бобры!
Да, этот декабрь в Ботаним — месяц Go:) А в конце декабря стартуем DDD Хононова.
👍120🔥24❤10😁3✍1
Ловите лайфхакушку.
Как гласят старцы, в питоне циклические импорты этокосяк недоразумение, которое сигнализирует чаще всего о проблеме в коде — если два модуля импортируют друг друга, то надо подумать, кто виноват почему так случилось и кого бить как этого избежать (если 2 модуля так сильно связаны, то почему бы не сколбасить их в один модуль, например?).
Однако иногда импорт в одном из модулей нужен только для type hints и это не всегда сигнализирует о проблеме. Ну, кроме того, что код не работает из-за циклического импорта:)
Тогда тот модуль из двух, который импортирует зависимости только для типизации (
Вот эта магическая константа
И так всё работает по красоте. Вжух!
Как гласят старцы, в питоне циклические импорты это
Однако иногда импорт в одном из модулей нужен только для type hints и это не всегда сигнализирует о проблеме. Ну, кроме того, что код не работает из-за циклического импорта:)
Тогда тот модуль из двух, который импортирует зависимости только для типизации (
class_a.py), можно написать так (class_b.py тут это второй модуль):# class_a.py
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from class_b import ClassB
class ClassA:
some_b_instance: "ClassB"
# class_b.py
from class_a import ClassA
class ClassB:
pass
Вот эта магическая константа
TYPE_CHECKING принимает значение True только когда этот код проверяется тайп-чекером вроде mypy или pyright. В рантайме она False. И обратите внимание, что в type hint ClassB обёрнут в строку. Оборачивание в строку можно убрать, если добавить импорт from __future__ import annotations.И так всё работает по красоте. Вжух!
👍200🔥36✍33❤13😁7
tinypng — отличный быстрый бесплатный веб-сервис, жмущий PNG, JPG и WebP-изображения, значительно уменьшая их размер.
О способах сделать это кодом я рассказывал здесь и здесь, но если надо просто пожать картинку для, скажем, блога, чтобы загружалось быстрее — tinypng отлично подходит.
О способах сделать это кодом я рассказывал здесь и здесь, но если надо просто пожать картинку для, скажем, блога, чтобы загружалось быстрее — tinypng отлично подходит.
YouTube
Графика для веба, которую все используют неправильно. Про JPG/PNG, WebP и SVG, а также мощь HTML5
Мой курс «Хардкорная веб-разработка» — https://course.to.digital
Книжный клуб Ботаним!, где мы читаем хорошие ИТ-книги: https://botanim.to.digital/
Telegram: https://t0digital.t.me
Сказать спасибо за это видео можно здесь — https://boosty.to/digitalize.team…
Книжный клуб Ботаним!, где мы читаем хорошие ИТ-книги: https://botanim.to.digital/
Telegram: https://t0digital.t.me
Сказать спасибо за это видео можно здесь — https://boosty.to/digitalize.team…
🔥67👍27❤7😁2
Перевожу тут материалы курса из Notion в Obsidian и подключаю git. Удивился, что git из коробки на маке не умеет нормально отображать кириллические имена файлов. Чтобы это пофиксить, достаточно выполнить команду:
Кстати, да, на скрине видно название курса. Это будет МЯСО😂
git config --global core.quotePath false
Кстати, да, на скрине видно название курса. Это будет МЯСО😂
🔥163👍42😁16❤11✍6
Смотрю тут на курсы всякие разные.
Вот вам глава «Углублённый Python» курса по питону одной большой компании!
Как создавать функции и классы и работать с list, set, dict — это вам не хрен моржовый, а углублённый Python😂
А что тогда неуглубленный, такой вот, поверхностный Python, что в него входит? print и всё✊?
Чёт как-то я не удивлен, что с такими углублёнными познаниями на собеседы-то не зовут негодяйские эйчары:)))
Вот вам глава «Углублённый Python» курса по питону одной большой компании!
Как создавать функции и классы и работать с list, set, dict — это вам не хрен моржовый, а углублённый Python😂
А что тогда неуглубленный, такой вот, поверхностный Python, что в него входит? print и всё✊?
Чёт как-то я не удивлен, что с такими углублёнными познаниями на собеседы-то не зовут негодяйские эйчары:)))
😁292👍43🔥16❤7✍6
Forwarded from IT-Helpers 🧠
Меня всегда радовал в человеке дух предпринимательства. Я считаю что за людьми, которые постоянно хотят создавать что-то новое - будущее!
Бытует мнение, что "предпринимательская жилка" есть не у многих, я этот тезис не разделяю. Я считаю, что если человек достиг определенного уровня в своём деле - это "дело" можно смело превращать в бизнес.
В этом мое мнение сходится с автором канала Диджитализируй, Алексеем. Мы поговорили и подняли различные вопросы в сфере ИТ и не только.
Приятного просмотра:
https://youtu.be/CPKlILIYLw8
@IT_Helpers
Бытует мнение, что "предпринимательская жилка" есть не у многих, я этот тезис не разделяю. Я считаю, что если человек достиг определенного уровня в своём деле - это "дело" можно смело превращать в бизнес.
В этом мое мнение сходится с автором канала Диджитализируй, Алексеем. Мы поговорили и подняли различные вопросы в сфере ИТ и не только.
Приятного просмотра:
https://youtu.be/CPKlILIYLw8
@IT_Helpers
👍103❤20😁5🔥4
Листаю тут книжку по инфобезу. Забавное примечание:)
ПРИМЕЧАНИЕ. Если вы пишете или переписываете низкоуровневое приложение с нуля, всегда выбирайте язык Rust вместо С или С++. Rust — это новый язык программирования, который может выполнять низкоуровневые задачи так же хорошо, как С и С++, но, в отличие от них, Rust безопасен по памяти. Таким образом, при использовании этого языка проверка границ больше не потребуется, а переполнение переменных для создания потенциальных уязвимостей становится невозможным. По мнению создателя браузера Mozilla (Firefox), 73% уязвимостей только в стилевом компоненте браузера никогда бы не возникли, если бы он был написан на Rust, а не на С/С++. Даже одно это проектное решение может очень сильно сократить поверхность атаки, что сводит на нет все приемлемые деловые аргументы, которые могли бы оправдать написание новых приложений на С, когда доступен Rust. «Но мы умеем программировать на С» является недопустимой причиной не изучать и не использовать Rust.
🔥212😁79👍49✍19❤6
А чтоооо это у нас тут под ёлочкой, а это «Хардкорная веб-разработка» зарелизилась!
Все, кто ждал курс. Ребята, девушки, я с вами:) Курс вышел. Мне хотелось успеть до праздников, чтобы вы могли на выходных начать его проходить. Запускаемся.
Видео о курсе
41 глава и 798 уроков. Записаны пока не все главы, курс будет пополняться, но возможно и вместе с этим дорожать, текущая цена 100 тысяч рублей.
Спрашивали о рассрочке — поэтому я её подключил, вы можете оплатить всё целиком или в рассрочку без процентов. При этом это всё равно кредит, а кредиты зло. Не хочу продавать вам любой ценой, поэтому идите в рассрочку только если уверены, что это не станет для вас проблемой.
Посмотрите видео о курсе и если готовы — залетайте!
Все, кто ждал курс. Ребята, девушки, я с вами:) Курс вышел. Мне хотелось успеть до праздников, чтобы вы могли на выходных начать его проходить. Запускаемся.
Видео о курсе
41 глава и 798 уроков. Записаны пока не все главы, курс будет пополняться, но возможно и вместе с этим дорожать, текущая цена 100 тысяч рублей.
Спрашивали о рассрочке — поэтому я её подключил, вы можете оплатить всё целиком или в рассрочку без процентов. При этом это всё равно кредит, а кредиты зло. Не хочу продавать вам любой ценой, поэтому идите в рассрочку только если уверены, что это не станет для вас проблемой.
Посмотрите видео о курсе и если готовы — залетайте!
YouTube
Премьера курса «Хардкорная веб разработка» от Диджитализируй!
https://course.to.digital/
🔥262🎉85👍57❤17✍7
В хлопотах тут упустил, что Диджтализируй удостоен награды «Золотой Соер 2024»! Юхууу, вот это да!
Большое спасибо всем, кто голосовал и большое спасибо Соеру! По такому поводу надо нам надо бахнуть совместный подкаст:)
Большое спасибо всем, кто голосовал и большое спасибо Соеру! По такому поводу надо нам надо бахнуть совместный подкаст:)
❤164🎉125🔥31👍21😁6
This media is not supported in your browser
VIEW IN TELEGRAM
Телеграм работает всё лучше, всё надёжней, Павлентий докручивает, оптимизирует, фигачит и днём, и ночью, всегда фигачит, только когда бицуху качает, тогда не фигачит, а так всегда фигачит!
ЗЫ. Реакции то есть, то нет — верхний элемент попапа.
ЗЫ. Реакции то есть, то нет — верхний элемент попапа.
😁161👍32❤9✍5🎉2
Диджитализируй!
Телеграм работает всё лучше, всё надёжней, Павлентий докручивает, оптимизирует, фигачит и днём, и ночью, всегда фигачит, только когда бицуху качает, тогда не фигачит, а так всегда фигачит! ЗЫ. Реакции то есть, то нет — верхний элемент попапа.
Нууу и вот и ладненько, нууу и вот и что же ж тут поделать, ну вылезло малость, щас Павлентий протеин доест и всё поправит, может быть, однажды, хотя и так сойдёт-то, чего ж уж!
CSS is awesome! Нативный клиент телеграмушки:)
😁170👍14✍5🔥5🥰2
Media is too big
VIEW IN TELEGRAM
😁124🔥22👍11🥰5✍4