Source Code
197 subscribers
30 photos
3 files
80 links
Download Telegram
#web
HTTP — это протокол, позволяющий получать различные ресурсы, например HTML-документы.

Протокол HTTP лежит в основе обмена данными в Интернете. HTTP является протоколом клиент-серверного взаимодействия, что означает инициирование запросов к серверу самим получателем, обычно веб-браузером (web-browser).

Полученный итоговый документ будет (может) состоять из различных поддокументов являющихся частью итогового документа: например, из отдельно полученного текста, описания структуры документа, изображений, видео-файлов, скриптов и многого другого.

Каждый запрос (англ. request) отправляется серверу, который обрабатывает его и возвращает ответ (англ. response). Между этими запросами и ответами как правило существуют многочисленные посредники, называемые прокси, которые выполняют различные операции и работают как шлюзы или кэш, например.
Что гарантирует безопасность типов в коллекции?
Anonymous Quiz
67%
Generics
13%
Abstract classes
13%
Interfaces
8%
Collection
#python
Что лучше, import или from import?

Обратимся к первоисточникам, а именно-к PEP8. Когда импортируете класс из модуля, будет нормально сделать это так:

from myclass import MyClass
from foo.bar.yourclass import YourClass

Если это вызывает локальный конфликт Имен, то можно сделать это явно:

import myclass
import foo.bar.yourclass

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

Flask импортируется:

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
return 'Hello, World!

Pytest импортируется:

import pytest

def test_zero_division():
with pytest.raises(ZeroDivisionError):
1 / 0

При написании тестов порой надо подменить какие-то методы. Вот тут с импортами из модуля начинается цирк. К моменту, когда накладывается патч, ссылка на объект уже имеется в тех местах, где он импортирован, и патчить нужно не место, где объект объявлен, а все места, где был сделан импорт. Несложно, но немного запарно, и есть шанс что-то поломать при рефакторинге.

Этот момент – достаточно частый источник недоумения.
Что позволяет удалять элементы из коллекции?
Anonymous Quiz
12%
Enumeration
10%
Serializable
44%
Iterator
34%
метод removeObj()
#definition
Reverse Engineering (ревёрсинг, обратная разработка) — это процесс «заимствования», восстановления исходников из конечного продукта инженерной и/или научной деятельности с интуитивным конструированием внутренней механики по принципу «а какие процессы должны вызвать такое внешнее поведение этого продукта?». Ориентируясь на нюх, так сказать. Иногда приводит к написанию собственного дока. Много их, ибо ваистену

Примером RE является создание базы данных из готовых сущностей в Spring.
Что из этого синхронизировано и не допускает нулевых элементов?
Anonymous Quiz
33%
Vector
28%
CopyOnWriteArraySet
11%
CopyOnWriteArrayList
28%
ConcurrentSkipListSet
#web
HTTPS vs HTTP

HTTPS не является отдельным протоколом передачи данных, а представляет собой расширение протокола HTTP но со встроенным шифровальщиком. Добавочная буква «S» в аббревиатуре означает «Secure», то есть «безопасный».

HTTPS это закрытый протокол имеющий надстройку шифрования и использующий по умолчанию порт 433, тогда как HTTP – открытый протокол который использует порт 80

Данные передаваемые по протоколу HTTPS всегда больше по объёму чем те самые данные на HTTP поэтому их передача в обе стороны занимает чуть больше времени

HTTPS использует SSL-сертификаты для шифрования информации

Как это происходит?

Если на сайте есть SSL-сертификат, между браузером клиента и сайтом устанавливается защищённое соединение. В этом случае браузер сначала преобразует номер карты в случайный набор символов и только потом отправляет его на сервер.

Расшифровать сообщение получится только специальным ключом, который хранится на сервере.
что выведется на экран в результате выполнения программы?
Anonymous Quiz
2%
java
55%
JAVA
40%
Java
3%
jAVA
#interviewTasks
Раздобыли тестовое задание на Strong Junior Java Developer.
Если вам было бы интересно с ним ознакомиться, ждем от вас реакций.
#java
Wildcards (Generics)

Знак вопроса (?) Известен как подстановочный знак в универсальном программировании. Представляет неизвестный тип.

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

