CoderLIfe – Telegram
CoderLIfe
35 subscribers
33 photos
1 video
10 links
Немного про жизнь кодера, интересности и рутина. Про IT в целом. Свое мнение по некоторым вопросом. Немного кода. Минимум заумности. Может немного юмора.
#it
#php
#develop
#javanoscript
#coder
#itlife

Админ @LimboFog
Download Telegram
git rm --cached

Что это за команда, что делает, зачем она вообще нужна⁉️

🖊📚📗🗂📎
Разберем такой кейс. У вас есть проект, вы там работаете, комитите что-то, пушите и т.д. И в один момент вам понадобилось чтобы файл README.txt например, перестал отслеживаться гитом. То есть чтобы вы вносили в него правки, но изменению не отображались. Для этого вы добавляете этот файл в .gitignore, но чуда не происходит. Даже несмотря на то что он теперь в игноре, изменения в нем все равно отображаются. Почему так происходит и как сделать чтобы работало так как надо?

⚙️⚙️⚙️⚙️⚙️
Все очень просто. Git устроен так что если какой либо файл уже попал в индекс (то есть уже однажды был закомичен) то он продолжит отслеживать этот файл несмотря на .gitignore. Чтобы исключить его из отслеживания есть 2 пути.

1️⃣ - ну такое. Это костыльный вариант, хотя многие именно так и делают. Нужно удалить файл который вы хотите прекратить отслеживать, затем закомитить его удаление, затем добавить этот файл в .gitignore и уже после этого можете вернуть этот файл обратно и вот после этого он перестанет отслеживаться гитом.

2️⃣ - более правильный и продвинутый метод - это использовать команду git rm --cached. Что делает эта команда - она удаляет файлы переданные ей из индекса. То есть после того как вы сделаете git rm --cached README.txt гит выпилит этот файл из индекса и он будет отображаться как какбудто только что созданный и еще ни разу ни закомиченный. После этого можно уже добавить этот файл в .gitignore и продолжить работу. README.txt больше не отслеживается. Согласитесь что это выглядит намного профессиональнее.

⚠️ P.S. GIT супермощьная штука и крайне важная в командной разработке, его надо знать хорошо. 👨‍🏫
Вторая серия про побитовые операции
Сегодня посмотрим на исключающее ИЛИ (^)

⚠️⚠️⚠️
Суть исключающего ИЛИ в том, что оно дает единицу только в том случае, если только один из операнодов единица.

✍️📝✏️
Давайте рассмотрим на примере 3 ^ 4. Далее смотрим на картинку. Сначала представим тройку и четверку в двоичном виде. Получаем 011 и 100. Затем сравниваем поочереди каждый бит с соответствующим и записываем 1 если только один из сравниваемых битов это единица, в остальных случаях записываем ноль. Получается 111, что будет 7 если перевести в десятичную систему. Итого 3 ^ 4 = 7.

‼️⁉️
У исключающего ИЛИ есть одна интересная особенность. Это полностью обратимая операция. То есть если к результату первого нашего примера еще раз применить исключающее ИЛИ с тем же операндом, то в результате мы получим исходное число. Вот так 7 ^ 4 = 3.

🉐🉐㊙️㊗️
Это как говорят можно применить в простейшей шифрограмме. То есть один человек например перводит текст в числа и делает над ними операцию исключающего ИЛИ с каким то заранее договоренным числом. Затем тот хочет прочитать это, делает еще раз исключающее ИЛИ с этим же числом и получает в результате исходный текст.

🧮📏📐
Вот например я при помощь метода JS charCodeAt() и операнда 5 закодировал некоторую фразу. Кому интересно можете раскодировать ее.
109 96 105 105 106 37 114 106 119 105 97
Минутка абсурда
Или почему в MYSQL кодировка UTF-8 на самом деле не UTF-8

🧭🕰⌛️💰
Этот небольшой материал возможно сохранит вам в будущем пару часов мануалов и гугления. Все дело в том что если вы попытаетесь в MYSQL сохранить эмодзи символы, то скорее всего у вас не получится. Потому что как большинство нормальных людей при создании таблицы вы указали ей кодировку UTF-8. Как известно эмодзи символы состоят из 4 байт в отличии от например букв алфавита, которые состоят из 2 байт. И все бы ничего ведь кодировка UTF-8 поддерживает четырехбайтные символы, но дело в том что в MYSQL кодировка UTF-8 не является таковой, так как по известным только создателям причинам они решили ее урезать и теперь в MYSQL она поддерживает только 3 байта максимум 🤦‍♂️🤦‍♀️🤣. По этому когда вы захотите сохранить четырехбайтную строку типа эмодзи, то получите что то типа:
 Incorrect string value: '\xF0\x9F\x93\x9E \xF0...' for column 'data' at row 1

🚴‍♀️🦿🧠🦽🦼👏
Чтобы решить созданную самими же проблему, была сделана кодировка utf8mb4, которая уже и есть настоящая UTF-8 и поддерживает четырехбайтные строки.

⚠️Если вы планируете хранить в базе смайлики, то указываете кодировку utf8mb4.
Чистый код

⚠️👍Передача логического значения функции — воистину ужасная привычка. Она немедленно усложняет сигнатуру метода, громко провозглашая, что функция выполняет более одной операции.

©️Р. Мартин, «Чистый код»

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

//getUserId() и getLevelAcces() понятно, а вот что за true!?
getSome(getUserId(), getLevelAcces(), true);

//ну тут все ясно
getSomeAll(getUserId(), getLevelAcces());
Запутываем код еще больше

