Про єнотів та IT

Description
Привіт, мене звати Біпа. Я самостійно вивчаю веб-розробку і ділитимусь тут своїми how-to та цікавинками зі сфери IT та програмування.
Я: @Kurusa
Advertising
We recommend to visit
Mash
Mash
3,119,580 @mash

Прислать новость, фото, видео, аудио, бересту: @in_mash_bot

Покупка рекламы: @marina_mousse

Помахаться и обсудить новости: @mash_chat

Регистрация в перечне РКН:
https://knd.gov.ru/license?id=6726d0b5db0c1931b12fc77f&registryType=bloggersPermission

Last updated 5 hours ago

Из России с любовью и улыбкой :)

From Russia with love and a smile :)

Chat - @ShutkaUm

@Shutka_U

Last updated 1 month, 2 weeks ago

Почистили канал, тут будут только реакты на ТВ шоу

Ожидаем ответа от ТВ

3 years, 7 months ago

https://www.statlect.com/

Statlect

Statlect, the digital textbook | Probability, statistics, matrix algebra

Online book containing hundreds of lectures on probability, statistics and matrix algebra. Ideal for self-study.

3 years, 8 months ago

Корисні поради і практики:

https://github.com/alexeymezenin/laravel-best-practices/blob/master/ukrainian.md

https://github.com/jupeter/clean-code-php

GitHub

laravel-best-practices/ukrainian.md at master · alexeymezenin/laravel-best-practices

Laravel best practices. Contribute to alexeymezenin/laravel-best-practices development by creating an account on GitHub.

Корисні поради і практики:
3 years, 10 months ago

#IT_guideЧитати

Telegraph

Zval (Zend value) - базова структура даних в PHP

zval виглядає так: typedef struct \_zval\_struct { zend\_uchar type; zvalue\_value value; zend\_uint refcount\_\_gc; zend\_uchar is\_ref\_\_gc; } zval; zend\_uchar type (тип змінної) зберігається як мітка, яка приймає одне з 8 значень, яке відповідає 8 типам даних в…