В отличие от массивов, разные экземпляры универсального типа несовместимы друг с другом даже явно. Эта несовместимость может быть смягчена подстановочным знаком, если ? используется как фактический параметр типа.
#patterns
Одиночка (англ. Singleton) — порождающий шаблон проектирования, гарантирующий, что в однопоточном приложении будет единственный экземпляр некоторого класса, и предоставляющий глобальную точку доступа к этому экземпляру.
#microsoft
Почему Microsoft перестали бороться с пиратством своего ПО?

Microsoft теряет миллиарды долларов из-за пиратства своих продуктов. Ранее CEO Microsoft принимали агрессивную политику в борьбе против пиратства. Microsoft даже проводила налеты в Мексике для арестов кортелей. О чем я точно еще напишу.

Все принятые политики по защите ПО Microsoft не обновлялись с 2010-го года. В 2013-м они запустили программу "play it safe". Сейчас, на официальном веб-сайте, вы ее не найдете. Осталась только фото-заглушка.

Почему же Microsoft перестали бороться с пиратством?
Защита SaaS стала куда сильнее, копии гораздо труднее подделывать. С развитием модели платных подписок многие продукты перешли на SaaS.
Все меньше людей ищет взломанное ПО. Это относится не только к Microsoft. Похожим образом действуют Adobe, которые позволяют пиратство своих продуктов. Именно благодаря пиратству Adobe и Microsoft стали лидерами рынка в своих сферах.

Неужели пиратство может заменить расходы на PR?
#java
Что такое поток демона в Java?

Демон-поток - это поток, который не предотвращает выход JVM, когда программа заканчивается, но поток все еще работает. Примером для потока демона является сбор мусора.

Вы можете использовать метод setDaemon(boolean) для изменения свойств демона Thread до начала потока.

Когда создается новый поток, он наследует статус демона своего родителя.
Когда все потоки, не являющиеся демонами, заканчивают работу, JVM останавливается, а все оставшиеся потоки демонов удаляются: наконец блоки не выполняются, стеки не разматываются - JVM просто выходит.

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

Интерфейс
— это ссылочный тип в Java. Он схож с классом. Это совокупность абстрактных методов. Класс реализует интерфейс, таким образом наследуя абстрактные методы интерфейса.

Чем отличается класс от интерфейса?
- Вы
не можете создать экземпляр интерфейса.
- В интерфейсе не содержатся конструкторы.
- Все методы в интерфейсе абстрактные.
- Интерфейс не может содержать поля экземпляров. Поля, которые могут появиться в интерфейсе, обязаны быть объявлены и статическими, и final.
- Интерфейс не расширяется классом, он реализуется классом.
- Интерфейс может расширить множество интерфейсов.
_____________________
Пример:
Ниже приведена иерархия классов. Класс Bird имеет метод fly(), но курица унаследовавшая метод, не должна его иметь, что делать в таком случае?

Решение: Убрать метод fly() у класса Bird, и вынести его в интерфейс "toBeAbleToFly". В нем, мы создаем тот самый метод fly(), который уже реализует тот класс, которому нужен этот метод. В нашем случае, это будет Parrot. Курице он нужен, по этому реализовывать этот метод, она не будет.

То есть, мы вынесли конкретный функционал, который нужен специфичной сущности.

// Позже будет выложен еще один пример использования интерфейсов
#backEnd
Кто этот ваш Postman?

Postman – удобный инструмент, который умеет описывать и исполнять запросы, получать информацию об их статусах, выстраивать цепочки запросов, зацикливать их, создавать сценарии. Главный плюс – код писать при этом практически не нужно.

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

Окружения содержат значения переменных, с которыми мы работаем в рамках сценариев – адреса серверов, имена папок и т.д. Фактически одно окружение – это один продукт.

Коллекция описывает, что с этими переменными делать. Это набор запросов, и в нашем случае одна коллекция – это один сценарий мониторинга. Одну коллекцию можно использовать в разных окружениях, подставляя нужные переменные. Не нужно для каждой системы писать новый сценарий авторизации – можно одним кликом вызвать уже готовую коллекцию.

Надо тестить API - Postman