☝️🧙‍♂️
Наверное в каждом языке есть свои интересные фичи. Когда впервые про них узнаешь они кажутся очень классными и так и хочется их использовать в своем проекте. Сегодня о таких фичах и поговорим. Для примера возьму магические методы в PHP, а конкретно __invoke.

🔨🔧💻🔬🔭
То что хотелось бы донести - это то что в абсолютном большинстве случаем, когда я встречал такие фичи в коде, они были абсолютно не оправданы и только усложняли понимание написанного. Все это можно было бы написать тривиальными методами и это было бы в разы понятнее. Но судя по всему автор увидел интересную фишечку и непременно решил ее использовать, не смотря на то нужна ли она или нет. Могу сравнить это только с тем как забивать гвозди микроскопом. Результат то будет возможно и одинаковый, но блин зачем?

❇️❇️❇️
Вот на первой картинке кусок кода. Понять его не так то просто, не правда ли. Его реализация на второй картинке. А теперь представьте что классов может быть не только One и Two, а например таких классов может быть пять и они разбросаны по всему проекту. И конечно же они не объявляются там где используются, а приходят в виде параметра как на третей картинке. Уверяю вы проведете незабываемое время за разгадыванием того как же работает этот код, и что он вообще делает?

✏️📝🛂🔰
Что хочу сказать, давайте использовать определенные инструменты если они действительно нужны. И всякий раз думать а насколько будет понятен мой код если я использую тот или иной инструмент.
Что то я отстал от геймдева)

👨‍🦯🧙‍♂️👨‍🦳
Причем отстал так не хило, похоже что на целую вечность. А именно - вчера случайно наткнулся на новость что GTA V теперь раздают бесплатно. И больше из любопытства, чем от желания поиграть решил "купить". Интересно же посмотреть на аттракцион невероятной щедрости, да и тут как бы 1500 р. сэкономил)

👀😳
В общем начал скачивать и немного, так скажем, удивился. Весит то игрушка 95G однако. 95 Карл! Это ж вся моя жизнь, и еще плюс 94G. Я конечно давненько не играл, ни во что, может оно конечно так сейчас и принято но блин.

🤧😭😢
Кстати в стиме она до сих пор платная, должно быть обидно тем кто ее реально покупал, соболезную мир жесток.

😡🤬🤯
В общем так я и не поиграл, сначала пришлось сто пятьсот аккаунтов зарегать, привязать, подтвердить, запротоколировать, завизировать блин, а потом еще игра качалась, потом лаунчер, еще какая то хрень. В общем когда запустил просто проверил что работает, но уже не до игры было.

Если еще кому то надо то вот ссылка.
Кодируем картинки

🖼🔛🖥
Способ, как можно сократить количество запросов к серверу, а значит и нагрузку - закодировать картинки в base64. Особенно это эффективно будет если у вас например множество мелких картинок, за каждой из который браузер делает запрос на сервер.

⚠️ Нам нужны будут две вещи - это сама кодировка base64 и специальный протокол Data URL.

Base64 - это кодировка, которая позволяет перевести данные, в том числе и двоичные, в последовательность символов. Такую последовательность в последующем можно передать например по http, например с помощью POST запроса.

Data URL - протокол, позволяющий встроить практически любые данные прямо в документ. То есть относительно нашего примера с картинкой - браузер, встретив Data URL не будет делать запрос на сервер, а просто преобразует его обратно в картинку и отобразит. Data URL имеет вид data:[MIME тип данных][данные в base64]

🖼 🔛 🈵🈴㊙️🉐
Чтобы закодировать картинку в base64 есть много онлайн инструментов, разбирать как это происходит думаю нет смысла.


Вот пример Data URL, его вы можете вставить прямо в адресную строку, можно вставить в атрибут "src" тэга "img" и браузер отобразит эту картинку (конечно если картинка очень большая, то и строка Data URL тоже будет очень длинная):

data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDADIiJSwlHzIsKSw4NTI7S31RS0VFS5ltc1p9tZ++u7Kfr6zI4f/zyNT/16yv+v/9////////wfD/////////////2wBDATU4OEtCS5NRUZP/zq/O////////////////////////////////////////////////////////////////////wAARCAAKAAoDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwCR3aFniic+VkZbGfLz/n/JqwtnblRhd3HXceaLJQbRRgc5z781l1nex1qLk2k7W/E//9k=
This media is not supported in your browser
VIEW IN TELEGRAM
🤷‍♂️🤹‍♂️🎲

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

Вот такая вот забавная игрушка с помощью которой можно взорвать например статейку про винду на Лурке, ну или про кота Шрёдингера на худой конец (статейка кстати более чем годная).

А вот страница приложения чтобы поиграться.
Пароль для wi-fi

Вопрос конечно холиварный, вот например в Ubuntu 19.10 считается что он должен быть не короче 8 символов. Ну ладно, ну пусть при создании и настройки wi-fi будет ограничение в 8 символов, но блин при подключении! Ну правда чем может быть обусловлено данное ограничение? Сегодня попытался подключиться к сети пароль у которой был из 6 символов и не смог. Потому что родное убунтовское диалоговое окошко говорит что пароль должен быть не менее 8 символов. Замкнутый круг. В следующем релизе предлагаю вообще запретить подключение к сетям не прошедшим сертификацию "Wi-fi seSurity consortium" (выдуманная организация, будет проверять сеть на безопасность, политкорректность и COVID-19).
Лично мое мнение в отношении паролей - длинна и набор символов должен быть такой какой хочет пользователь. Если мне хочется пароль из 4 символов, то разрешите мне оставить такой пароль.

P.S. модалка на картинке не оригинальная, взял из интернета, потому как когда оригинальная открыта еще и скриншоты не работают.