[#IT\_guide](?q=%23IT_guide) • [Читати](https://telegra.ph/Zval-Zend-value---bazova-struktura-danih-v-PHP-02-04)
3 years, 10 months ago

https://howhttps.works/ru/why-do-we-need-https/

howhttps.works

How HTTPS works

***🙀*** A cat explains how HTTPS works...in a comic! ***😻***

Про єнотів та IT
4 years ago
4 years ago

Общие принципы разработки хорошего кода, а именно про DRY, KISS, YAGNI и почему нельзя возвращать NULL. По-сути, первые 3 говорят говорят про очевидные вещи, но иногда разработчики про них забывают.

DRYdon't repeat yourself— нарушения принципа DRY называют WET — "Write Everything Twice" или "We enjoy typing"
— не допускай повторяющихся участков кода, на уровне функций, также не допускай классов с повторяющимся функционалом

```
KISS

```
keep it simple, stupid или keep it short and simple— нет смысла реализовать дополнительный функционал, который возможно когда-нибудь пригодится
— бессмысленно делать реализацию сложной бизнес-логики, которая учитывает в себе все возможные варианты
— нет смысла подключать огромную библиотеку, если вам от нее нужна только пара функций
— нужно держать компоненты своей системы (классы, методы) в максимально простом, не осложнённом, не перегруженном состоянии
— перекликается с Single responsibility, Interface Segregation принципами из SOLID

```
YAGNI

```
you aren't gonna need it— прежде чем писать новый компонент/функцию подумай: а нужен/на ли она тебе вообще? Может это можно не делать вообще? Или по крайней мере сделать это изящнее, проще, умнее, в рамках уже существующего/ей компонента/функции, не добавляя лишнего
— заказчик не должен оплачивать то, что он не заказывал
— бесплатных функций в продуктах не бывает
— ненужные новые функции могут впоследствии помешать добавить новые нужные
— новые функции должны быть отлажены, документированы и сопровождаться
— добавление новой функциональности может привести к желанию ещё более новой функциональности, приводя к эффекту "снежного кома"

почему нельзя возвращать NULL— накладывается неявное ограничение на код, который должен проверять значение на NULL
— обработка ошибок вручную

Мне нравится описание Filip Hanik всех этих принципов:
Разбивайте задачи на подзадачи которые не должны по вашему мнению длиться более 4-12 часов написания кода
Разбивайте задачу на множество более маленьких задач, каждая задача должна решаться одним или парой классов
Сохраняйте ваши методы маленькими. Каждый метод должен состоять не более чем из 30-40 строк. Каждый метод должен решать одну маленькую задачу, а не множество случаев. Если в вашем методе множество условий, разбейте его на несколько. Это повысит читаемость, позволит легче поддерживать код и быстрее находить ошибки в нём. Вы полюбите улучшать код.
Придумайте решение задачи сначала, потом напишите код. Никогда не поступайте иначе. Многие разработчики придумывают решение задачи во время написания кода и в этом нет ничего плохого. Вы можете делать так и при этом придерживаться выше обозначенного правила. Если вы можете в уме разбивать задачу на более мелкие части, когда вы пишете код, делайте это любыми способами. И не бойтесь переписывать код ещё и ещё и ещё… В счёт не идёт число строк, до тех пор пока вы считаете что можно ещё меньше/ещё лучше.
Не бойтесь избавляться от кода. Изменение старого кода и написание нового решения два очень важных момента. Если вы столкнулись с новыми требованиями, или не были оповещены о них ранее, тогда порой лучше придумать новое более изящное решение решающее и старые и новые задачи.

4 years ago

Прочла об одном забавном баге (хотя для разработчиков он не был забавным) — как-то в Израиле проходили испытания нового процессора для автопилота от фирмы Моторолла для истребителей (да, они делали не только телефоны) и все было хорошо, пока внезапно в полете происходит общий сброс процессора, автопилот выключается на полном ходу, пилоты переходят на ручное управление и сажают истребитель. Все ломают голову, прогоняют тест за тестом - на тестовом стенде все хорошо, в полете за пределами Израиля — все хорошо, на испытаниях в Израиле — опять та же проблема, что была. Наконец, проанализировав каждую строчку кода нашли в чем была проблема. В вычислениях автопилота использовался такой параметр как высота над уровнем моря. При этом разработчики логично предположили, что он не может быть в полете равен нулю или меньше нуля — автопилот же для самолета, а не подводной лодки. Но есть такое уникальное место на Земле и, находится оно в Израиле, где земля находится ниже уровня моря — это Мертвое море. Подлетая к нему переменная получала значение сначала 0, а потом и отрицательное. Уже при значении 0 происходило деление на ноль и программный сброс процессора.

4 years ago

#IT_guideЧитатьЗдесь я описала такие шаблоны GRASP, как Information Expert, Creator, Controller и Low Coupling и High Cohesion.
Буду только рада дискашену и/или потыканиям если что-то поняла не так??

Telegraph

GRASP — обобщенные рекомендации для проектирования систем

Information Expert информация должна обрабатываться там, где она содержится кто должен знать кол-во комментариев к посту? (comments to post) кто должен знать общее кол-во комментариев в блоге? (comments to blog) Необходимо определить, кто из участников системы…

[#IT\_guide](?q=%23IT_guide) • [Читать](https://telegra.ph/GASP--ehto-obobshchennye-rekomendacii-dlya-proektirovaniya-sistem-12-04)Здесь я описала такие шаблоны **GRASP**, как **Information Expert, Creator, Controller** и **Low Coupling и High Cohesion**.
4 years ago

SOLID
```
Single responsibility

```
— класс отвечает за одну функцию
— код избавляется от копипасты (дубликатов)
— при дебаге проще исправлять ошибки, т.к. нет повторяющихся кусков кода

Пускай у вас есть какой-то класс Date, который отдает информацию о температуре и времени. Если какой-то Вася хочет получить информацию о времени, ему придется продублировать оба метода этого класса. То же касается и какого-то Андрея, который захочет получить информацию о температуре.
————— ————— —————
|DateTemp| копия |Date | копия |DateTime |—————— <——— ————— ———> ——————
|- temp() | |- time() | |- time() |
—————— |- temp() | ——————
—————
Правильнее будет создать 2 отдельных класса, которые будут возвращать температуру и время соответственно.

```
Opened-closed

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

```
Liskov Substitution

```
— поведение наследующих классов не должно противоречить работе базовых
— подкласс не должен требовать от вызывающего кода больше, чем базовый класс, и не должен предоставлять вызывающему коду меньше, чем базовый
— там где используется Child класс, должен подходить и его Parent

К примеру, у вас есть классы Child и Parent. Неправильной будет следующая реализация:
— используя Parent можно вызвать любой метод, а используя Child нужны дополнительные действия для вызова того же метода. Например, вызов какого-нибудь init()
— если метод getMessages() класса Parent возвращает коллекцию из базы данных, Child не должен возвращать пустой массив или null

Допустим, у вас есть классы Rectangle и Square, который наследуется от первого. В случае, если написать тест на Rectangle, который будет считать площадь функцией ab, возникнет ошибка, т.к. в дочерном классе Square не реализована сторона b.
——— ————
|Rect | extends | Square* |
——— <———— ————
|- a() | |- a() |
|- b() | ————
———

Interface Segregation— много интерфейсов предназначенных для клиента лучше, чем один общий
— клиенты не должны зависеть от методов интерфейса, которые они не используют
интерфейс является принадлежностью не сервера, и клиента— при изменении одного метода интерфейса будут перекомпилироваться остальные классы, которые имплементятся от этого интерфейса, но которые этот метод даже не используют

4 years, 8 months ago

#IT_guideЧитатище 10 трюків з Eloquent

Telegraph

ще 10 трюків

11. Сортування по геттеру Взяти до прикладу стандартний і часто використовуваний геттер function getFullNameAttribute() { return $this->attributes['first\_name'] . ' ' . $this->attributes['last\_name']; } Вам потрібно відсортувати записи по полю full\_name?…

We recommend to visit
Mash
Mash
3,119,580 @mash

Прислать новость, фото, видео, аудио, бересту: @in_mash_bot

Покупка рекламы: @marina_mousse

Помахаться и обсудить новости: @mash_chat

Регистрация в перечне РКН:
https://knd.gov.ru/license?id=6726d0b5db0c1931b12fc77f&registryType=bloggersPermission

Last updated 5 hours ago

Из России с любовью и улыбкой :)

From Russia with love and a smile :)

Chat - @ShutkaUm

@Shutka_U

Last updated 1 month, 2 weeks ago

Почистили канал, тут будут только реакты на ТВ шоу

Ожидаем ответа от ТВ